diff --git a/changes/unreleased/Added-20260719-001541.yaml b/changes/unreleased/Added-20260719-001541.yaml new file mode 100644 index 0000000..5aed721 --- /dev/null +++ b/changes/unreleased/Added-20260719-001541.yaml @@ -0,0 +1,5 @@ +kind: Added +body: 'Add a generic Smithy-driven CRUD fallback engine (internal/shared/crud) that auto-serves ~2,200 standard CRUD-shaped operations across all 46 JSON-protocol services with plausible, store-backed responses; hand-implemented operations always take precedence and unclassifiable operations still return an honest error. Documented in docs/crud-engine.md' +time: 2026-07-19T00:15:41.279904+09:00 +custom: + Issue: "98" diff --git a/cmd/codegen/main.go b/cmd/codegen/main.go index e39a98e..2c560f6 100644 --- a/cmd/codegen/main.go +++ b/cmd/codegen/main.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "path/filepath" + "sort" "strings" "github.com/skyoo2003/devcloud/internal/codegen" @@ -35,6 +36,8 @@ func main() { gen := codegen.NewGenerator(*templateDir) + var crudServices []codegen.CRUDServiceData + for _, entry := range entries { if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".json") { continue @@ -61,6 +64,32 @@ func main() { fmt.Fprintf(os.Stderr, "Error generating %s: %v\n", model.ServiceID, err) os.Exit(1) } + + if data, ok := codegen.ServiceCRUDData(model); ok { + crudServices = append(crudServices, data) + } + } + + // Write the aggregate CRUD registry only when generating the full fleet + // (a filtered run would otherwise clobber it with a partial registry). + if len(allowedServices) == 0 { + sort.Slice(crudServices, func(i, j int) bool { + return crudServices[i].ServiceID < crudServices[j].ServiceID + }) + content, err := gen.GenerateCRUDRegistry(crudServices) + if err != nil { + fmt.Fprintf(os.Stderr, "Error generating CRUD registry: %v\n", err) + os.Exit(1) + } + regDir := filepath.Join(*outputDir, "crudregistry") + if err := os.MkdirAll(regDir, 0755); err != nil { + fmt.Fprintf(os.Stderr, "Error creating crudregistry dir: %v\n", err) + os.Exit(1) + } + if err := os.WriteFile(filepath.Join(regDir, "registry_gen.go"), []byte(content), 0644); err != nil { + fmt.Fprintf(os.Stderr, "Error writing CRUD registry: %v\n", err) + os.Exit(1) + } } fmt.Println("Code generation complete.") diff --git a/cmd/devcloud/crudregistry_import.go b/cmd/devcloud/crudregistry_import.go new file mode 100644 index 0000000..c1fd902 --- /dev/null +++ b/cmd/devcloud/crudregistry_import.go @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: Apache-2.0 + +package main + +// Blank import runs the generated CRUD registry's init(), registering every +// service's CRUD-shaped operations with the generic fallback engine +// (internal/shared/crud). Kept separate from the generated imports.go. +import _ "github.com/skyoo2003/devcloud/internal/generated/crudregistry" diff --git a/docs/crud-engine.md b/docs/crud-engine.md new file mode 100644 index 0000000..769a09b --- /dev/null +++ b/docs/crud-engine.md @@ -0,0 +1,63 @@ +# Generic CRUD Fallback Engine + +DevCloud auto-serves standard CRUD-shaped operations that a service's hand-written +provider has not implemented, using a generic engine driven by the Smithy models. +This lets the long tail of ~2,200 CRUD-shaped operations respond to SDK calls +without hand-coding each one. + +**Fidelity is deliberately "plausible, not faithful."** Responses are store-backed +and echo the caller's input plus synthesized ids/ARNs, so SDKs round-trip +(create → get → list → delete). There is **no** validation, cross-resource +integrity, pagination correctness, or business logic. Treat engine-served +operations as scaffolding for local wiring, not as behavioural parity. + +## How it works + +- **Engine** — [`internal/shared/crud`](../internal/shared/crud/crud.go): an + in-memory resource store plus verb dispatch (Create/Get/List/Delete/Update/…). +- **Classification** — codegen inspects each operation's name and output shape + (`internal/codegen/gen_crud_meta.go`) and emits one aggregate registry, + `internal/generated/crudregistry/registry_gen.go`, whose `init()` registers + every classifiable operation. Regenerated by `make codegen`. +- **Integration** — a provider opts in by returning `plugin.ErrUnhandledOp` from + its dispatch `default:` case. The gateway + ([`internal/gateway/router.go`](../internal/gateway/router.go)) then calls the + engine; if the engine cannot classify the operation, the standard + `InvalidAction` error is returned instead. **Never a fabricated success for an + unclassifiable op.** + +## Fidelity tiers + +| Tier | Meaning | +|------|---------| +| **hand-verified** | Implemented by the service's provider (explicit dispatch `case`). Highest fidelity. | +| **auto-crud** | Served by the engine with plausible, store-backed responses. Reaches the engine only for engine-wired services (below). | +| **unimplemented** | Not implemented and not CRUD-classifiable — returns an honest `InvalidAction` error. | + +Hand-written operations always win: the engine is only reached when a request +falls through to the provider's `default:` case, so it never shadows a real +implementation. + +## Scope + +- **JSON protocols only** (`json-1.0` / `json-1.1`). These carry the operation + name in `X-Amz-Target`, which the engine needs. Query/REST-XML services (EC2, + S3, Route53, IAM, RDS, CloudFormation) are hand-written and out of scope. +- **Engine-registered services**: 46 (all JSON-protocol services with + classifiable operations), covering ~2,200 operations. +- **Engine-wired services**: all 46 registered JSON services are wired — their + dispatch `default:` returns `plugin.ErrUnhandledOp`, so unimplemented CRUD ops + are engine-served. This **includes core services** (DynamoDB, SQS, KMS, ECS, + …): they hand-implement their common operations, and only their few remaining + unimplemented CRUD ops fall through to the engine. Non-CRUD / unclassifiable + ops still return an honest `InvalidAction` error. + +## Known limits + +- `List*` responses return stored objects; when the real AWS output member is a + list of *names* (strings) rather than structures, an SDK may not populate it. +- No required-parameter validation, so calls succeed with minimal input. +- The store is in-memory and per-process (not persisted across restarts). + +To promote an operation from `auto-crud` to `hand-verified`, implement it as an +explicit `case` in the service provider following existing patterns. diff --git a/docs/roadmap.md b/docs/roadmap.md index cdce2b8..faa885d 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -26,6 +26,7 @@ We pursue this vision through a **phased rollout** to manage scope, architectura - [x] Unimplemented operations return a consistent AWS error (`InvalidAction`, HTTP 400) instead of a false `200` success; dead scaffold code removed - [x] boto3 compatibility coverage added for previously-untested services (CodeConnections, DMS, Verified Permissions) - [x] Stable `ServicePlugin` API finalized and documented ([plugin-api.md](plugin-api.md)), enforced by a conformance test over every registered service +- [x] Generic CRUD fallback engine ([crud-engine.md](crud-engine.md)) auto-serves ~2,200 CRUD-shaped operations across all 46 JSON-protocol services with plausible, store-backed responses; every registered JSON service is wired. **Follow-up**: promote high-value auto-crud ops to hand-verified fidelity. - [ ] v1.0 release (pending maintainer tag) ### Phase 2 — Architectural Preparation (v1.x) diff --git a/docs/services-matrix.md b/docs/services-matrix.md index cc88e60..4be3ed9 100644 --- a/docs/services-matrix.md +++ b/docs/services-matrix.md @@ -72,6 +72,17 @@ KMS, Secrets Manager, EventBridge, CloudFormation) have the deepest coverage. Services implement their common operations; less-common operations return a clean AWS error rather than a false success, so an SDK always gets a truthful response. +## Operation coverage & the CRUD fallback engine + +Hand-written providers implement each service's common operations. For the long +tail of standard CRUD-shaped operations (~2,200 across 46 JSON-protocol +services), a generic engine can serve plausible, store-backed responses so SDK +calls round-trip. This coverage is **plausible, not faithful** — no validation or +business logic — and is opt-in per service. See +[crud-engine.md](crud-engine.md) for the fidelity tiers, wired services, and +limits. Operations that are neither hand-written nor CRUD-classifiable return an +honest `InvalidAction` error, never a fabricated success. + ## Supported protocols - **JSON 1.0** (`application/x-amz-json-1.0`): DynamoDB, DynamoDB Streams, Kinesis diff --git a/internal/codegen/gen_crud_meta.go b/internal/codegen/gen_crud_meta.go new file mode 100644 index 0000000..775e406 --- /dev/null +++ b/internal/codegen/gen_crud_meta.go @@ -0,0 +1,155 @@ +// SPDX-License-Identifier: Apache-2.0 + +package codegen + +import ( + "fmt" + "go/format" + "strings" +) + +// CRUDRegistryData drives crud_registry.go.tmpl: one file registering every +// service's CRUD-shaped operations with the fallback engine. +type CRUDRegistryData struct { + Services []CRUDServiceData +} + +// CRUDServiceData is one service's classified operations. +type CRUDServiceData struct { + ServiceID string + Ops []crudOpData +} + +type crudOpData struct { + Op string + Verb string + Resource string + ListKey string + ItemKey string +} + +// verbPrefixes maps operation-name prefixes to canonical CRUD verbs, longest and +// most specific first. Only high-confidence CRUD shapes are classified; anything +// else is left unclassified so the engine returns an honest "unknown action". +var verbPrefixes = []struct{ prefix, verb string }{ + {"Untag", "Untag"}, + {"Tag", "Tag"}, + {"Describe", "Get"}, + {"BatchGet", "List"}, + {"Get", "Get"}, + {"List", "List"}, + {"Create", "Create"}, + {"Register", "Create"}, + {"Deregister", "Delete"}, + {"Delete", "Delete"}, + {"Update", "Update"}, + {"Modify", "Update"}, + {"Put", "Update"}, +} + +func canonicalVerb(op string) (verb, resource string) { + for _, vp := range verbPrefixes { + if strings.HasPrefix(op, vp.prefix) && len(op) > len(vp.prefix) { + return vp.verb, singularize(strings.TrimPrefix(op, vp.prefix)) + } + } + return "", "" +} + +// singularize converts a resource noun to a stable singular key so that, e.g., +// CreateDatabase and ListDatabases share the same store bucket. +func singularize(s string) string { + switch { + case strings.HasSuffix(s, "ies"): + return s[:len(s)-3] + "y" + case strings.HasSuffix(s, "sses"), strings.HasSuffix(s, "xes"), strings.HasSuffix(s, "zes"): + return s[:len(s)-2] + case strings.HasSuffix(s, "ss"): + return s + case strings.HasSuffix(s, "s"): + return s[:len(s)-1] + default: + return s + } +} + +// outputKeys finds the output member holding a collection (list key) and the one +// wrapping a single resource structure (item key). +func outputKeys(model *SmithyModel, op Operation) (listKey, itemKey string) { + out := model.Shapes[op.OutputName] + if out == nil { + return "", "" + } + for _, mem := range out.Members { + target := model.Shapes[mem.TargetName] + if target == nil { + continue + } + switch target.Type { + case ShapeList: + if listKey == "" { + listKey = mem.Name + } + case ShapeStructure: + if itemKey == "" { + itemKey = mem.Name + } + } + } + return listKey, itemKey +} + +// classifyOps returns the CRUD metadata for every classifiable operation, in the +// model's (already sorted) order for reproducible output. +func classifyOps(model *SmithyModel) []crudOpData { + var ops []crudOpData + for _, op := range model.Operations { + verb, resource := canonicalVerb(op.Name) + if verb == "" || resource == "" { + continue + } + listKey, itemKey := outputKeys(model, op) + ops = append(ops, crudOpData{ + Op: op.Name, + Verb: verb, + Resource: resource, + ListKey: listKey, + ItemKey: itemKey, + }) + } + return ops +} + +// isJSONProtocol reports whether the engine can serve a service's protocol. +// Only X-Amz-Target JSON protocols carry an operation name at the router. +func isJSONProtocol(protocol string) bool { + return strings.HasPrefix(protocol, "json") +} + +// ServiceCRUDData classifies a JSON-protocol model's CRUD operations. It returns +// (data, false) when the service is not engine-servable or has no CRUD ops. +func ServiceCRUDData(model *SmithyModel) (CRUDServiceData, bool) { + if !isJSONProtocol(model.Protocol) { + return CRUDServiceData{}, false + } + ops := classifyOps(model) + if len(ops) == 0 { + return CRUDServiceData{}, false + } + return CRUDServiceData{ServiceID: model.ServiceID, Ops: ops}, true +} + +// GenerateCRUDRegistry renders the single aggregate registry file. Services are +// registered from one init() so registration does not depend on any individual +// generated package being imported. +func (g *Generator) GenerateCRUDRegistry(services []CRUDServiceData) (string, error) { + rendered, err := g.renderTemplate("crud_registry.go.tmpl", CRUDRegistryData{Services: services}) + if err != nil { + return "", err + } + formatted, err := format.Source([]byte(rendered)) + if err != nil { + return "", fmt.Errorf("gofmt crud_registry.go: %w", err) + } + return string(formatted), nil +} diff --git a/internal/codegen/templates/crud_registry.go.tmpl b/internal/codegen/templates/crud_registry.go.tmpl new file mode 100644 index 0000000..4f96ae6 --- /dev/null +++ b/internal/codegen/templates/crud_registry.go.tmpl @@ -0,0 +1,19 @@ +// Code generated by devcloud codegen. DO NOT EDIT. +// SPDX-License-Identifier: Apache-2.0 + +// Package crudregistry registers every service's CRUD-shaped operations with the +// generic fallback engine. It is blank-imported by the server so registration +// runs regardless of which service packages are linked. See internal/shared/crud. +package crudregistry + +import "github.com/skyoo2003/devcloud/internal/shared/crud" + +func init() { +{{- range .Services }} + crud.Register("{{ .ServiceID }}", map[string]crud.OpMeta{ +{{- range .Ops }} + "{{ .Op }}": {Verb: "{{ .Verb }}", Resource: "{{ .Resource }}", OutputListKey: "{{ .ListKey }}", OutputItemKey: "{{ .ItemKey }}"}, +{{- end }} + }) +{{- end }} +} diff --git a/internal/gateway/router.go b/internal/gateway/router.go index 4175882..a50e941 100644 --- a/internal/gateway/router.go +++ b/internal/gateway/router.go @@ -3,13 +3,17 @@ package gateway import ( + "bytes" "encoding/json" "encoding/xml" + "errors" + "io" "mime" "net/http" "strings" "github.com/skyoo2003/devcloud/internal/plugin" + "github.com/skyoo2003/devcloud/internal/shared/crud" ) // ServiceRouter dispatches incoming HTTP requests to the appropriate @@ -36,7 +40,33 @@ func (sr *ServiceRouter) ServeHTTP(w http.ResponseWriter, r *http.Request) { op := extractOperationName(r, protocol) + // Buffer the body for JSON protocols so the CRUD fallback engine can re-read + // it if the provider does not handle the operation. Cheap for JSON payloads; + // skipped for REST-XML (S3) where bodies may be large binary uploads. + var body []byte + if crud.JSONProtocol(protocol) { + var rerr error + if body, rerr = io.ReadAll(r.Body); rerr != nil { + writeAWSError(w, protocol, http.StatusBadRequest, "SerializationException", "failed to read request body") + return + } + r.Body = io.NopCloser(bytes.NewReader(body)) + } + resp, err := p.HandleRequest(r.Context(), op, r) + + // A provider that returns ErrUnhandledOp is opting into the generic CRUD + // fallback for operations it does not implement. If the engine cannot + // classify the operation either, emit the standard "unknown action" error. + if errors.Is(err, plugin.ErrUnhandledOp) { + res, cerr := crud.Handle(serviceID, op, protocol, body) + if cerr != nil { + writeAWSError(w, protocol, http.StatusBadRequest, "InvalidAction", "unknown action: "+op) + return + } + resp, err = &plugin.Response{StatusCode: res.Status, Body: res.Body, ContentType: res.ContentType}, nil + } + if err != nil { writeAWSError(w, protocol, http.StatusInternalServerError, "InternalError", err.Error()) return diff --git a/internal/generated/crudregistry/registry_gen.go b/internal/generated/crudregistry/registry_gen.go new file mode 100644 index 0000000..e3e0ab9 --- /dev/null +++ b/internal/generated/crudregistry/registry_gen.go @@ -0,0 +1,2324 @@ +// Code generated by devcloud codegen. DO NOT EDIT. +// SPDX-License-Identifier: Apache-2.0 + +// Package crudregistry registers every service's CRUD-shaped operations with the +// generic fallback engine. It is blank-imported by the server so registration +// runs regardless of which service packages are linked. See internal/shared/crud. +package crudregistry + +import "github.com/skyoo2003/devcloud/internal/shared/crud" + +func init() { + crud.Register("acm", map[string]crud.OpMeta{ + "DeleteCertificate": {Verb: "Delete", Resource: "Certificate", OutputListKey: "", OutputItemKey: ""}, + "DescribeCertificate": {Verb: "Get", Resource: "Certificate", OutputListKey: "", OutputItemKey: "Certificate"}, + "GetAccountConfiguration": {Verb: "Get", Resource: "AccountConfiguration", OutputListKey: "", OutputItemKey: "ExpiryEvents"}, + "GetCertificate": {Verb: "Get", Resource: "Certificate", OutputListKey: "", OutputItemKey: ""}, + "ListCertificates": {Verb: "List", Resource: "Certificate", OutputListKey: "CertificateSummaryList", OutputItemKey: ""}, + "ListTagsForCertificate": {Verb: "List", Resource: "TagsForCertificate", OutputListKey: "Tags", OutputItemKey: ""}, + "PutAccountConfiguration": {Verb: "Update", Resource: "AccountConfiguration", OutputListKey: "", OutputItemKey: ""}, + "UpdateCertificateOptions": {Verb: "Update", Resource: "CertificateOption", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("acmpca", map[string]crud.OpMeta{ + "CreateCertificateAuthority": {Verb: "Create", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: ""}, + "CreateCertificateAuthorityAuditReport": {Verb: "Create", Resource: "CertificateAuthorityAuditReport", OutputListKey: "", OutputItemKey: ""}, + "CreatePermission": {Verb: "Create", Resource: "Permission", OutputListKey: "", OutputItemKey: ""}, + "DeleteCertificateAuthority": {Verb: "Delete", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: ""}, + "DeletePermission": {Verb: "Delete", Resource: "Permission", OutputListKey: "", OutputItemKey: ""}, + "DeletePolicy": {Verb: "Delete", Resource: "Policy", OutputListKey: "", OutputItemKey: ""}, + "DescribeCertificateAuthority": {Verb: "Get", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: "CertificateAuthority"}, + "DescribeCertificateAuthorityAuditReport": {Verb: "Get", Resource: "CertificateAuthorityAuditReport", OutputListKey: "", OutputItemKey: ""}, + "GetCertificate": {Verb: "Get", Resource: "Certificate", OutputListKey: "", OutputItemKey: ""}, + "GetCertificateAuthorityCertificate": {Verb: "Get", Resource: "CertificateAuthorityCertificate", OutputListKey: "", OutputItemKey: ""}, + "GetCertificateAuthorityCsr": {Verb: "Get", Resource: "CertificateAuthorityCsr", OutputListKey: "", OutputItemKey: ""}, + "GetPolicy": {Verb: "Get", Resource: "Policy", OutputListKey: "", OutputItemKey: ""}, + "ListCertificateAuthorities": {Verb: "List", Resource: "CertificateAuthority", OutputListKey: "CertificateAuthorities", OutputItemKey: ""}, + "ListPermissions": {Verb: "List", Resource: "Permission", OutputListKey: "Permissions", OutputItemKey: ""}, + "ListTags": {Verb: "List", Resource: "Tag", OutputListKey: "Tags", OutputItemKey: ""}, + "PutPolicy": {Verb: "Update", Resource: "Policy", OutputListKey: "", OutputItemKey: ""}, + "TagCertificateAuthority": {Verb: "Tag", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: ""}, + "UntagCertificateAuthority": {Verb: "Untag", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: ""}, + "UpdateCertificateAuthority": {Verb: "Update", Resource: "CertificateAuthority", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("applicationautoscaling", map[string]crud.OpMeta{ + "DeleteScalingPolicy": {Verb: "Delete", Resource: "ScalingPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteScheduledAction": {Verb: "Delete", Resource: "ScheduledAction", OutputListKey: "", OutputItemKey: ""}, + "DeregisterScalableTarget": {Verb: "Delete", Resource: "ScalableTarget", OutputListKey: "", OutputItemKey: ""}, + "DescribeScalableTargets": {Verb: "Get", Resource: "ScalableTarget", OutputListKey: "ScalableTargets", OutputItemKey: ""}, + "DescribeScalingActivities": {Verb: "Get", Resource: "ScalingActivity", OutputListKey: "ScalingActivities", OutputItemKey: ""}, + "DescribeScalingPolicies": {Verb: "Get", Resource: "ScalingPolicy", OutputListKey: "ScalingPolicies", OutputItemKey: ""}, + "DescribeScheduledActions": {Verb: "Get", Resource: "ScheduledAction", OutputListKey: "ScheduledActions", OutputItemKey: ""}, + "GetPredictiveScalingForecast": {Verb: "Get", Resource: "PredictiveScalingForecast", OutputListKey: "LoadForecast", OutputItemKey: "CapacityForecast"}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "PutScalingPolicy": {Verb: "Update", Resource: "ScalingPolicy", OutputListKey: "Alarms", OutputItemKey: ""}, + "PutScheduledAction": {Verb: "Update", Resource: "ScheduledAction", OutputListKey: "", OutputItemKey: ""}, + "RegisterScalableTarget": {Verb: "Create", Resource: "ScalableTarget", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("athena", map[string]crud.OpMeta{ + "BatchGetNamedQuery": {Verb: "List", Resource: "NamedQuery", OutputListKey: "NamedQueries", OutputItemKey: ""}, + "BatchGetPreparedStatement": {Verb: "List", Resource: "PreparedStatement", OutputListKey: "PreparedStatements", OutputItemKey: ""}, + "BatchGetQueryExecution": {Verb: "List", Resource: "QueryExecution", OutputListKey: "QueryExecutions", OutputItemKey: ""}, + "CreateCapacityReservation": {Verb: "Create", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: ""}, + "CreateDataCatalog": {Verb: "Create", Resource: "DataCatalog", OutputListKey: "", OutputItemKey: "DataCatalog"}, + "CreateNamedQuery": {Verb: "Create", Resource: "NamedQuery", OutputListKey: "", OutputItemKey: ""}, + "CreateNotebook": {Verb: "Create", Resource: "Notebook", OutputListKey: "", OutputItemKey: ""}, + "CreatePreparedStatement": {Verb: "Create", Resource: "PreparedStatement", OutputListKey: "", OutputItemKey: ""}, + "CreatePresignedNotebookUrl": {Verb: "Create", Resource: "PresignedNotebookUrl", OutputListKey: "", OutputItemKey: ""}, + "CreateWorkGroup": {Verb: "Create", Resource: "WorkGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteCapacityReservation": {Verb: "Delete", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: ""}, + "DeleteDataCatalog": {Verb: "Delete", Resource: "DataCatalog", OutputListKey: "", OutputItemKey: "DataCatalog"}, + "DeleteNamedQuery": {Verb: "Delete", Resource: "NamedQuery", OutputListKey: "", OutputItemKey: ""}, + "DeleteNotebook": {Verb: "Delete", Resource: "Notebook", OutputListKey: "", OutputItemKey: ""}, + "DeletePreparedStatement": {Verb: "Delete", Resource: "PreparedStatement", OutputListKey: "", OutputItemKey: ""}, + "DeleteWorkGroup": {Verb: "Delete", Resource: "WorkGroup", OutputListKey: "", OutputItemKey: ""}, + "GetCalculationExecution": {Verb: "Get", Resource: "CalculationExecution", OutputListKey: "", OutputItemKey: "Result"}, + "GetCalculationExecutionCode": {Verb: "Get", Resource: "CalculationExecutionCode", OutputListKey: "", OutputItemKey: ""}, + "GetCalculationExecutionStatus": {Verb: "Get", Resource: "CalculationExecutionStatu", OutputListKey: "", OutputItemKey: "Statistics"}, + "GetCapacityAssignmentConfiguration": {Verb: "Get", Resource: "CapacityAssignmentConfiguration", OutputListKey: "", OutputItemKey: "CapacityAssignmentConfiguration"}, + "GetCapacityReservation": {Verb: "Get", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: "CapacityReservation"}, + "GetDataCatalog": {Verb: "Get", Resource: "DataCatalog", OutputListKey: "", OutputItemKey: "DataCatalog"}, + "GetDatabase": {Verb: "Get", Resource: "Database", OutputListKey: "", OutputItemKey: "Database"}, + "GetNamedQuery": {Verb: "Get", Resource: "NamedQuery", OutputListKey: "", OutputItemKey: "NamedQuery"}, + "GetNotebookMetadata": {Verb: "Get", Resource: "NotebookMetadata", OutputListKey: "", OutputItemKey: "NotebookMetadata"}, + "GetPreparedStatement": {Verb: "Get", Resource: "PreparedStatement", OutputListKey: "", OutputItemKey: "PreparedStatement"}, + "GetQueryExecution": {Verb: "Get", Resource: "QueryExecution", OutputListKey: "", OutputItemKey: "QueryExecution"}, + "GetQueryResults": {Verb: "Get", Resource: "QueryResult", OutputListKey: "", OutputItemKey: "ResultSet"}, + "GetQueryRuntimeStatistics": {Verb: "Get", Resource: "QueryRuntimeStatistic", OutputListKey: "", OutputItemKey: "QueryRuntimeStatistics"}, + "GetResourceDashboard": {Verb: "Get", Resource: "ResourceDashboard", OutputListKey: "", OutputItemKey: ""}, + "GetSession": {Verb: "Get", Resource: "Session", OutputListKey: "", OutputItemKey: "EngineConfiguration"}, + "GetSessionEndpoint": {Verb: "Get", Resource: "SessionEndpoint", OutputListKey: "", OutputItemKey: ""}, + "GetSessionStatus": {Verb: "Get", Resource: "SessionStatu", OutputListKey: "", OutputItemKey: "Status"}, + "GetTableMetadata": {Verb: "Get", Resource: "TableMetadata", OutputListKey: "", OutputItemKey: "TableMetadata"}, + "GetWorkGroup": {Verb: "Get", Resource: "WorkGroup", OutputListKey: "", OutputItemKey: "WorkGroup"}, + "ListApplicationDPUSizes": {Verb: "List", Resource: "ApplicationDPUSiz", OutputListKey: "ApplicationDPUSizes", OutputItemKey: ""}, + "ListCalculationExecutions": {Verb: "List", Resource: "CalculationExecution", OutputListKey: "Calculations", OutputItemKey: ""}, + "ListCapacityReservations": {Verb: "List", Resource: "CapacityReservation", OutputListKey: "CapacityReservations", OutputItemKey: ""}, + "ListDataCatalogs": {Verb: "List", Resource: "DataCatalog", OutputListKey: "DataCatalogsSummary", OutputItemKey: ""}, + "ListDatabases": {Verb: "List", Resource: "Database", OutputListKey: "DatabaseList", OutputItemKey: ""}, + "ListEngineVersions": {Verb: "List", Resource: "EngineVersion", OutputListKey: "EngineVersions", OutputItemKey: ""}, + "ListExecutors": {Verb: "List", Resource: "Executor", OutputListKey: "ExecutorsSummary", OutputItemKey: ""}, + "ListNamedQueries": {Verb: "List", Resource: "NamedQuery", OutputListKey: "NamedQueryIds", OutputItemKey: ""}, + "ListNotebookMetadata": {Verb: "List", Resource: "NotebookMetadata", OutputListKey: "NotebookMetadataList", OutputItemKey: ""}, + "ListNotebookSessions": {Verb: "List", Resource: "NotebookSession", OutputListKey: "NotebookSessionsList", OutputItemKey: ""}, + "ListPreparedStatements": {Verb: "List", Resource: "PreparedStatement", OutputListKey: "PreparedStatements", OutputItemKey: ""}, + "ListQueryExecutions": {Verb: "List", Resource: "QueryExecution", OutputListKey: "QueryExecutionIds", OutputItemKey: ""}, + "ListSessions": {Verb: "List", Resource: "Session", OutputListKey: "Sessions", OutputItemKey: ""}, + "ListTableMetadata": {Verb: "List", Resource: "TableMetadata", OutputListKey: "TableMetadataList", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListWorkGroups": {Verb: "List", Resource: "WorkGroup", OutputListKey: "WorkGroups", OutputItemKey: ""}, + "PutCapacityAssignmentConfiguration": {Verb: "Update", Resource: "CapacityAssignmentConfiguration", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateCapacityReservation": {Verb: "Update", Resource: "CapacityReservation", OutputListKey: "", OutputItemKey: ""}, + "UpdateDataCatalog": {Verb: "Update", Resource: "DataCatalog", OutputListKey: "", OutputItemKey: ""}, + "UpdateNamedQuery": {Verb: "Update", Resource: "NamedQuery", OutputListKey: "", OutputItemKey: ""}, + "UpdateNotebook": {Verb: "Update", Resource: "Notebook", OutputListKey: "", OutputItemKey: ""}, + "UpdateNotebookMetadata": {Verb: "Update", Resource: "NotebookMetadata", OutputListKey: "", OutputItemKey: ""}, + "UpdatePreparedStatement": {Verb: "Update", Resource: "PreparedStatement", OutputListKey: "", OutputItemKey: ""}, + "UpdateWorkGroup": {Verb: "Update", Resource: "WorkGroup", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("cloudtrail", map[string]crud.OpMeta{ + "CreateChannel": {Verb: "Create", Resource: "Channel", OutputListKey: "Destinations", OutputItemKey: ""}, + "CreateDashboard": {Verb: "Create", Resource: "Dashboard", OutputListKey: "TagsList", OutputItemKey: "RefreshSchedule"}, + "CreateEventDataStore": {Verb: "Create", Resource: "EventDataStore", OutputListKey: "AdvancedEventSelectors", OutputItemKey: ""}, + "CreateTrail": {Verb: "Create", Resource: "Trail", OutputListKey: "", OutputItemKey: ""}, + "DeleteChannel": {Verb: "Delete", Resource: "Channel", OutputListKey: "", OutputItemKey: ""}, + "DeleteDashboard": {Verb: "Delete", Resource: "Dashboard", OutputListKey: "", OutputItemKey: ""}, + "DeleteEventDataStore": {Verb: "Delete", Resource: "EventDataStore", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrail": {Verb: "Delete", Resource: "Trail", OutputListKey: "", OutputItemKey: ""}, + "DeregisterOrganizationDelegatedAdmin": {Verb: "Delete", Resource: "OrganizationDelegatedAdmin", OutputListKey: "", OutputItemKey: ""}, + "DescribeQuery": {Verb: "Get", Resource: "Query", OutputListKey: "", OutputItemKey: "QueryStatistics"}, + "DescribeTrails": {Verb: "Get", Resource: "Trail", OutputListKey: "trailList", OutputItemKey: ""}, + "GetChannel": {Verb: "Get", Resource: "Channel", OutputListKey: "Destinations", OutputItemKey: "IngestionStatus"}, + "GetDashboard": {Verb: "Get", Resource: "Dashboard", OutputListKey: "Widgets", OutputItemKey: "RefreshSchedule"}, + "GetEventConfiguration": {Verb: "Get", Resource: "EventConfiguration", OutputListKey: "AggregationConfigurations", OutputItemKey: ""}, + "GetEventDataStore": {Verb: "Get", Resource: "EventDataStore", OutputListKey: "AdvancedEventSelectors", OutputItemKey: ""}, + "GetEventSelectors": {Verb: "Get", Resource: "EventSelector", OutputListKey: "AdvancedEventSelectors", OutputItemKey: ""}, + "GetImport": {Verb: "Get", Resource: "Import", OutputListKey: "Destinations", OutputItemKey: "ImportSource"}, + "GetInsightSelectors": {Verb: "Get", Resource: "InsightSelector", OutputListKey: "InsightSelectors", OutputItemKey: ""}, + "GetQueryResults": {Verb: "Get", Resource: "QueryResult", OutputListKey: "QueryResultRows", OutputItemKey: "QueryStatistics"}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetTrail": {Verb: "Get", Resource: "Trail", OutputListKey: "", OutputItemKey: "Trail"}, + "GetTrailStatus": {Verb: "Get", Resource: "TrailStatu", OutputListKey: "", OutputItemKey: ""}, + "ListChannels": {Verb: "List", Resource: "Channel", OutputListKey: "Channels", OutputItemKey: ""}, + "ListDashboards": {Verb: "List", Resource: "Dashboard", OutputListKey: "Dashboards", OutputItemKey: ""}, + "ListEventDataStores": {Verb: "List", Resource: "EventDataStore", OutputListKey: "EventDataStores", OutputItemKey: ""}, + "ListImportFailures": {Verb: "List", Resource: "ImportFailure", OutputListKey: "Failures", OutputItemKey: ""}, + "ListImports": {Verb: "List", Resource: "Import", OutputListKey: "Imports", OutputItemKey: ""}, + "ListInsightsData": {Verb: "List", Resource: "InsightsData", OutputListKey: "Events", OutputItemKey: ""}, + "ListInsightsMetricData": {Verb: "List", Resource: "InsightsMetricData", OutputListKey: "Timestamps", OutputItemKey: ""}, + "ListPublicKeys": {Verb: "List", Resource: "PublicKey", OutputListKey: "PublicKeyList", OutputItemKey: ""}, + "ListQueries": {Verb: "List", Resource: "Query", OutputListKey: "Queries", OutputItemKey: ""}, + "ListTags": {Verb: "List", Resource: "Tag", OutputListKey: "ResourceTagList", OutputItemKey: ""}, + "ListTrails": {Verb: "List", Resource: "Trail", OutputListKey: "Trails", OutputItemKey: ""}, + "PutEventConfiguration": {Verb: "Update", Resource: "EventConfiguration", OutputListKey: "AggregationConfigurations", OutputItemKey: ""}, + "PutEventSelectors": {Verb: "Update", Resource: "EventSelector", OutputListKey: "AdvancedEventSelectors", OutputItemKey: ""}, + "PutInsightSelectors": {Verb: "Update", Resource: "InsightSelector", OutputListKey: "InsightSelectors", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "RegisterOrganizationDelegatedAdmin": {Verb: "Create", Resource: "OrganizationDelegatedAdmin", OutputListKey: "", OutputItemKey: ""}, + "UpdateChannel": {Verb: "Update", Resource: "Channel", OutputListKey: "Destinations", OutputItemKey: ""}, + "UpdateDashboard": {Verb: "Update", Resource: "Dashboard", OutputListKey: "Widgets", OutputItemKey: "RefreshSchedule"}, + "UpdateEventDataStore": {Verb: "Update", Resource: "EventDataStore", OutputListKey: "AdvancedEventSelectors", OutputItemKey: ""}, + "UpdateTrail": {Verb: "Update", Resource: "Trail", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("cloudwatch", map[string]crud.OpMeta{ + "DeleteAlarmMuteRule": {Verb: "Delete", Resource: "AlarmMuteRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteAlarms": {Verb: "Delete", Resource: "Alarm", OutputListKey: "", OutputItemKey: ""}, + "DeleteAnomalyDetector": {Verb: "Delete", Resource: "AnomalyDetector", OutputListKey: "", OutputItemKey: ""}, + "DeleteDashboards": {Verb: "Delete", Resource: "Dashboard", OutputListKey: "", OutputItemKey: ""}, + "DeleteInsightRules": {Verb: "Delete", Resource: "InsightRule", OutputListKey: "Failures", OutputItemKey: ""}, + "DeleteMetricStream": {Verb: "Delete", Resource: "MetricStream", OutputListKey: "", OutputItemKey: ""}, + "DescribeAlarmContributors": {Verb: "Get", Resource: "AlarmContributor", OutputListKey: "AlarmContributors", OutputItemKey: ""}, + "DescribeAlarmHistory": {Verb: "Get", Resource: "AlarmHistory", OutputListKey: "AlarmHistoryItems", OutputItemKey: ""}, + "DescribeAlarms": {Verb: "Get", Resource: "Alarm", OutputListKey: "CompositeAlarms", OutputItemKey: ""}, + "DescribeAlarmsForMetric": {Verb: "Get", Resource: "AlarmsForMetric", OutputListKey: "MetricAlarms", OutputItemKey: ""}, + "DescribeAnomalyDetectors": {Verb: "Get", Resource: "AnomalyDetector", OutputListKey: "AnomalyDetectors", OutputItemKey: ""}, + "DescribeInsightRules": {Verb: "Get", Resource: "InsightRule", OutputListKey: "InsightRules", OutputItemKey: ""}, + "GetAlarmMuteRule": {Verb: "Get", Resource: "AlarmMuteRule", OutputListKey: "", OutputItemKey: "MuteTargets"}, + "GetDashboard": {Verb: "Get", Resource: "Dashboard", OutputListKey: "", OutputItemKey: ""}, + "GetInsightRuleReport": {Verb: "Get", Resource: "InsightRuleReport", OutputListKey: "Contributors", OutputItemKey: ""}, + "GetMetricData": {Verb: "Get", Resource: "MetricData", OutputListKey: "Messages", OutputItemKey: ""}, + "GetMetricStatistics": {Verb: "Get", Resource: "MetricStatistic", OutputListKey: "Datapoints", OutputItemKey: ""}, + "GetMetricStream": {Verb: "Get", Resource: "MetricStream", OutputListKey: "ExcludeFilters", OutputItemKey: ""}, + "GetMetricWidgetImage": {Verb: "Get", Resource: "MetricWidgetImage", OutputListKey: "", OutputItemKey: ""}, + "GetOTelEnrichment": {Verb: "Get", Resource: "OTelEnrichment", OutputListKey: "", OutputItemKey: ""}, + "ListAlarmMuteRules": {Verb: "List", Resource: "AlarmMuteRule", OutputListKey: "AlarmMuteRuleSummaries", OutputItemKey: ""}, + "ListDashboards": {Verb: "List", Resource: "Dashboard", OutputListKey: "DashboardEntries", OutputItemKey: ""}, + "ListManagedInsightRules": {Verb: "List", Resource: "ManagedInsightRule", OutputListKey: "ManagedRules", OutputItemKey: ""}, + "ListMetricStreams": {Verb: "List", Resource: "MetricStream", OutputListKey: "Entries", OutputItemKey: ""}, + "ListMetrics": {Verb: "List", Resource: "Metric", OutputListKey: "Metrics", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "PutAlarmMuteRule": {Verb: "Update", Resource: "AlarmMuteRule", OutputListKey: "", OutputItemKey: ""}, + "PutAnomalyDetector": {Verb: "Update", Resource: "AnomalyDetector", OutputListKey: "", OutputItemKey: ""}, + "PutCompositeAlarm": {Verb: "Update", Resource: "CompositeAlarm", OutputListKey: "", OutputItemKey: ""}, + "PutDashboard": {Verb: "Update", Resource: "Dashboard", OutputListKey: "DashboardValidationMessages", OutputItemKey: ""}, + "PutInsightRule": {Verb: "Update", Resource: "InsightRule", OutputListKey: "", OutputItemKey: ""}, + "PutManagedInsightRules": {Verb: "Update", Resource: "ManagedInsightRule", OutputListKey: "Failures", OutputItemKey: ""}, + "PutMetricAlarm": {Verb: "Update", Resource: "MetricAlarm", OutputListKey: "", OutputItemKey: ""}, + "PutMetricData": {Verb: "Update", Resource: "MetricData", OutputListKey: "", OutputItemKey: ""}, + "PutMetricStream": {Verb: "Update", Resource: "MetricStream", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("cloudwatchlogs", map[string]crud.OpMeta{ + "CreateDelivery": {Verb: "Create", Resource: "Delivery", OutputListKey: "", OutputItemKey: "delivery"}, + "CreateExportTask": {Verb: "Create", Resource: "ExportTask", OutputListKey: "", OutputItemKey: ""}, + "CreateImportTask": {Verb: "Create", Resource: "ImportTask", OutputListKey: "", OutputItemKey: ""}, + "CreateLogAnomalyDetector": {Verb: "Create", Resource: "LogAnomalyDetector", OutputListKey: "", OutputItemKey: ""}, + "CreateLogGroup": {Verb: "Create", Resource: "LogGroup", OutputListKey: "", OutputItemKey: ""}, + "CreateLogStream": {Verb: "Create", Resource: "LogStream", OutputListKey: "", OutputItemKey: ""}, + "CreateLookupTable": {Verb: "Create", Resource: "LookupTable", OutputListKey: "", OutputItemKey: ""}, + "CreateScheduledQuery": {Verb: "Create", Resource: "ScheduledQuery", OutputListKey: "", OutputItemKey: ""}, + "DeleteAccountPolicy": {Verb: "Delete", Resource: "AccountPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteDataProtectionPolicy": {Verb: "Delete", Resource: "DataProtectionPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteDelivery": {Verb: "Delete", Resource: "Delivery", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeliveryDestination": {Verb: "Delete", Resource: "DeliveryDestination", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeliveryDestinationPolicy": {Verb: "Delete", Resource: "DeliveryDestinationPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeliverySource": {Verb: "Delete", Resource: "DeliverySource", OutputListKey: "", OutputItemKey: ""}, + "DeleteDestination": {Verb: "Delete", Resource: "Destination", OutputListKey: "", OutputItemKey: ""}, + "DeleteIndexPolicy": {Verb: "Delete", Resource: "IndexPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteIntegration": {Verb: "Delete", Resource: "Integration", OutputListKey: "", OutputItemKey: ""}, + "DeleteLogAnomalyDetector": {Verb: "Delete", Resource: "LogAnomalyDetector", OutputListKey: "", OutputItemKey: ""}, + "DeleteLogGroup": {Verb: "Delete", Resource: "LogGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteLogStream": {Verb: "Delete", Resource: "LogStream", OutputListKey: "", OutputItemKey: ""}, + "DeleteLookupTable": {Verb: "Delete", Resource: "LookupTable", OutputListKey: "", OutputItemKey: ""}, + "DeleteMetricFilter": {Verb: "Delete", Resource: "MetricFilter", OutputListKey: "", OutputItemKey: ""}, + "DeleteQueryDefinition": {Verb: "Delete", Resource: "QueryDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteRetentionPolicy": {Verb: "Delete", Resource: "RetentionPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteScheduledQuery": {Verb: "Delete", Resource: "ScheduledQuery", OutputListKey: "", OutputItemKey: ""}, + "DeleteSubscriptionFilter": {Verb: "Delete", Resource: "SubscriptionFilter", OutputListKey: "", OutputItemKey: ""}, + "DeleteTransformer": {Verb: "Delete", Resource: "Transformer", OutputListKey: "", OutputItemKey: ""}, + "DescribeAccountPolicies": {Verb: "Get", Resource: "AccountPolicy", OutputListKey: "accountPolicies", OutputItemKey: ""}, + "DescribeConfigurationTemplates": {Verb: "Get", Resource: "ConfigurationTemplate", OutputListKey: "configurationTemplates", OutputItemKey: ""}, + "DescribeDeliveries": {Verb: "Get", Resource: "Delivery", OutputListKey: "deliveries", OutputItemKey: ""}, + "DescribeDeliveryDestinations": {Verb: "Get", Resource: "DeliveryDestination", OutputListKey: "deliveryDestinations", OutputItemKey: ""}, + "DescribeDeliverySources": {Verb: "Get", Resource: "DeliverySource", OutputListKey: "deliverySources", OutputItemKey: ""}, + "DescribeDestinations": {Verb: "Get", Resource: "Destination", OutputListKey: "destinations", OutputItemKey: ""}, + "DescribeExportTasks": {Verb: "Get", Resource: "ExportTask", OutputListKey: "exportTasks", OutputItemKey: ""}, + "DescribeFieldIndexes": {Verb: "Get", Resource: "FieldIndex", OutputListKey: "fieldIndexes", OutputItemKey: ""}, + "DescribeImportTaskBatches": {Verb: "Get", Resource: "ImportTaskBatche", OutputListKey: "importBatches", OutputItemKey: ""}, + "DescribeImportTasks": {Verb: "Get", Resource: "ImportTask", OutputListKey: "imports", OutputItemKey: ""}, + "DescribeIndexPolicies": {Verb: "Get", Resource: "IndexPolicy", OutputListKey: "indexPolicies", OutputItemKey: ""}, + "DescribeLogGroups": {Verb: "Get", Resource: "LogGroup", OutputListKey: "logGroups", OutputItemKey: ""}, + "DescribeLogStreams": {Verb: "Get", Resource: "LogStream", OutputListKey: "logStreams", OutputItemKey: ""}, + "DescribeLookupTables": {Verb: "Get", Resource: "LookupTable", OutputListKey: "lookupTables", OutputItemKey: ""}, + "DescribeMetricFilters": {Verb: "Get", Resource: "MetricFilter", OutputListKey: "metricFilters", OutputItemKey: ""}, + "DescribeQueries": {Verb: "Get", Resource: "Query", OutputListKey: "queries", OutputItemKey: ""}, + "DescribeQueryDefinitions": {Verb: "Get", Resource: "QueryDefinition", OutputListKey: "queryDefinitions", OutputItemKey: ""}, + "DescribeResourcePolicies": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "resourcePolicies", OutputItemKey: ""}, + "DescribeSubscriptionFilters": {Verb: "Get", Resource: "SubscriptionFilter", OutputListKey: "subscriptionFilters", OutputItemKey: ""}, + "GetDataProtectionPolicy": {Verb: "Get", Resource: "DataProtectionPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetDelivery": {Verb: "Get", Resource: "Delivery", OutputListKey: "", OutputItemKey: "delivery"}, + "GetDeliveryDestination": {Verb: "Get", Resource: "DeliveryDestination", OutputListKey: "", OutputItemKey: "deliveryDestination"}, + "GetDeliveryDestinationPolicy": {Verb: "Get", Resource: "DeliveryDestinationPolicy", OutputListKey: "", OutputItemKey: "policy"}, + "GetDeliverySource": {Verb: "Get", Resource: "DeliverySource", OutputListKey: "", OutputItemKey: "deliverySource"}, + "GetIntegration": {Verb: "Get", Resource: "Integration", OutputListKey: "", OutputItemKey: ""}, + "GetLogAnomalyDetector": {Verb: "Get", Resource: "LogAnomalyDetector", OutputListKey: "logGroupArnList", OutputItemKey: ""}, + "GetLogEvents": {Verb: "Get", Resource: "LogEvent", OutputListKey: "events", OutputItemKey: ""}, + "GetLogFields": {Verb: "Get", Resource: "LogField", OutputListKey: "logFields", OutputItemKey: ""}, + "GetLogGroupFields": {Verb: "Get", Resource: "LogGroupField", OutputListKey: "logGroupFields", OutputItemKey: ""}, + "GetLogObject": {Verb: "Get", Resource: "LogObject", OutputListKey: "", OutputItemKey: ""}, + "GetLogRecord": {Verb: "Get", Resource: "LogRecord", OutputListKey: "", OutputItemKey: ""}, + "GetLookupTable": {Verb: "Get", Resource: "LookupTable", OutputListKey: "", OutputItemKey: ""}, + "GetQueryResults": {Verb: "Get", Resource: "QueryResult", OutputListKey: "results", OutputItemKey: "statistics"}, + "GetScheduledQuery": {Verb: "Get", Resource: "ScheduledQuery", OutputListKey: "logGroupIdentifiers", OutputItemKey: "destinationConfiguration"}, + "GetScheduledQueryHistory": {Verb: "Get", Resource: "ScheduledQueryHistory", OutputListKey: "triggerHistory", OutputItemKey: ""}, + "GetTransformer": {Verb: "Get", Resource: "Transformer", OutputListKey: "transformerConfig", OutputItemKey: ""}, + "ListAggregateLogGroupSummaries": {Verb: "List", Resource: "AggregateLogGroupSummary", OutputListKey: "aggregateLogGroupSummaries", OutputItemKey: ""}, + "ListAnomalies": {Verb: "List", Resource: "Anomaly", OutputListKey: "anomalies", OutputItemKey: ""}, + "ListIntegrations": {Verb: "List", Resource: "Integration", OutputListKey: "integrationSummaries", OutputItemKey: ""}, + "ListLogAnomalyDetectors": {Verb: "List", Resource: "LogAnomalyDetector", OutputListKey: "anomalyDetectors", OutputItemKey: ""}, + "ListLogGroups": {Verb: "List", Resource: "LogGroup", OutputListKey: "logGroups", OutputItemKey: ""}, + "ListLogGroupsForQuery": {Verb: "List", Resource: "LogGroupsForQuery", OutputListKey: "logGroupIdentifiers", OutputItemKey: ""}, + "ListScheduledQueries": {Verb: "List", Resource: "ScheduledQuery", OutputListKey: "scheduledQueries", OutputItemKey: ""}, + "ListSourcesForS3TableIntegration": {Verb: "List", Resource: "SourcesForS3TableIntegration", OutputListKey: "sources", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "ListTagsLogGroup": {Verb: "List", Resource: "TagsLogGroup", OutputListKey: "", OutputItemKey: ""}, + "PutAccountPolicy": {Verb: "Update", Resource: "AccountPolicy", OutputListKey: "", OutputItemKey: "accountPolicy"}, + "PutBearerTokenAuthentication": {Verb: "Update", Resource: "BearerTokenAuthentication", OutputListKey: "", OutputItemKey: ""}, + "PutDataProtectionPolicy": {Verb: "Update", Resource: "DataProtectionPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutDeliveryDestination": {Verb: "Update", Resource: "DeliveryDestination", OutputListKey: "", OutputItemKey: "deliveryDestination"}, + "PutDeliveryDestinationPolicy": {Verb: "Update", Resource: "DeliveryDestinationPolicy", OutputListKey: "", OutputItemKey: "policy"}, + "PutDeliverySource": {Verb: "Update", Resource: "DeliverySource", OutputListKey: "", OutputItemKey: "deliverySource"}, + "PutDestination": {Verb: "Update", Resource: "Destination", OutputListKey: "", OutputItemKey: "destination"}, + "PutDestinationPolicy": {Verb: "Update", Resource: "DestinationPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutIndexPolicy": {Verb: "Update", Resource: "IndexPolicy", OutputListKey: "", OutputItemKey: "indexPolicy"}, + "PutIntegration": {Verb: "Update", Resource: "Integration", OutputListKey: "", OutputItemKey: ""}, + "PutLogEvents": {Verb: "Update", Resource: "LogEvent", OutputListKey: "", OutputItemKey: "rejectedEntityInfo"}, + "PutLogGroupDeletionProtection": {Verb: "Update", Resource: "LogGroupDeletionProtection", OutputListKey: "", OutputItemKey: ""}, + "PutMetricFilter": {Verb: "Update", Resource: "MetricFilter", OutputListKey: "", OutputItemKey: ""}, + "PutQueryDefinition": {Verb: "Update", Resource: "QueryDefinition", OutputListKey: "", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: "resourcePolicy"}, + "PutRetentionPolicy": {Verb: "Update", Resource: "RetentionPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutSubscriptionFilter": {Verb: "Update", Resource: "SubscriptionFilter", OutputListKey: "", OutputItemKey: ""}, + "PutTransformer": {Verb: "Update", Resource: "Transformer", OutputListKey: "", OutputItemKey: ""}, + "TagLogGroup": {Verb: "Tag", Resource: "LogGroup", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagLogGroup": {Verb: "Untag", Resource: "LogGroup", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAnomaly": {Verb: "Update", Resource: "Anomaly", OutputListKey: "", OutputItemKey: ""}, + "UpdateDeliveryConfiguration": {Verb: "Update", Resource: "DeliveryConfiguration", OutputListKey: "", OutputItemKey: ""}, + "UpdateLogAnomalyDetector": {Verb: "Update", Resource: "LogAnomalyDetector", OutputListKey: "", OutputItemKey: ""}, + "UpdateLookupTable": {Verb: "Update", Resource: "LookupTable", OutputListKey: "", OutputItemKey: ""}, + "UpdateScheduledQuery": {Verb: "Update", Resource: "ScheduledQuery", OutputListKey: "logGroupIdentifiers", OutputItemKey: "destinationConfiguration"}, + }) + crud.Register("codebuild", map[string]crud.OpMeta{ + "BatchGetBuildBatches": {Verb: "List", Resource: "BuildBatche", OutputListKey: "buildBatches", OutputItemKey: ""}, + "BatchGetBuilds": {Verb: "List", Resource: "Build", OutputListKey: "builds", OutputItemKey: ""}, + "BatchGetCommandExecutions": {Verb: "List", Resource: "CommandExecution", OutputListKey: "commandExecutions", OutputItemKey: ""}, + "BatchGetFleets": {Verb: "List", Resource: "Fleet", OutputListKey: "fleets", OutputItemKey: ""}, + "BatchGetProjects": {Verb: "List", Resource: "Project", OutputListKey: "projects", OutputItemKey: ""}, + "BatchGetReportGroups": {Verb: "List", Resource: "ReportGroup", OutputListKey: "reportGroups", OutputItemKey: ""}, + "BatchGetReports": {Verb: "List", Resource: "Report", OutputListKey: "reports", OutputItemKey: ""}, + "BatchGetSandboxes": {Verb: "List", Resource: "Sandbox", OutputListKey: "sandboxes", OutputItemKey: ""}, + "CreateFleet": {Verb: "Create", Resource: "Fleet", OutputListKey: "", OutputItemKey: "fleet"}, + "CreateProject": {Verb: "Create", Resource: "Project", OutputListKey: "", OutputItemKey: "project"}, + "CreateReportGroup": {Verb: "Create", Resource: "ReportGroup", OutputListKey: "", OutputItemKey: "reportGroup"}, + "CreateWebhook": {Verb: "Create", Resource: "Webhook", OutputListKey: "", OutputItemKey: "webhook"}, + "DeleteBuildBatch": {Verb: "Delete", Resource: "BuildBatch", OutputListKey: "buildsDeleted", OutputItemKey: ""}, + "DeleteFleet": {Verb: "Delete", Resource: "Fleet", OutputListKey: "", OutputItemKey: ""}, + "DeleteProject": {Verb: "Delete", Resource: "Project", OutputListKey: "", OutputItemKey: ""}, + "DeleteReport": {Verb: "Delete", Resource: "Report", OutputListKey: "", OutputItemKey: ""}, + "DeleteReportGroup": {Verb: "Delete", Resource: "ReportGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteSourceCredentials": {Verb: "Delete", Resource: "SourceCredential", OutputListKey: "", OutputItemKey: ""}, + "DeleteWebhook": {Verb: "Delete", Resource: "Webhook", OutputListKey: "", OutputItemKey: ""}, + "DescribeCodeCoverages": {Verb: "Get", Resource: "CodeCoverage", OutputListKey: "codeCoverages", OutputItemKey: ""}, + "DescribeTestCases": {Verb: "Get", Resource: "TestCase", OutputListKey: "testCases", OutputItemKey: ""}, + "GetReportGroupTrend": {Verb: "Get", Resource: "ReportGroupTrend", OutputListKey: "rawData", OutputItemKey: "stats"}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "ListBuildBatches": {Verb: "List", Resource: "BuildBatche", OutputListKey: "ids", OutputItemKey: ""}, + "ListBuildBatchesForProject": {Verb: "List", Resource: "BuildBatchesForProject", OutputListKey: "ids", OutputItemKey: ""}, + "ListBuilds": {Verb: "List", Resource: "Build", OutputListKey: "ids", OutputItemKey: ""}, + "ListBuildsForProject": {Verb: "List", Resource: "BuildsForProject", OutputListKey: "ids", OutputItemKey: ""}, + "ListCommandExecutionsForSandbox": {Verb: "List", Resource: "CommandExecutionsForSandbox", OutputListKey: "commandExecutions", OutputItemKey: ""}, + "ListCuratedEnvironmentImages": {Verb: "List", Resource: "CuratedEnvironmentImage", OutputListKey: "platforms", OutputItemKey: ""}, + "ListFleets": {Verb: "List", Resource: "Fleet", OutputListKey: "fleets", OutputItemKey: ""}, + "ListProjects": {Verb: "List", Resource: "Project", OutputListKey: "projects", OutputItemKey: ""}, + "ListReportGroups": {Verb: "List", Resource: "ReportGroup", OutputListKey: "reportGroups", OutputItemKey: ""}, + "ListReports": {Verb: "List", Resource: "Report", OutputListKey: "reports", OutputItemKey: ""}, + "ListReportsForReportGroup": {Verb: "List", Resource: "ReportsForReportGroup", OutputListKey: "reports", OutputItemKey: ""}, + "ListSandboxes": {Verb: "List", Resource: "Sandbox", OutputListKey: "ids", OutputItemKey: ""}, + "ListSandboxesForProject": {Verb: "List", Resource: "SandboxesForProject", OutputListKey: "ids", OutputItemKey: ""}, + "ListSharedProjects": {Verb: "List", Resource: "SharedProject", OutputListKey: "projects", OutputItemKey: ""}, + "ListSharedReportGroups": {Verb: "List", Resource: "SharedReportGroup", OutputListKey: "reportGroups", OutputItemKey: ""}, + "ListSourceCredentials": {Verb: "List", Resource: "SourceCredential", OutputListKey: "sourceCredentialsInfos", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "UpdateFleet": {Verb: "Update", Resource: "Fleet", OutputListKey: "", OutputItemKey: "fleet"}, + "UpdateProject": {Verb: "Update", Resource: "Project", OutputListKey: "", OutputItemKey: "project"}, + "UpdateProjectVisibility": {Verb: "Update", Resource: "ProjectVisibility", OutputListKey: "", OutputItemKey: ""}, + "UpdateReportGroup": {Verb: "Update", Resource: "ReportGroup", OutputListKey: "", OutputItemKey: "reportGroup"}, + "UpdateWebhook": {Verb: "Update", Resource: "Webhook", OutputListKey: "", OutputItemKey: "webhook"}, + }) + crud.Register("codecommit", map[string]crud.OpMeta{ + "BatchGetCommits": {Verb: "List", Resource: "Commit", OutputListKey: "commits", OutputItemKey: ""}, + "BatchGetRepositories": {Verb: "List", Resource: "Repository", OutputListKey: "errors", OutputItemKey: ""}, + "CreateApprovalRuleTemplate": {Verb: "Create", Resource: "ApprovalRuleTemplate", OutputListKey: "", OutputItemKey: "approvalRuleTemplate"}, + "CreateBranch": {Verb: "Create", Resource: "Branch", OutputListKey: "", OutputItemKey: ""}, + "CreateCommit": {Verb: "Create", Resource: "Commit", OutputListKey: "filesAdded", OutputItemKey: ""}, + "CreatePullRequest": {Verb: "Create", Resource: "PullRequest", OutputListKey: "", OutputItemKey: "pullRequest"}, + "CreatePullRequestApprovalRule": {Verb: "Create", Resource: "PullRequestApprovalRule", OutputListKey: "", OutputItemKey: "approvalRule"}, + "CreateRepository": {Verb: "Create", Resource: "Repository", OutputListKey: "", OutputItemKey: "repositoryMetadata"}, + "CreateUnreferencedMergeCommit": {Verb: "Create", Resource: "UnreferencedMergeCommit", OutputListKey: "", OutputItemKey: ""}, + "DeleteApprovalRuleTemplate": {Verb: "Delete", Resource: "ApprovalRuleTemplate", OutputListKey: "", OutputItemKey: ""}, + "DeleteBranch": {Verb: "Delete", Resource: "Branch", OutputListKey: "", OutputItemKey: "deletedBranch"}, + "DeleteCommentContent": {Verb: "Delete", Resource: "CommentContent", OutputListKey: "", OutputItemKey: "comment"}, + "DeleteFile": {Verb: "Delete", Resource: "File", OutputListKey: "", OutputItemKey: ""}, + "DeletePullRequestApprovalRule": {Verb: "Delete", Resource: "PullRequestApprovalRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteRepository": {Verb: "Delete", Resource: "Repository", OutputListKey: "", OutputItemKey: ""}, + "DescribeMergeConflicts": {Verb: "Get", Resource: "MergeConflict", OutputListKey: "mergeHunks", OutputItemKey: "conflictMetadata"}, + "DescribePullRequestEvents": {Verb: "Get", Resource: "PullRequestEvent", OutputListKey: "pullRequestEvents", OutputItemKey: ""}, + "GetApprovalRuleTemplate": {Verb: "Get", Resource: "ApprovalRuleTemplate", OutputListKey: "", OutputItemKey: "approvalRuleTemplate"}, + "GetBlob": {Verb: "Get", Resource: "Blob", OutputListKey: "", OutputItemKey: ""}, + "GetBranch": {Verb: "Get", Resource: "Branch", OutputListKey: "", OutputItemKey: "branch"}, + "GetComment": {Verb: "Get", Resource: "Comment", OutputListKey: "", OutputItemKey: "comment"}, + "GetCommentReactions": {Verb: "Get", Resource: "CommentReaction", OutputListKey: "reactionsForComment", OutputItemKey: ""}, + "GetCommentsForComparedCommit": {Verb: "Get", Resource: "CommentsForComparedCommit", OutputListKey: "commentsForComparedCommitData", OutputItemKey: ""}, + "GetCommentsForPullRequest": {Verb: "Get", Resource: "CommentsForPullRequest", OutputListKey: "commentsForPullRequestData", OutputItemKey: ""}, + "GetCommit": {Verb: "Get", Resource: "Commit", OutputListKey: "", OutputItemKey: "commit"}, + "GetDifferences": {Verb: "Get", Resource: "Difference", OutputListKey: "differences", OutputItemKey: ""}, + "GetFile": {Verb: "Get", Resource: "File", OutputListKey: "", OutputItemKey: ""}, + "GetFolder": {Verb: "Get", Resource: "Folder", OutputListKey: "files", OutputItemKey: ""}, + "GetMergeCommit": {Verb: "Get", Resource: "MergeCommit", OutputListKey: "", OutputItemKey: ""}, + "GetMergeConflicts": {Verb: "Get", Resource: "MergeConflict", OutputListKey: "conflictMetadataList", OutputItemKey: ""}, + "GetMergeOptions": {Verb: "Get", Resource: "MergeOption", OutputListKey: "mergeOptions", OutputItemKey: ""}, + "GetPullRequest": {Verb: "Get", Resource: "PullRequest", OutputListKey: "", OutputItemKey: "pullRequest"}, + "GetPullRequestApprovalStates": {Verb: "Get", Resource: "PullRequestApprovalState", OutputListKey: "approvals", OutputItemKey: ""}, + "GetPullRequestOverrideState": {Verb: "Get", Resource: "PullRequestOverrideState", OutputListKey: "", OutputItemKey: ""}, + "GetRepository": {Verb: "Get", Resource: "Repository", OutputListKey: "", OutputItemKey: "repositoryMetadata"}, + "GetRepositoryTriggers": {Verb: "Get", Resource: "RepositoryTrigger", OutputListKey: "triggers", OutputItemKey: ""}, + "ListApprovalRuleTemplates": {Verb: "List", Resource: "ApprovalRuleTemplate", OutputListKey: "approvalRuleTemplateNames", OutputItemKey: ""}, + "ListAssociatedApprovalRuleTemplatesForRepository": {Verb: "List", Resource: "AssociatedApprovalRuleTemplatesForRepository", OutputListKey: "approvalRuleTemplateNames", OutputItemKey: ""}, + "ListBranches": {Verb: "List", Resource: "Branche", OutputListKey: "branches", OutputItemKey: ""}, + "ListFileCommitHistory": {Verb: "List", Resource: "FileCommitHistory", OutputListKey: "revisionDag", OutputItemKey: ""}, + "ListPullRequests": {Verb: "List", Resource: "PullRequest", OutputListKey: "pullRequestIds", OutputItemKey: ""}, + "ListRepositories": {Verb: "List", Resource: "Repository", OutputListKey: "repositories", OutputItemKey: ""}, + "ListRepositoriesForApprovalRuleTemplate": {Verb: "List", Resource: "RepositoriesForApprovalRuleTemplate", OutputListKey: "repositoryNames", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "PutCommentReaction": {Verb: "Update", Resource: "CommentReaction", OutputListKey: "", OutputItemKey: ""}, + "PutFile": {Verb: "Update", Resource: "File", OutputListKey: "", OutputItemKey: ""}, + "PutRepositoryTriggers": {Verb: "Update", Resource: "RepositoryTrigger", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApprovalRuleTemplateContent": {Verb: "Update", Resource: "ApprovalRuleTemplateContent", OutputListKey: "", OutputItemKey: "approvalRuleTemplate"}, + "UpdateApprovalRuleTemplateDescription": {Verb: "Update", Resource: "ApprovalRuleTemplateDescription", OutputListKey: "", OutputItemKey: "approvalRuleTemplate"}, + "UpdateApprovalRuleTemplateName": {Verb: "Update", Resource: "ApprovalRuleTemplateName", OutputListKey: "", OutputItemKey: "approvalRuleTemplate"}, + "UpdateComment": {Verb: "Update", Resource: "Comment", OutputListKey: "", OutputItemKey: "comment"}, + "UpdateDefaultBranch": {Verb: "Update", Resource: "DefaultBranch", OutputListKey: "", OutputItemKey: ""}, + "UpdatePullRequestApprovalRuleContent": {Verb: "Update", Resource: "PullRequestApprovalRuleContent", OutputListKey: "", OutputItemKey: "approvalRule"}, + "UpdatePullRequestApprovalState": {Verb: "Update", Resource: "PullRequestApprovalState", OutputListKey: "", OutputItemKey: ""}, + "UpdatePullRequestDescription": {Verb: "Update", Resource: "PullRequestDescription", OutputListKey: "", OutputItemKey: "pullRequest"}, + "UpdatePullRequestStatus": {Verb: "Update", Resource: "PullRequestStatu", OutputListKey: "", OutputItemKey: "pullRequest"}, + "UpdatePullRequestTitle": {Verb: "Update", Resource: "PullRequestTitle", OutputListKey: "", OutputItemKey: "pullRequest"}, + "UpdateRepositoryDescription": {Verb: "Update", Resource: "RepositoryDescription", OutputListKey: "", OutputItemKey: ""}, + "UpdateRepositoryEncryptionKey": {Verb: "Update", Resource: "RepositoryEncryptionKey", OutputListKey: "", OutputItemKey: ""}, + "UpdateRepositoryName": {Verb: "Update", Resource: "RepositoryName", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("codedeploy", map[string]crud.OpMeta{ + "BatchGetApplicationRevisions": {Verb: "List", Resource: "ApplicationRevision", OutputListKey: "revisions", OutputItemKey: ""}, + "BatchGetApplications": {Verb: "List", Resource: "Application", OutputListKey: "applicationsInfo", OutputItemKey: ""}, + "BatchGetDeploymentGroups": {Verb: "List", Resource: "DeploymentGroup", OutputListKey: "deploymentGroupsInfo", OutputItemKey: ""}, + "BatchGetDeploymentInstances": {Verb: "List", Resource: "DeploymentInstance", OutputListKey: "instancesSummary", OutputItemKey: ""}, + "BatchGetDeploymentTargets": {Verb: "List", Resource: "DeploymentTarget", OutputListKey: "deploymentTargets", OutputItemKey: ""}, + "BatchGetDeployments": {Verb: "List", Resource: "Deployment", OutputListKey: "deploymentsInfo", OutputItemKey: ""}, + "BatchGetOnPremisesInstances": {Verb: "List", Resource: "OnPremisesInstance", OutputListKey: "instanceInfos", OutputItemKey: ""}, + "CreateApplication": {Verb: "Create", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "CreateDeployment": {Verb: "Create", Resource: "Deployment", OutputListKey: "", OutputItemKey: ""}, + "CreateDeploymentConfig": {Verb: "Create", Resource: "DeploymentConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateDeploymentGroup": {Verb: "Create", Resource: "DeploymentGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplication": {Verb: "Delete", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeploymentConfig": {Verb: "Delete", Resource: "DeploymentConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeploymentGroup": {Verb: "Delete", Resource: "DeploymentGroup", OutputListKey: "hooksNotCleanedUp", OutputItemKey: ""}, + "DeleteGitHubAccountToken": {Verb: "Delete", Resource: "GitHubAccountToken", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcesByExternalId": {Verb: "Delete", Resource: "ResourcesByExternalId", OutputListKey: "", OutputItemKey: ""}, + "DeregisterOnPremisesInstance": {Verb: "Delete", Resource: "OnPremisesInstance", OutputListKey: "", OutputItemKey: ""}, + "GetApplication": {Verb: "Get", Resource: "Application", OutputListKey: "", OutputItemKey: "application"}, + "GetApplicationRevision": {Verb: "Get", Resource: "ApplicationRevision", OutputListKey: "", OutputItemKey: "revision"}, + "GetDeployment": {Verb: "Get", Resource: "Deployment", OutputListKey: "", OutputItemKey: "deploymentInfo"}, + "GetDeploymentConfig": {Verb: "Get", Resource: "DeploymentConfig", OutputListKey: "", OutputItemKey: "deploymentConfigInfo"}, + "GetDeploymentGroup": {Verb: "Get", Resource: "DeploymentGroup", OutputListKey: "", OutputItemKey: "deploymentGroupInfo"}, + "GetDeploymentInstance": {Verb: "Get", Resource: "DeploymentInstance", OutputListKey: "", OutputItemKey: "instanceSummary"}, + "GetDeploymentTarget": {Verb: "Get", Resource: "DeploymentTarget", OutputListKey: "", OutputItemKey: "deploymentTarget"}, + "GetOnPremisesInstance": {Verb: "Get", Resource: "OnPremisesInstance", OutputListKey: "", OutputItemKey: "instanceInfo"}, + "ListApplicationRevisions": {Verb: "List", Resource: "ApplicationRevision", OutputListKey: "revisions", OutputItemKey: ""}, + "ListApplications": {Verb: "List", Resource: "Application", OutputListKey: "applications", OutputItemKey: ""}, + "ListDeploymentConfigs": {Verb: "List", Resource: "DeploymentConfig", OutputListKey: "deploymentConfigsList", OutputItemKey: ""}, + "ListDeploymentGroups": {Verb: "List", Resource: "DeploymentGroup", OutputListKey: "deploymentGroups", OutputItemKey: ""}, + "ListDeploymentInstances": {Verb: "List", Resource: "DeploymentInstance", OutputListKey: "instancesList", OutputItemKey: ""}, + "ListDeploymentTargets": {Verb: "List", Resource: "DeploymentTarget", OutputListKey: "targetIds", OutputItemKey: ""}, + "ListDeployments": {Verb: "List", Resource: "Deployment", OutputListKey: "deployments", OutputItemKey: ""}, + "ListGitHubAccountTokenNames": {Verb: "List", Resource: "GitHubAccountTokenName", OutputListKey: "tokenNameList", OutputItemKey: ""}, + "ListOnPremisesInstances": {Verb: "List", Resource: "OnPremisesInstance", OutputListKey: "instanceNames", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "PutLifecycleEventHookExecutionStatus": {Verb: "Update", Resource: "LifecycleEventHookExecutionStatu", OutputListKey: "", OutputItemKey: ""}, + "RegisterApplicationRevision": {Verb: "Create", Resource: "ApplicationRevision", OutputListKey: "", OutputItemKey: ""}, + "RegisterOnPremisesInstance": {Verb: "Create", Resource: "OnPremisesInstance", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApplication": {Verb: "Update", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "UpdateDeploymentGroup": {Verb: "Update", Resource: "DeploymentGroup", OutputListKey: "hooksNotCleanedUp", OutputItemKey: ""}, + }) + crud.Register("codepipeline", map[string]crud.OpMeta{ + "CreateCustomActionType": {Verb: "Create", Resource: "CustomActionType", OutputListKey: "tags", OutputItemKey: "actionType"}, + "CreatePipeline": {Verb: "Create", Resource: "Pipeline", OutputListKey: "tags", OutputItemKey: "pipeline"}, + "DeleteCustomActionType": {Verb: "Delete", Resource: "CustomActionType", OutputListKey: "", OutputItemKey: ""}, + "DeletePipeline": {Verb: "Delete", Resource: "Pipeline", OutputListKey: "", OutputItemKey: ""}, + "DeleteWebhook": {Verb: "Delete", Resource: "Webhook", OutputListKey: "", OutputItemKey: ""}, + "DeregisterWebhookWithThirdParty": {Verb: "Delete", Resource: "WebhookWithThirdParty", OutputListKey: "", OutputItemKey: ""}, + "GetActionType": {Verb: "Get", Resource: "ActionType", OutputListKey: "", OutputItemKey: "actionType"}, + "GetJobDetails": {Verb: "Get", Resource: "JobDetail", OutputListKey: "", OutputItemKey: "jobDetails"}, + "GetPipeline": {Verb: "Get", Resource: "Pipeline", OutputListKey: "", OutputItemKey: "metadata"}, + "GetPipelineExecution": {Verb: "Get", Resource: "PipelineExecution", OutputListKey: "", OutputItemKey: "pipelineExecution"}, + "GetPipelineState": {Verb: "Get", Resource: "PipelineState", OutputListKey: "stageStates", OutputItemKey: ""}, + "GetThirdPartyJobDetails": {Verb: "Get", Resource: "ThirdPartyJobDetail", OutputListKey: "", OutputItemKey: "jobDetails"}, + "ListActionExecutions": {Verb: "List", Resource: "ActionExecution", OutputListKey: "actionExecutionDetails", OutputItemKey: ""}, + "ListActionTypes": {Verb: "List", Resource: "ActionType", OutputListKey: "actionTypes", OutputItemKey: ""}, + "ListDeployActionExecutionTargets": {Verb: "List", Resource: "DeployActionExecutionTarget", OutputListKey: "targets", OutputItemKey: ""}, + "ListPipelineExecutions": {Verb: "List", Resource: "PipelineExecution", OutputListKey: "pipelineExecutionSummaries", OutputItemKey: ""}, + "ListPipelines": {Verb: "List", Resource: "Pipeline", OutputListKey: "pipelines", OutputItemKey: ""}, + "ListRuleExecutions": {Verb: "List", Resource: "RuleExecution", OutputListKey: "ruleExecutionDetails", OutputItemKey: ""}, + "ListRuleTypes": {Verb: "List", Resource: "RuleType", OutputListKey: "ruleTypes", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "tags", OutputItemKey: ""}, + "ListWebhooks": {Verb: "List", Resource: "Webhook", OutputListKey: "webhooks", OutputItemKey: ""}, + "PutActionRevision": {Verb: "Update", Resource: "ActionRevision", OutputListKey: "", OutputItemKey: ""}, + "PutApprovalResult": {Verb: "Update", Resource: "ApprovalResult", OutputListKey: "", OutputItemKey: ""}, + "PutJobFailureResult": {Verb: "Update", Resource: "JobFailureResult", OutputListKey: "", OutputItemKey: ""}, + "PutJobSuccessResult": {Verb: "Update", Resource: "JobSuccessResult", OutputListKey: "", OutputItemKey: ""}, + "PutThirdPartyJobFailureResult": {Verb: "Update", Resource: "ThirdPartyJobFailureResult", OutputListKey: "", OutputItemKey: ""}, + "PutThirdPartyJobSuccessResult": {Verb: "Update", Resource: "ThirdPartyJobSuccessResult", OutputListKey: "", OutputItemKey: ""}, + "PutWebhook": {Verb: "Update", Resource: "Webhook", OutputListKey: "", OutputItemKey: "webhook"}, + "RegisterWebhookWithThirdParty": {Verb: "Create", Resource: "WebhookWithThirdParty", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateActionType": {Verb: "Update", Resource: "ActionType", OutputListKey: "", OutputItemKey: ""}, + "UpdatePipeline": {Verb: "Update", Resource: "Pipeline", OutputListKey: "", OutputItemKey: "pipeline"}, + }) + crud.Register("cognitoidentity", map[string]crud.OpMeta{ + "CreateIdentityPool": {Verb: "Create", Resource: "IdentityPool", OutputListKey: "CognitoIdentityProviders", OutputItemKey: ""}, + "DeleteIdentities": {Verb: "Delete", Resource: "Identity", OutputListKey: "UnprocessedIdentityIds", OutputItemKey: ""}, + "DeleteIdentityPool": {Verb: "Delete", Resource: "IdentityPool", OutputListKey: "", OutputItemKey: ""}, + "DescribeIdentity": {Verb: "Get", Resource: "Identity", OutputListKey: "Logins", OutputItemKey: ""}, + "DescribeIdentityPool": {Verb: "Get", Resource: "IdentityPool", OutputListKey: "CognitoIdentityProviders", OutputItemKey: ""}, + "GetCredentialsForIdentity": {Verb: "Get", Resource: "CredentialsForIdentity", OutputListKey: "", OutputItemKey: "Credentials"}, + "GetId": {Verb: "Get", Resource: "Id", OutputListKey: "", OutputItemKey: ""}, + "GetIdentityPoolRoles": {Verb: "Get", Resource: "IdentityPoolRole", OutputListKey: "", OutputItemKey: ""}, + "GetOpenIdToken": {Verb: "Get", Resource: "OpenIdToken", OutputListKey: "", OutputItemKey: ""}, + "GetOpenIdTokenForDeveloperIdentity": {Verb: "Get", Resource: "OpenIdTokenForDeveloperIdentity", OutputListKey: "", OutputItemKey: ""}, + "GetPrincipalTagAttributeMap": {Verb: "Get", Resource: "PrincipalTagAttributeMap", OutputListKey: "", OutputItemKey: ""}, + "ListIdentities": {Verb: "List", Resource: "Identity", OutputListKey: "Identities", OutputItemKey: ""}, + "ListIdentityPools": {Verb: "List", Resource: "IdentityPool", OutputListKey: "IdentityPools", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateIdentityPool": {Verb: "Update", Resource: "IdentityPool", OutputListKey: "CognitoIdentityProviders", OutputItemKey: ""}, + }) + crud.Register("cognitoidentityprovider", map[string]crud.OpMeta{ + "CreateGroup": {Verb: "Create", Resource: "Group", OutputListKey: "", OutputItemKey: "Group"}, + "CreateIdentityProvider": {Verb: "Create", Resource: "IdentityProvider", OutputListKey: "", OutputItemKey: "IdentityProvider"}, + "CreateManagedLoginBranding": {Verb: "Create", Resource: "ManagedLoginBranding", OutputListKey: "", OutputItemKey: "ManagedLoginBranding"}, + "CreateResourceServer": {Verb: "Create", Resource: "ResourceServer", OutputListKey: "", OutputItemKey: "ResourceServer"}, + "CreateTerms": {Verb: "Create", Resource: "Term", OutputListKey: "", OutputItemKey: "Terms"}, + "CreateUserImportJob": {Verb: "Create", Resource: "UserImportJob", OutputListKey: "", OutputItemKey: "UserImportJob"}, + "CreateUserPool": {Verb: "Create", Resource: "UserPool", OutputListKey: "", OutputItemKey: "UserPool"}, + "CreateUserPoolClient": {Verb: "Create", Resource: "UserPoolClient", OutputListKey: "", OutputItemKey: "UserPoolClient"}, + "CreateUserPoolDomain": {Verb: "Create", Resource: "UserPoolDomain", OutputListKey: "", OutputItemKey: ""}, + "DeleteGroup": {Verb: "Delete", Resource: "Group", OutputListKey: "", OutputItemKey: ""}, + "DeleteIdentityProvider": {Verb: "Delete", Resource: "IdentityProvider", OutputListKey: "", OutputItemKey: ""}, + "DeleteManagedLoginBranding": {Verb: "Delete", Resource: "ManagedLoginBranding", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourceServer": {Verb: "Delete", Resource: "ResourceServer", OutputListKey: "", OutputItemKey: ""}, + "DeleteTerms": {Verb: "Delete", Resource: "Term", OutputListKey: "", OutputItemKey: ""}, + "DeleteUser": {Verb: "Delete", Resource: "User", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserAttributes": {Verb: "Delete", Resource: "UserAttribute", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserPool": {Verb: "Delete", Resource: "UserPool", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserPoolClient": {Verb: "Delete", Resource: "UserPoolClient", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserPoolClientSecret": {Verb: "Delete", Resource: "UserPoolClientSecret", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserPoolDomain": {Verb: "Delete", Resource: "UserPoolDomain", OutputListKey: "", OutputItemKey: ""}, + "DeleteWebAuthnCredential": {Verb: "Delete", Resource: "WebAuthnCredential", OutputListKey: "", OutputItemKey: ""}, + "DescribeIdentityProvider": {Verb: "Get", Resource: "IdentityProvider", OutputListKey: "", OutputItemKey: "IdentityProvider"}, + "DescribeManagedLoginBranding": {Verb: "Get", Resource: "ManagedLoginBranding", OutputListKey: "", OutputItemKey: "ManagedLoginBranding"}, + "DescribeManagedLoginBrandingByClient": {Verb: "Get", Resource: "ManagedLoginBrandingByClient", OutputListKey: "", OutputItemKey: "ManagedLoginBranding"}, + "DescribeResourceServer": {Verb: "Get", Resource: "ResourceServer", OutputListKey: "", OutputItemKey: "ResourceServer"}, + "DescribeRiskConfiguration": {Verb: "Get", Resource: "RiskConfiguration", OutputListKey: "", OutputItemKey: "RiskConfiguration"}, + "DescribeTerms": {Verb: "Get", Resource: "Term", OutputListKey: "", OutputItemKey: "Terms"}, + "DescribeUserImportJob": {Verb: "Get", Resource: "UserImportJob", OutputListKey: "", OutputItemKey: "UserImportJob"}, + "DescribeUserPool": {Verb: "Get", Resource: "UserPool", OutputListKey: "", OutputItemKey: "UserPool"}, + "DescribeUserPoolClient": {Verb: "Get", Resource: "UserPoolClient", OutputListKey: "", OutputItemKey: "UserPoolClient"}, + "DescribeUserPoolDomain": {Verb: "Get", Resource: "UserPoolDomain", OutputListKey: "", OutputItemKey: "DomainDescription"}, + "GetCSVHeader": {Verb: "Get", Resource: "CSVHeader", OutputListKey: "CSVHeader", OutputItemKey: ""}, + "GetDevice": {Verb: "Get", Resource: "Device", OutputListKey: "", OutputItemKey: "Device"}, + "GetGroup": {Verb: "Get", Resource: "Group", OutputListKey: "", OutputItemKey: "Group"}, + "GetIdentityProviderByIdentifier": {Verb: "Get", Resource: "IdentityProviderByIdentifier", OutputListKey: "", OutputItemKey: "IdentityProvider"}, + "GetLogDeliveryConfiguration": {Verb: "Get", Resource: "LogDeliveryConfiguration", OutputListKey: "", OutputItemKey: "LogDeliveryConfiguration"}, + "GetSigningCertificate": {Verb: "Get", Resource: "SigningCertificate", OutputListKey: "", OutputItemKey: ""}, + "GetTokensFromRefreshToken": {Verb: "Get", Resource: "TokensFromRefreshToken", OutputListKey: "", OutputItemKey: "AuthenticationResult"}, + "GetUICustomization": {Verb: "Get", Resource: "UICustomization", OutputListKey: "", OutputItemKey: "UICustomization"}, + "GetUser": {Verb: "Get", Resource: "User", OutputListKey: "MFAOptions", OutputItemKey: ""}, + "GetUserAttributeVerificationCode": {Verb: "Get", Resource: "UserAttributeVerificationCode", OutputListKey: "", OutputItemKey: "CodeDeliveryDetails"}, + "GetUserAuthFactors": {Verb: "Get", Resource: "UserAuthFactor", OutputListKey: "ConfiguredUserAuthFactors", OutputItemKey: ""}, + "GetUserPoolMfaConfig": {Verb: "Get", Resource: "UserPoolMfaConfig", OutputListKey: "", OutputItemKey: "EmailMfaConfiguration"}, + "ListDevices": {Verb: "List", Resource: "Device", OutputListKey: "Devices", OutputItemKey: ""}, + "ListGroups": {Verb: "List", Resource: "Group", OutputListKey: "Groups", OutputItemKey: ""}, + "ListIdentityProviders": {Verb: "List", Resource: "IdentityProvider", OutputListKey: "Providers", OutputItemKey: ""}, + "ListResourceServers": {Verb: "List", Resource: "ResourceServer", OutputListKey: "ResourceServers", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "ListTerms": {Verb: "List", Resource: "Term", OutputListKey: "Terms", OutputItemKey: ""}, + "ListUserImportJobs": {Verb: "List", Resource: "UserImportJob", OutputListKey: "UserImportJobs", OutputItemKey: ""}, + "ListUserPoolClientSecrets": {Verb: "List", Resource: "UserPoolClientSecret", OutputListKey: "ClientSecrets", OutputItemKey: ""}, + "ListUserPoolClients": {Verb: "List", Resource: "UserPoolClient", OutputListKey: "UserPoolClients", OutputItemKey: ""}, + "ListUserPools": {Verb: "List", Resource: "UserPool", OutputListKey: "UserPools", OutputItemKey: ""}, + "ListUsers": {Verb: "List", Resource: "User", OutputListKey: "Users", OutputItemKey: ""}, + "ListUsersInGroup": {Verb: "List", Resource: "UsersInGroup", OutputListKey: "Users", OutputItemKey: ""}, + "ListWebAuthnCredentials": {Verb: "List", Resource: "WebAuthnCredential", OutputListKey: "Credentials", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAuthEventFeedback": {Verb: "Update", Resource: "AuthEventFeedback", OutputListKey: "", OutputItemKey: ""}, + "UpdateDeviceStatus": {Verb: "Update", Resource: "DeviceStatu", OutputListKey: "", OutputItemKey: ""}, + "UpdateGroup": {Verb: "Update", Resource: "Group", OutputListKey: "", OutputItemKey: "Group"}, + "UpdateIdentityProvider": {Verb: "Update", Resource: "IdentityProvider", OutputListKey: "", OutputItemKey: "IdentityProvider"}, + "UpdateManagedLoginBranding": {Verb: "Update", Resource: "ManagedLoginBranding", OutputListKey: "", OutputItemKey: "ManagedLoginBranding"}, + "UpdateResourceServer": {Verb: "Update", Resource: "ResourceServer", OutputListKey: "", OutputItemKey: "ResourceServer"}, + "UpdateTerms": {Verb: "Update", Resource: "Term", OutputListKey: "", OutputItemKey: "Terms"}, + "UpdateUserAttributes": {Verb: "Update", Resource: "UserAttribute", OutputListKey: "CodeDeliveryDetailsList", OutputItemKey: ""}, + "UpdateUserPool": {Verb: "Update", Resource: "UserPool", OutputListKey: "", OutputItemKey: ""}, + "UpdateUserPoolClient": {Verb: "Update", Resource: "UserPoolClient", OutputListKey: "", OutputItemKey: "UserPoolClient"}, + "UpdateUserPoolDomain": {Verb: "Update", Resource: "UserPoolDomain", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("configservice", map[string]crud.OpMeta{ + "BatchGetAggregateResourceConfig": {Verb: "List", Resource: "AggregateResourceConfig", OutputListKey: "BaseConfigurationItems", OutputItemKey: ""}, + "BatchGetResourceConfig": {Verb: "List", Resource: "ResourceConfig", OutputListKey: "baseConfigurationItems", OutputItemKey: ""}, + "DeleteAggregationAuthorization": {Verb: "Delete", Resource: "AggregationAuthorization", OutputListKey: "", OutputItemKey: ""}, + "DeleteConfigRule": {Verb: "Delete", Resource: "ConfigRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteConfigurationAggregator": {Verb: "Delete", Resource: "ConfigurationAggregator", OutputListKey: "", OutputItemKey: ""}, + "DeleteConfigurationRecorder": {Verb: "Delete", Resource: "ConfigurationRecorder", OutputListKey: "", OutputItemKey: ""}, + "DeleteConformancePack": {Verb: "Delete", Resource: "ConformancePack", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeliveryChannel": {Verb: "Delete", Resource: "DeliveryChannel", OutputListKey: "", OutputItemKey: ""}, + "DeleteEvaluationResults": {Verb: "Delete", Resource: "EvaluationResult", OutputListKey: "", OutputItemKey: ""}, + "DeleteOrganizationConfigRule": {Verb: "Delete", Resource: "OrganizationConfigRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteOrganizationConformancePack": {Verb: "Delete", Resource: "OrganizationConformancePack", OutputListKey: "", OutputItemKey: ""}, + "DeletePendingAggregationRequest": {Verb: "Delete", Resource: "PendingAggregationRequest", OutputListKey: "", OutputItemKey: ""}, + "DeleteRemediationConfiguration": {Verb: "Delete", Resource: "RemediationConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteRemediationExceptions": {Verb: "Delete", Resource: "RemediationException", OutputListKey: "FailedBatches", OutputItemKey: ""}, + "DeleteResourceConfig": {Verb: "Delete", Resource: "ResourceConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteRetentionConfiguration": {Verb: "Delete", Resource: "RetentionConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteServiceLinkedConfigurationRecorder": {Verb: "Delete", Resource: "ServiceLinkedConfigurationRecorder", OutputListKey: "", OutputItemKey: ""}, + "DeleteStoredQuery": {Verb: "Delete", Resource: "StoredQuery", OutputListKey: "", OutputItemKey: ""}, + "DescribeAggregateComplianceByConfigRules": {Verb: "Get", Resource: "AggregateComplianceByConfigRule", OutputListKey: "AggregateComplianceByConfigRules", OutputItemKey: ""}, + "DescribeAggregateComplianceByConformancePacks": {Verb: "Get", Resource: "AggregateComplianceByConformancePack", OutputListKey: "AggregateComplianceByConformancePacks", OutputItemKey: ""}, + "DescribeAggregationAuthorizations": {Verb: "Get", Resource: "AggregationAuthorization", OutputListKey: "AggregationAuthorizations", OutputItemKey: ""}, + "DescribeComplianceByConfigRule": {Verb: "Get", Resource: "ComplianceByConfigRule", OutputListKey: "ComplianceByConfigRules", OutputItemKey: ""}, + "DescribeComplianceByResource": {Verb: "Get", Resource: "ComplianceByResource", OutputListKey: "ComplianceByResources", OutputItemKey: ""}, + "DescribeConfigRuleEvaluationStatus": {Verb: "Get", Resource: "ConfigRuleEvaluationStatu", OutputListKey: "ConfigRulesEvaluationStatus", OutputItemKey: ""}, + "DescribeConfigRules": {Verb: "Get", Resource: "ConfigRule", OutputListKey: "ConfigRules", OutputItemKey: ""}, + "DescribeConfigurationAggregatorSourcesStatus": {Verb: "Get", Resource: "ConfigurationAggregatorSourcesStatu", OutputListKey: "AggregatedSourceStatusList", OutputItemKey: ""}, + "DescribeConfigurationAggregators": {Verb: "Get", Resource: "ConfigurationAggregator", OutputListKey: "ConfigurationAggregators", OutputItemKey: ""}, + "DescribeConfigurationRecorderStatus": {Verb: "Get", Resource: "ConfigurationRecorderStatu", OutputListKey: "ConfigurationRecordersStatus", OutputItemKey: ""}, + "DescribeConfigurationRecorders": {Verb: "Get", Resource: "ConfigurationRecorder", OutputListKey: "ConfigurationRecorders", OutputItemKey: ""}, + "DescribeConformancePackCompliance": {Verb: "Get", Resource: "ConformancePackCompliance", OutputListKey: "ConformancePackRuleComplianceList", OutputItemKey: ""}, + "DescribeConformancePackStatus": {Verb: "Get", Resource: "ConformancePackStatu", OutputListKey: "ConformancePackStatusDetails", OutputItemKey: ""}, + "DescribeConformancePacks": {Verb: "Get", Resource: "ConformancePack", OutputListKey: "ConformancePackDetails", OutputItemKey: ""}, + "DescribeDeliveryChannelStatus": {Verb: "Get", Resource: "DeliveryChannelStatu", OutputListKey: "DeliveryChannelsStatus", OutputItemKey: ""}, + "DescribeDeliveryChannels": {Verb: "Get", Resource: "DeliveryChannel", OutputListKey: "DeliveryChannels", OutputItemKey: ""}, + "DescribeOrganizationConfigRuleStatuses": {Verb: "Get", Resource: "OrganizationConfigRuleStatuse", OutputListKey: "OrganizationConfigRuleStatuses", OutputItemKey: ""}, + "DescribeOrganizationConfigRules": {Verb: "Get", Resource: "OrganizationConfigRule", OutputListKey: "OrganizationConfigRules", OutputItemKey: ""}, + "DescribeOrganizationConformancePackStatuses": {Verb: "Get", Resource: "OrganizationConformancePackStatuse", OutputListKey: "OrganizationConformancePackStatuses", OutputItemKey: ""}, + "DescribeOrganizationConformancePacks": {Verb: "Get", Resource: "OrganizationConformancePack", OutputListKey: "OrganizationConformancePacks", OutputItemKey: ""}, + "DescribePendingAggregationRequests": {Verb: "Get", Resource: "PendingAggregationRequest", OutputListKey: "PendingAggregationRequests", OutputItemKey: ""}, + "DescribeRemediationConfigurations": {Verb: "Get", Resource: "RemediationConfiguration", OutputListKey: "RemediationConfigurations", OutputItemKey: ""}, + "DescribeRemediationExceptions": {Verb: "Get", Resource: "RemediationException", OutputListKey: "RemediationExceptions", OutputItemKey: ""}, + "DescribeRemediationExecutionStatus": {Verb: "Get", Resource: "RemediationExecutionStatu", OutputListKey: "RemediationExecutionStatuses", OutputItemKey: ""}, + "DescribeRetentionConfigurations": {Verb: "Get", Resource: "RetentionConfiguration", OutputListKey: "RetentionConfigurations", OutputItemKey: ""}, + "GetAggregateComplianceDetailsByConfigRule": {Verb: "Get", Resource: "AggregateComplianceDetailsByConfigRule", OutputListKey: "AggregateEvaluationResults", OutputItemKey: ""}, + "GetAggregateConfigRuleComplianceSummary": {Verb: "Get", Resource: "AggregateConfigRuleComplianceSummary", OutputListKey: "AggregateComplianceCounts", OutputItemKey: ""}, + "GetAggregateConformancePackComplianceSummary": {Verb: "Get", Resource: "AggregateConformancePackComplianceSummary", OutputListKey: "AggregateConformancePackComplianceSummaries", OutputItemKey: ""}, + "GetAggregateDiscoveredResourceCounts": {Verb: "Get", Resource: "AggregateDiscoveredResourceCount", OutputListKey: "GroupedResourceCounts", OutputItemKey: ""}, + "GetAggregateResourceConfig": {Verb: "Get", Resource: "AggregateResourceConfig", OutputListKey: "", OutputItemKey: "ConfigurationItem"}, + "GetComplianceDetailsByConfigRule": {Verb: "Get", Resource: "ComplianceDetailsByConfigRule", OutputListKey: "EvaluationResults", OutputItemKey: ""}, + "GetComplianceDetailsByResource": {Verb: "Get", Resource: "ComplianceDetailsByResource", OutputListKey: "EvaluationResults", OutputItemKey: ""}, + "GetComplianceSummaryByConfigRule": {Verb: "Get", Resource: "ComplianceSummaryByConfigRule", OutputListKey: "", OutputItemKey: "ComplianceSummary"}, + "GetComplianceSummaryByResourceType": {Verb: "Get", Resource: "ComplianceSummaryByResourceType", OutputListKey: "ComplianceSummariesByResourceType", OutputItemKey: ""}, + "GetConformancePackComplianceDetails": {Verb: "Get", Resource: "ConformancePackComplianceDetail", OutputListKey: "ConformancePackRuleEvaluationResults", OutputItemKey: ""}, + "GetConformancePackComplianceSummary": {Verb: "Get", Resource: "ConformancePackComplianceSummary", OutputListKey: "ConformancePackComplianceSummaryList", OutputItemKey: ""}, + "GetCustomRulePolicy": {Verb: "Get", Resource: "CustomRulePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetDiscoveredResourceCounts": {Verb: "Get", Resource: "DiscoveredResourceCount", OutputListKey: "resourceCounts", OutputItemKey: ""}, + "GetOrganizationConfigRuleDetailedStatus": {Verb: "Get", Resource: "OrganizationConfigRuleDetailedStatu", OutputListKey: "OrganizationConfigRuleDetailedStatus", OutputItemKey: ""}, + "GetOrganizationConformancePackDetailedStatus": {Verb: "Get", Resource: "OrganizationConformancePackDetailedStatu", OutputListKey: "OrganizationConformancePackDetailedStatuses", OutputItemKey: ""}, + "GetOrganizationCustomRulePolicy": {Verb: "Get", Resource: "OrganizationCustomRulePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetResourceConfigHistory": {Verb: "Get", Resource: "ResourceConfigHistory", OutputListKey: "configurationItems", OutputItemKey: ""}, + "GetResourceEvaluationSummary": {Verb: "Get", Resource: "ResourceEvaluationSummary", OutputListKey: "", OutputItemKey: "EvaluationContext"}, + "GetStoredQuery": {Verb: "Get", Resource: "StoredQuery", OutputListKey: "", OutputItemKey: "StoredQuery"}, + "ListAggregateDiscoveredResources": {Verb: "List", Resource: "AggregateDiscoveredResource", OutputListKey: "ResourceIdentifiers", OutputItemKey: ""}, + "ListConfigurationRecorders": {Verb: "List", Resource: "ConfigurationRecorder", OutputListKey: "ConfigurationRecorderSummaries", OutputItemKey: ""}, + "ListConformancePackComplianceScores": {Verb: "List", Resource: "ConformancePackComplianceScore", OutputListKey: "ConformancePackComplianceScores", OutputItemKey: ""}, + "ListDiscoveredResources": {Verb: "List", Resource: "DiscoveredResource", OutputListKey: "resourceIdentifiers", OutputItemKey: ""}, + "ListResourceEvaluations": {Verb: "List", Resource: "ResourceEvaluation", OutputListKey: "ResourceEvaluations", OutputItemKey: ""}, + "ListStoredQueries": {Verb: "List", Resource: "StoredQuery", OutputListKey: "StoredQueryMetadata", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "PutAggregationAuthorization": {Verb: "Update", Resource: "AggregationAuthorization", OutputListKey: "", OutputItemKey: "AggregationAuthorization"}, + "PutConfigRule": {Verb: "Update", Resource: "ConfigRule", OutputListKey: "", OutputItemKey: ""}, + "PutConfigurationAggregator": {Verb: "Update", Resource: "ConfigurationAggregator", OutputListKey: "", OutputItemKey: "ConfigurationAggregator"}, + "PutConfigurationRecorder": {Verb: "Update", Resource: "ConfigurationRecorder", OutputListKey: "", OutputItemKey: ""}, + "PutConformancePack": {Verb: "Update", Resource: "ConformancePack", OutputListKey: "", OutputItemKey: ""}, + "PutDeliveryChannel": {Verb: "Update", Resource: "DeliveryChannel", OutputListKey: "", OutputItemKey: ""}, + "PutEvaluations": {Verb: "Update", Resource: "Evaluation", OutputListKey: "FailedEvaluations", OutputItemKey: ""}, + "PutExternalEvaluation": {Verb: "Update", Resource: "ExternalEvaluation", OutputListKey: "", OutputItemKey: ""}, + "PutOrganizationConfigRule": {Verb: "Update", Resource: "OrganizationConfigRule", OutputListKey: "", OutputItemKey: ""}, + "PutOrganizationConformancePack": {Verb: "Update", Resource: "OrganizationConformancePack", OutputListKey: "", OutputItemKey: ""}, + "PutRemediationConfigurations": {Verb: "Update", Resource: "RemediationConfiguration", OutputListKey: "FailedBatches", OutputItemKey: ""}, + "PutRemediationExceptions": {Verb: "Update", Resource: "RemediationException", OutputListKey: "FailedBatches", OutputItemKey: ""}, + "PutResourceConfig": {Verb: "Update", Resource: "ResourceConfig", OutputListKey: "", OutputItemKey: ""}, + "PutRetentionConfiguration": {Verb: "Update", Resource: "RetentionConfiguration", OutputListKey: "", OutputItemKey: "RetentionConfiguration"}, + "PutServiceLinkedConfigurationRecorder": {Verb: "Update", Resource: "ServiceLinkedConfigurationRecorder", OutputListKey: "", OutputItemKey: ""}, + "PutStoredQuery": {Verb: "Update", Resource: "StoredQuery", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("costexplorer", map[string]crud.OpMeta{ + "CreateAnomalyMonitor": {Verb: "Create", Resource: "AnomalyMonitor", OutputListKey: "", OutputItemKey: ""}, + "CreateAnomalySubscription": {Verb: "Create", Resource: "AnomalySubscription", OutputListKey: "", OutputItemKey: ""}, + "CreateCostCategoryDefinition": {Verb: "Create", Resource: "CostCategoryDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteAnomalyMonitor": {Verb: "Delete", Resource: "AnomalyMonitor", OutputListKey: "", OutputItemKey: ""}, + "DeleteAnomalySubscription": {Verb: "Delete", Resource: "AnomalySubscription", OutputListKey: "", OutputItemKey: ""}, + "DeleteCostCategoryDefinition": {Verb: "Delete", Resource: "CostCategoryDefinition", OutputListKey: "", OutputItemKey: ""}, + "DescribeCostCategoryDefinition": {Verb: "Get", Resource: "CostCategoryDefinition", OutputListKey: "", OutputItemKey: "CostCategory"}, + "GetAnomalies": {Verb: "Get", Resource: "Anomaly", OutputListKey: "Anomalies", OutputItemKey: ""}, + "GetAnomalyMonitors": {Verb: "Get", Resource: "AnomalyMonitor", OutputListKey: "AnomalyMonitors", OutputItemKey: ""}, + "GetAnomalySubscriptions": {Verb: "Get", Resource: "AnomalySubscription", OutputListKey: "AnomalySubscriptions", OutputItemKey: ""}, + "GetApproximateUsageRecords": {Verb: "Get", Resource: "ApproximateUsageRecord", OutputListKey: "", OutputItemKey: "LookbackPeriod"}, + "GetCommitmentPurchaseAnalysis": {Verb: "Get", Resource: "CommitmentPurchaseAnalysi", OutputListKey: "", OutputItemKey: "AnalysisDetails"}, + "GetCostAndUsage": {Verb: "Get", Resource: "CostAndUsage", OutputListKey: "DimensionValueAttributes", OutputItemKey: ""}, + "GetCostAndUsageComparisons": {Verb: "Get", Resource: "CostAndUsageComparison", OutputListKey: "CostAndUsageComparisons", OutputItemKey: ""}, + "GetCostAndUsageWithResources": {Verb: "Get", Resource: "CostAndUsageWithResource", OutputListKey: "DimensionValueAttributes", OutputItemKey: ""}, + "GetCostCategories": {Verb: "Get", Resource: "CostCategory", OutputListKey: "CostCategoryNames", OutputItemKey: ""}, + "GetCostComparisonDrivers": {Verb: "Get", Resource: "CostComparisonDriver", OutputListKey: "CostComparisonDrivers", OutputItemKey: ""}, + "GetCostForecast": {Verb: "Get", Resource: "CostForecast", OutputListKey: "ForecastResultsByTime", OutputItemKey: "Total"}, + "GetDimensionValues": {Verb: "Get", Resource: "DimensionValue", OutputListKey: "DimensionValues", OutputItemKey: ""}, + "GetReservationCoverage": {Verb: "Get", Resource: "ReservationCoverage", OutputListKey: "CoveragesByTime", OutputItemKey: "Total"}, + "GetReservationPurchaseRecommendation": {Verb: "Get", Resource: "ReservationPurchaseRecommendation", OutputListKey: "Recommendations", OutputItemKey: "Metadata"}, + "GetReservationUtilization": {Verb: "Get", Resource: "ReservationUtilization", OutputListKey: "UtilizationsByTime", OutputItemKey: "Total"}, + "GetRightsizingRecommendation": {Verb: "Get", Resource: "RightsizingRecommendation", OutputListKey: "RightsizingRecommendations", OutputItemKey: "Configuration"}, + "GetSavingsPlanPurchaseRecommendationDetails": {Verb: "Get", Resource: "SavingsPlanPurchaseRecommendationDetail", OutputListKey: "", OutputItemKey: "RecommendationDetailData"}, + "GetSavingsPlansCoverage": {Verb: "Get", Resource: "SavingsPlansCoverage", OutputListKey: "SavingsPlansCoverages", OutputItemKey: ""}, + "GetSavingsPlansPurchaseRecommendation": {Verb: "Get", Resource: "SavingsPlansPurchaseRecommendation", OutputListKey: "", OutputItemKey: "Metadata"}, + "GetSavingsPlansUtilization": {Verb: "Get", Resource: "SavingsPlansUtilization", OutputListKey: "SavingsPlansUtilizationsByTime", OutputItemKey: "Total"}, + "GetSavingsPlansUtilizationDetails": {Verb: "Get", Resource: "SavingsPlansUtilizationDetail", OutputListKey: "SavingsPlansUtilizationDetails", OutputItemKey: "TimePeriod"}, + "GetTags": {Verb: "Get", Resource: "Tag", OutputListKey: "Tags", OutputItemKey: ""}, + "GetUsageForecast": {Verb: "Get", Resource: "UsageForecast", OutputListKey: "ForecastResultsByTime", OutputItemKey: "Total"}, + "ListCommitmentPurchaseAnalyses": {Verb: "List", Resource: "CommitmentPurchaseAnalyse", OutputListKey: "AnalysisSummaryList", OutputItemKey: ""}, + "ListCostAllocationTagBackfillHistory": {Verb: "List", Resource: "CostAllocationTagBackfillHistory", OutputListKey: "BackfillRequests", OutputItemKey: ""}, + "ListCostAllocationTags": {Verb: "List", Resource: "CostAllocationTag", OutputListKey: "CostAllocationTags", OutputItemKey: ""}, + "ListCostCategoryDefinitions": {Verb: "List", Resource: "CostCategoryDefinition", OutputListKey: "CostCategoryReferences", OutputItemKey: ""}, + "ListCostCategoryResourceAssociations": {Verb: "List", Resource: "CostCategoryResourceAssociation", OutputListKey: "CostCategoryResourceAssociations", OutputItemKey: ""}, + "ListSavingsPlansPurchaseRecommendationGeneration": {Verb: "List", Resource: "SavingsPlansPurchaseRecommendationGeneration", OutputListKey: "GenerationSummaryList", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "ResourceTags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAnomalyMonitor": {Verb: "Update", Resource: "AnomalyMonitor", OutputListKey: "", OutputItemKey: ""}, + "UpdateAnomalySubscription": {Verb: "Update", Resource: "AnomalySubscription", OutputListKey: "", OutputItemKey: ""}, + "UpdateCostAllocationTagsStatus": {Verb: "Update", Resource: "CostAllocationTagsStatu", OutputListKey: "Errors", OutputItemKey: ""}, + "UpdateCostCategoryDefinition": {Verb: "Update", Resource: "CostCategoryDefinition", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("dynamodb", map[string]crud.OpMeta{ + "BatchGetItem": {Verb: "List", Resource: "Item", OutputListKey: "ConsumedCapacity", OutputItemKey: ""}, + "CreateBackup": {Verb: "Create", Resource: "Backup", OutputListKey: "", OutputItemKey: "BackupDetails"}, + "CreateGlobalTable": {Verb: "Create", Resource: "GlobalTable", OutputListKey: "", OutputItemKey: "GlobalTableDescription"}, + "CreateTable": {Verb: "Create", Resource: "Table", OutputListKey: "", OutputItemKey: "TableDescription"}, + "DeleteBackup": {Verb: "Delete", Resource: "Backup", OutputListKey: "", OutputItemKey: "BackupDescription"}, + "DeleteItem": {Verb: "Delete", Resource: "Item", OutputListKey: "", OutputItemKey: "ConsumedCapacity"}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteTable": {Verb: "Delete", Resource: "Table", OutputListKey: "", OutputItemKey: "TableDescription"}, + "DescribeBackup": {Verb: "Get", Resource: "Backup", OutputListKey: "", OutputItemKey: "BackupDescription"}, + "DescribeContinuousBackups": {Verb: "Get", Resource: "ContinuousBackup", OutputListKey: "", OutputItemKey: "ContinuousBackupsDescription"}, + "DescribeContributorInsights": {Verb: "Get", Resource: "ContributorInsight", OutputListKey: "ContributorInsightsRuleList", OutputItemKey: "FailureException"}, + "DescribeEndpoints": {Verb: "Get", Resource: "Endpoint", OutputListKey: "Endpoints", OutputItemKey: ""}, + "DescribeExport": {Verb: "Get", Resource: "Export", OutputListKey: "", OutputItemKey: "ExportDescription"}, + "DescribeGlobalTable": {Verb: "Get", Resource: "GlobalTable", OutputListKey: "", OutputItemKey: "GlobalTableDescription"}, + "DescribeGlobalTableSettings": {Verb: "Get", Resource: "GlobalTableSetting", OutputListKey: "ReplicaSettings", OutputItemKey: ""}, + "DescribeImport": {Verb: "Get", Resource: "Import", OutputListKey: "", OutputItemKey: "ImportTableDescription"}, + "DescribeKinesisStreamingDestination": {Verb: "Get", Resource: "KinesisStreamingDestination", OutputListKey: "KinesisDataStreamDestinations", OutputItemKey: ""}, + "DescribeLimits": {Verb: "Get", Resource: "Limit", OutputListKey: "", OutputItemKey: ""}, + "DescribeTable": {Verb: "Get", Resource: "Table", OutputListKey: "", OutputItemKey: "Table"}, + "DescribeTableReplicaAutoScaling": {Verb: "Get", Resource: "TableReplicaAutoScaling", OutputListKey: "", OutputItemKey: "TableAutoScalingDescription"}, + "DescribeTimeToLive": {Verb: "Get", Resource: "TimeToLive", OutputListKey: "", OutputItemKey: "TimeToLiveDescription"}, + "GetItem": {Verb: "Get", Resource: "Item", OutputListKey: "", OutputItemKey: "ConsumedCapacity"}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "ListBackups": {Verb: "List", Resource: "Backup", OutputListKey: "BackupSummaries", OutputItemKey: ""}, + "ListContributorInsights": {Verb: "List", Resource: "ContributorInsight", OutputListKey: "ContributorInsightsSummaries", OutputItemKey: ""}, + "ListExports": {Verb: "List", Resource: "Export", OutputListKey: "ExportSummaries", OutputItemKey: ""}, + "ListGlobalTables": {Verb: "List", Resource: "GlobalTable", OutputListKey: "GlobalTables", OutputItemKey: ""}, + "ListImports": {Verb: "List", Resource: "Import", OutputListKey: "ImportSummaryList", OutputItemKey: ""}, + "ListTables": {Verb: "List", Resource: "Table", OutputListKey: "TableNames", OutputItemKey: ""}, + "ListTagsOfResource": {Verb: "List", Resource: "TagsOfResource", OutputListKey: "Tags", OutputItemKey: ""}, + "PutItem": {Verb: "Update", Resource: "Item", OutputListKey: "", OutputItemKey: "ConsumedCapacity"}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateContinuousBackups": {Verb: "Update", Resource: "ContinuousBackup", OutputListKey: "", OutputItemKey: "ContinuousBackupsDescription"}, + "UpdateContributorInsights": {Verb: "Update", Resource: "ContributorInsight", OutputListKey: "", OutputItemKey: ""}, + "UpdateGlobalTable": {Verb: "Update", Resource: "GlobalTable", OutputListKey: "", OutputItemKey: "GlobalTableDescription"}, + "UpdateGlobalTableSettings": {Verb: "Update", Resource: "GlobalTableSetting", OutputListKey: "ReplicaSettings", OutputItemKey: ""}, + "UpdateItem": {Verb: "Update", Resource: "Item", OutputListKey: "", OutputItemKey: "ConsumedCapacity"}, + "UpdateKinesisStreamingDestination": {Verb: "Update", Resource: "KinesisStreamingDestination", OutputListKey: "", OutputItemKey: "UpdateKinesisStreamingConfiguration"}, + "UpdateTable": {Verb: "Update", Resource: "Table", OutputListKey: "", OutputItemKey: "TableDescription"}, + "UpdateTableReplicaAutoScaling": {Verb: "Update", Resource: "TableReplicaAutoScaling", OutputListKey: "", OutputItemKey: "TableAutoScalingDescription"}, + "UpdateTimeToLive": {Verb: "Update", Resource: "TimeToLive", OutputListKey: "", OutputItemKey: "TimeToLiveSpecification"}, + }) + crud.Register("dynamodbstreams", map[string]crud.OpMeta{ + "DescribeStream": {Verb: "Get", Resource: "Stream", OutputListKey: "", OutputItemKey: "StreamDescription"}, + "GetRecords": {Verb: "Get", Resource: "Record", OutputListKey: "Records", OutputItemKey: ""}, + "GetShardIterator": {Verb: "Get", Resource: "ShardIterator", OutputListKey: "", OutputItemKey: ""}, + "ListStreams": {Verb: "List", Resource: "Stream", OutputListKey: "Streams", OutputItemKey: ""}, + }) + crud.Register("ecr", map[string]crud.OpMeta{ + "BatchGetImage": {Verb: "List", Resource: "Image", OutputListKey: "failures", OutputItemKey: ""}, + "BatchGetRepositoryScanningConfiguration": {Verb: "List", Resource: "RepositoryScanningConfiguration", OutputListKey: "failures", OutputItemKey: ""}, + "CreatePullThroughCacheRule": {Verb: "Create", Resource: "PullThroughCacheRule", OutputListKey: "", OutputItemKey: ""}, + "CreateRepository": {Verb: "Create", Resource: "Repository", OutputListKey: "", OutputItemKey: "repository"}, + "CreateRepositoryCreationTemplate": {Verb: "Create", Resource: "RepositoryCreationTemplate", OutputListKey: "", OutputItemKey: "repositoryCreationTemplate"}, + "DeleteLifecyclePolicy": {Verb: "Delete", Resource: "LifecyclePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeletePullThroughCacheRule": {Verb: "Delete", Resource: "PullThroughCacheRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteRegistryPolicy": {Verb: "Delete", Resource: "RegistryPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteRepository": {Verb: "Delete", Resource: "Repository", OutputListKey: "", OutputItemKey: "repository"}, + "DeleteRepositoryCreationTemplate": {Verb: "Delete", Resource: "RepositoryCreationTemplate", OutputListKey: "", OutputItemKey: "repositoryCreationTemplate"}, + "DeleteRepositoryPolicy": {Verb: "Delete", Resource: "RepositoryPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteSigningConfiguration": {Verb: "Delete", Resource: "SigningConfiguration", OutputListKey: "", OutputItemKey: "signingConfiguration"}, + "DeregisterPullTimeUpdateExclusion": {Verb: "Delete", Resource: "PullTimeUpdateExclusion", OutputListKey: "", OutputItemKey: ""}, + "DescribeImageReplicationStatus": {Verb: "Get", Resource: "ImageReplicationStatu", OutputListKey: "replicationStatuses", OutputItemKey: "imageId"}, + "DescribeImageScanFindings": {Verb: "Get", Resource: "ImageScanFinding", OutputListKey: "", OutputItemKey: "imageId"}, + "DescribeImageSigningStatus": {Verb: "Get", Resource: "ImageSigningStatu", OutputListKey: "signingStatuses", OutputItemKey: "imageId"}, + "DescribeImages": {Verb: "Get", Resource: "Image", OutputListKey: "imageDetails", OutputItemKey: ""}, + "DescribePullThroughCacheRules": {Verb: "Get", Resource: "PullThroughCacheRule", OutputListKey: "pullThroughCacheRules", OutputItemKey: ""}, + "DescribeRegistry": {Verb: "Get", Resource: "Registry", OutputListKey: "", OutputItemKey: "replicationConfiguration"}, + "DescribeRepositories": {Verb: "Get", Resource: "Repository", OutputListKey: "repositories", OutputItemKey: ""}, + "DescribeRepositoryCreationTemplates": {Verb: "Get", Resource: "RepositoryCreationTemplate", OutputListKey: "repositoryCreationTemplates", OutputItemKey: ""}, + "GetAccountSetting": {Verb: "Get", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: ""}, + "GetAuthorizationToken": {Verb: "Get", Resource: "AuthorizationToken", OutputListKey: "authorizationData", OutputItemKey: ""}, + "GetDownloadUrlForLayer": {Verb: "Get", Resource: "DownloadUrlForLayer", OutputListKey: "", OutputItemKey: ""}, + "GetLifecyclePolicy": {Verb: "Get", Resource: "LifecyclePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetLifecyclePolicyPreview": {Verb: "Get", Resource: "LifecyclePolicyPreview", OutputListKey: "previewResults", OutputItemKey: "summary"}, + "GetRegistryPolicy": {Verb: "Get", Resource: "RegistryPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetRegistryScanningConfiguration": {Verb: "Get", Resource: "RegistryScanningConfiguration", OutputListKey: "", OutputItemKey: "scanningConfiguration"}, + "GetRepositoryPolicy": {Verb: "Get", Resource: "RepositoryPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetSigningConfiguration": {Verb: "Get", Resource: "SigningConfiguration", OutputListKey: "", OutputItemKey: "signingConfiguration"}, + "ListImageReferrers": {Verb: "List", Resource: "ImageReferrer", OutputListKey: "referrers", OutputItemKey: ""}, + "ListImages": {Verb: "List", Resource: "Image", OutputListKey: "imageIds", OutputItemKey: ""}, + "ListPullTimeUpdateExclusions": {Verb: "List", Resource: "PullTimeUpdateExclusion", OutputListKey: "pullTimeUpdateExclusions", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "tags", OutputItemKey: ""}, + "PutAccountSetting": {Verb: "Update", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: ""}, + "PutImage": {Verb: "Update", Resource: "Image", OutputListKey: "", OutputItemKey: "image"}, + "PutImageScanningConfiguration": {Verb: "Update", Resource: "ImageScanningConfiguration", OutputListKey: "", OutputItemKey: "imageScanningConfiguration"}, + "PutImageTagMutability": {Verb: "Update", Resource: "ImageTagMutability", OutputListKey: "imageTagMutabilityExclusionFilters", OutputItemKey: ""}, + "PutLifecyclePolicy": {Verb: "Update", Resource: "LifecyclePolicy", OutputListKey: "", OutputItemKey: ""}, + "PutRegistryPolicy": {Verb: "Update", Resource: "RegistryPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutRegistryScanningConfiguration": {Verb: "Update", Resource: "RegistryScanningConfiguration", OutputListKey: "", OutputItemKey: "registryScanningConfiguration"}, + "PutReplicationConfiguration": {Verb: "Update", Resource: "ReplicationConfiguration", OutputListKey: "", OutputItemKey: "replicationConfiguration"}, + "PutSigningConfiguration": {Verb: "Update", Resource: "SigningConfiguration", OutputListKey: "", OutputItemKey: "signingConfiguration"}, + "RegisterPullTimeUpdateExclusion": {Verb: "Create", Resource: "PullTimeUpdateExclusion", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateImageStorageClass": {Verb: "Update", Resource: "ImageStorageClass", OutputListKey: "", OutputItemKey: "imageId"}, + "UpdatePullThroughCacheRule": {Verb: "Update", Resource: "PullThroughCacheRule", OutputListKey: "", OutputItemKey: ""}, + "UpdateRepositoryCreationTemplate": {Verb: "Update", Resource: "RepositoryCreationTemplate", OutputListKey: "", OutputItemKey: "repositoryCreationTemplate"}, + }) + crud.Register("ecs", map[string]crud.OpMeta{ + "DeleteAccountSetting": {Verb: "Delete", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: "setting"}, + "DeregisterTaskDefinition": {Verb: "Delete", Resource: "TaskDefinition", OutputListKey: "", OutputItemKey: "taskDefinition"}, + "DescribeTaskDefinition": {Verb: "Get", Resource: "TaskDefinition", OutputListKey: "tags", OutputItemKey: "taskDefinition"}, + "ListAccountSettings": {Verb: "List", Resource: "AccountSetting", OutputListKey: "settings", OutputItemKey: ""}, + "ListServicesByNamespace": {Verb: "List", Resource: "ServicesByNamespace", OutputListKey: "serviceArns", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "tags", OutputItemKey: ""}, + "ListTaskDefinitionFamilies": {Verb: "List", Resource: "TaskDefinitionFamily", OutputListKey: "families", OutputItemKey: ""}, + "PutAccountSetting": {Verb: "Update", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: "setting"}, + "PutAccountSettingDefault": {Verb: "Update", Resource: "AccountSettingDefault", OutputListKey: "", OutputItemKey: "setting"}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("emr", map[string]crud.OpMeta{ + "CreatePersistentAppUI": {Verb: "Create", Resource: "PersistentAppUI", OutputListKey: "", OutputItemKey: ""}, + "CreateSecurityConfiguration": {Verb: "Create", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: ""}, + "CreateStudio": {Verb: "Create", Resource: "Studio", OutputListKey: "", OutputItemKey: ""}, + "CreateStudioSessionMapping": {Verb: "Create", Resource: "StudioSessionMapping", OutputListKey: "", OutputItemKey: ""}, + "DeleteSecurityConfiguration": {Verb: "Delete", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteStudio": {Verb: "Delete", Resource: "Studio", OutputListKey: "", OutputItemKey: ""}, + "DeleteStudioSessionMapping": {Verb: "Delete", Resource: "StudioSessionMapping", OutputListKey: "", OutputItemKey: ""}, + "DescribeCluster": {Verb: "Get", Resource: "Cluster", OutputListKey: "", OutputItemKey: "Cluster"}, + "DescribeJobFlows": {Verb: "Get", Resource: "JobFlow", OutputListKey: "JobFlows", OutputItemKey: ""}, + "DescribeNotebookExecution": {Verb: "Get", Resource: "NotebookExecution", OutputListKey: "", OutputItemKey: "NotebookExecution"}, + "DescribePersistentAppUI": {Verb: "Get", Resource: "PersistentAppUI", OutputListKey: "", OutputItemKey: "PersistentAppUI"}, + "DescribeReleaseLabel": {Verb: "Get", Resource: "ReleaseLabel", OutputListKey: "Applications", OutputItemKey: ""}, + "DescribeSecurityConfiguration": {Verb: "Get", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DescribeStep": {Verb: "Get", Resource: "Step", OutputListKey: "", OutputItemKey: "Step"}, + "DescribeStudio": {Verb: "Get", Resource: "Studio", OutputListKey: "", OutputItemKey: "Studio"}, + "GetAutoTerminationPolicy": {Verb: "Get", Resource: "AutoTerminationPolicy", OutputListKey: "", OutputItemKey: "AutoTerminationPolicy"}, + "GetBlockPublicAccessConfiguration": {Verb: "Get", Resource: "BlockPublicAccessConfiguration", OutputListKey: "", OutputItemKey: "BlockPublicAccessConfiguration"}, + "GetClusterSessionCredentials": {Verb: "Get", Resource: "ClusterSessionCredential", OutputListKey: "", OutputItemKey: ""}, + "GetManagedScalingPolicy": {Verb: "Get", Resource: "ManagedScalingPolicy", OutputListKey: "", OutputItemKey: "ManagedScalingPolicy"}, + "GetOnClusterAppUIPresignedURL": {Verb: "Get", Resource: "OnClusterAppUIPresignedURL", OutputListKey: "", OutputItemKey: ""}, + "GetPersistentAppUIPresignedURL": {Verb: "Get", Resource: "PersistentAppUIPresignedURL", OutputListKey: "", OutputItemKey: ""}, + "GetStudioSessionMapping": {Verb: "Get", Resource: "StudioSessionMapping", OutputListKey: "", OutputItemKey: "SessionMapping"}, + "ListBootstrapActions": {Verb: "List", Resource: "BootstrapAction", OutputListKey: "BootstrapActions", OutputItemKey: ""}, + "ListClusters": {Verb: "List", Resource: "Cluster", OutputListKey: "Clusters", OutputItemKey: ""}, + "ListInstanceFleets": {Verb: "List", Resource: "InstanceFleet", OutputListKey: "InstanceFleets", OutputItemKey: ""}, + "ListInstanceGroups": {Verb: "List", Resource: "InstanceGroup", OutputListKey: "InstanceGroups", OutputItemKey: ""}, + "ListInstances": {Verb: "List", Resource: "Instance", OutputListKey: "Instances", OutputItemKey: ""}, + "ListNotebookExecutions": {Verb: "List", Resource: "NotebookExecution", OutputListKey: "NotebookExecutions", OutputItemKey: ""}, + "ListReleaseLabels": {Verb: "List", Resource: "ReleaseLabel", OutputListKey: "ReleaseLabels", OutputItemKey: ""}, + "ListSecurityConfigurations": {Verb: "List", Resource: "SecurityConfiguration", OutputListKey: "SecurityConfigurations", OutputItemKey: ""}, + "ListSteps": {Verb: "List", Resource: "Step", OutputListKey: "Steps", OutputItemKey: ""}, + "ListStudioSessionMappings": {Verb: "List", Resource: "StudioSessionMapping", OutputListKey: "SessionMappings", OutputItemKey: ""}, + "ListStudios": {Verb: "List", Resource: "Studio", OutputListKey: "Studios", OutputItemKey: ""}, + "ListSupportedInstanceTypes": {Verb: "List", Resource: "SupportedInstanceType", OutputListKey: "SupportedInstanceTypes", OutputItemKey: ""}, + "ModifyCluster": {Verb: "Update", Resource: "Cluster", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceFleet": {Verb: "Update", Resource: "InstanceFleet", OutputListKey: "", OutputItemKey: ""}, + "ModifyInstanceGroups": {Verb: "Update", Resource: "InstanceGroup", OutputListKey: "", OutputItemKey: ""}, + "PutAutoScalingPolicy": {Verb: "Update", Resource: "AutoScalingPolicy", OutputListKey: "", OutputItemKey: "AutoScalingPolicy"}, + "PutAutoTerminationPolicy": {Verb: "Update", Resource: "AutoTerminationPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutBlockPublicAccessConfiguration": {Verb: "Update", Resource: "BlockPublicAccessConfiguration", OutputListKey: "", OutputItemKey: ""}, + "PutManagedScalingPolicy": {Verb: "Update", Resource: "ManagedScalingPolicy", OutputListKey: "", OutputItemKey: ""}, + "UpdateStudio": {Verb: "Update", Resource: "Studio", OutputListKey: "", OutputItemKey: ""}, + "UpdateStudioSessionMapping": {Verb: "Update", Resource: "StudioSessionMapping", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("eventbridge", map[string]crud.OpMeta{ + "CreateApiDestination": {Verb: "Create", Resource: "ApiDestination", OutputListKey: "", OutputItemKey: ""}, + "CreateArchive": {Verb: "Create", Resource: "Archive", OutputListKey: "", OutputItemKey: ""}, + "CreateConnection": {Verb: "Create", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "CreateEndpoint": {Verb: "Create", Resource: "Endpoint", OutputListKey: "EventBuses", OutputItemKey: "ReplicationConfig"}, + "CreateEventBus": {Verb: "Create", Resource: "EventBu", OutputListKey: "", OutputItemKey: "DeadLetterConfig"}, + "CreatePartnerEventSource": {Verb: "Create", Resource: "PartnerEventSource", OutputListKey: "", OutputItemKey: ""}, + "DeleteApiDestination": {Verb: "Delete", Resource: "ApiDestination", OutputListKey: "", OutputItemKey: ""}, + "DeleteArchive": {Verb: "Delete", Resource: "Archive", OutputListKey: "", OutputItemKey: ""}, + "DeleteConnection": {Verb: "Delete", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "DeleteEndpoint": {Verb: "Delete", Resource: "Endpoint", OutputListKey: "", OutputItemKey: ""}, + "DeleteEventBus": {Verb: "Delete", Resource: "EventBu", OutputListKey: "", OutputItemKey: ""}, + "DeletePartnerEventSource": {Verb: "Delete", Resource: "PartnerEventSource", OutputListKey: "", OutputItemKey: ""}, + "DeleteRule": {Verb: "Delete", Resource: "Rule", OutputListKey: "", OutputItemKey: ""}, + "DescribeApiDestination": {Verb: "Get", Resource: "ApiDestination", OutputListKey: "", OutputItemKey: ""}, + "DescribeArchive": {Verb: "Get", Resource: "Archive", OutputListKey: "", OutputItemKey: ""}, + "DescribeConnection": {Verb: "Get", Resource: "Connection", OutputListKey: "", OutputItemKey: "AuthParameters"}, + "DescribeEndpoint": {Verb: "Get", Resource: "Endpoint", OutputListKey: "EventBuses", OutputItemKey: "ReplicationConfig"}, + "DescribeEventBus": {Verb: "Get", Resource: "EventBu", OutputListKey: "", OutputItemKey: "DeadLetterConfig"}, + "DescribeEventSource": {Verb: "Get", Resource: "EventSource", OutputListKey: "", OutputItemKey: ""}, + "DescribePartnerEventSource": {Verb: "Get", Resource: "PartnerEventSource", OutputListKey: "", OutputItemKey: ""}, + "DescribeReplay": {Verb: "Get", Resource: "Replay", OutputListKey: "", OutputItemKey: "Destination"}, + "DescribeRule": {Verb: "Get", Resource: "Rule", OutputListKey: "", OutputItemKey: ""}, + "ListApiDestinations": {Verb: "List", Resource: "ApiDestination", OutputListKey: "ApiDestinations", OutputItemKey: ""}, + "ListArchives": {Verb: "List", Resource: "Archive", OutputListKey: "Archives", OutputItemKey: ""}, + "ListConnections": {Verb: "List", Resource: "Connection", OutputListKey: "Connections", OutputItemKey: ""}, + "ListEndpoints": {Verb: "List", Resource: "Endpoint", OutputListKey: "Endpoints", OutputItemKey: ""}, + "ListEventBuses": {Verb: "List", Resource: "EventBuse", OutputListKey: "EventBuses", OutputItemKey: ""}, + "ListEventSources": {Verb: "List", Resource: "EventSource", OutputListKey: "EventSources", OutputItemKey: ""}, + "ListPartnerEventSourceAccounts": {Verb: "List", Resource: "PartnerEventSourceAccount", OutputListKey: "PartnerEventSourceAccounts", OutputItemKey: ""}, + "ListPartnerEventSources": {Verb: "List", Resource: "PartnerEventSource", OutputListKey: "PartnerEventSources", OutputItemKey: ""}, + "ListReplays": {Verb: "List", Resource: "Replay", OutputListKey: "Replays", OutputItemKey: ""}, + "ListRuleNamesByTarget": {Verb: "List", Resource: "RuleNamesByTarget", OutputListKey: "RuleNames", OutputItemKey: ""}, + "ListRules": {Verb: "List", Resource: "Rule", OutputListKey: "Rules", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTargetsByRule": {Verb: "List", Resource: "TargetsByRule", OutputListKey: "Targets", OutputItemKey: ""}, + "PutEvents": {Verb: "Update", Resource: "Event", OutputListKey: "Entries", OutputItemKey: ""}, + "PutPartnerEvents": {Verb: "Update", Resource: "PartnerEvent", OutputListKey: "Entries", OutputItemKey: ""}, + "PutPermission": {Verb: "Update", Resource: "Permission", OutputListKey: "", OutputItemKey: ""}, + "PutRule": {Verb: "Update", Resource: "Rule", OutputListKey: "", OutputItemKey: ""}, + "PutTargets": {Verb: "Update", Resource: "Target", OutputListKey: "FailedEntries", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApiDestination": {Verb: "Update", Resource: "ApiDestination", OutputListKey: "", OutputItemKey: ""}, + "UpdateArchive": {Verb: "Update", Resource: "Archive", OutputListKey: "", OutputItemKey: ""}, + "UpdateConnection": {Verb: "Update", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "UpdateEndpoint": {Verb: "Update", Resource: "Endpoint", OutputListKey: "EventBuses", OutputItemKey: "ReplicationConfig"}, + "UpdateEventBus": {Verb: "Update", Resource: "EventBu", OutputListKey: "", OutputItemKey: "DeadLetterConfig"}, + }) + crud.Register("firehose", map[string]crud.OpMeta{ + "CreateDeliveryStream": {Verb: "Create", Resource: "DeliveryStream", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeliveryStream": {Verb: "Delete", Resource: "DeliveryStream", OutputListKey: "", OutputItemKey: ""}, + "DescribeDeliveryStream": {Verb: "Get", Resource: "DeliveryStream", OutputListKey: "", OutputItemKey: "DeliveryStreamDescription"}, + "ListDeliveryStreams": {Verb: "List", Resource: "DeliveryStream", OutputListKey: "DeliveryStreamNames", OutputItemKey: ""}, + "ListTagsForDeliveryStream": {Verb: "List", Resource: "TagsForDeliveryStream", OutputListKey: "Tags", OutputItemKey: ""}, + "PutRecord": {Verb: "Update", Resource: "Record", OutputListKey: "", OutputItemKey: ""}, + "PutRecordBatch": {Verb: "Update", Resource: "RecordBatch", OutputListKey: "RequestResponses", OutputItemKey: ""}, + "TagDeliveryStream": {Verb: "Tag", Resource: "DeliveryStream", OutputListKey: "", OutputItemKey: ""}, + "UntagDeliveryStream": {Verb: "Untag", Resource: "DeliveryStream", OutputListKey: "", OutputItemKey: ""}, + "UpdateDestination": {Verb: "Update", Resource: "Destination", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("glue", map[string]crud.OpMeta{ + "BatchGetBlueprints": {Verb: "List", Resource: "Blueprint", OutputListKey: "Blueprints", OutputItemKey: ""}, + "BatchGetCrawlers": {Verb: "List", Resource: "Crawler", OutputListKey: "Crawlers", OutputItemKey: ""}, + "BatchGetCustomEntityTypes": {Verb: "List", Resource: "CustomEntityType", OutputListKey: "CustomEntityTypes", OutputItemKey: ""}, + "BatchGetDataQualityResult": {Verb: "List", Resource: "DataQualityResult", OutputListKey: "Results", OutputItemKey: ""}, + "BatchGetDevEndpoints": {Verb: "List", Resource: "DevEndpoint", OutputListKey: "DevEndpoints", OutputItemKey: ""}, + "BatchGetJobs": {Verb: "List", Resource: "Job", OutputListKey: "Jobs", OutputItemKey: ""}, + "BatchGetPartition": {Verb: "List", Resource: "Partition", OutputListKey: "Partitions", OutputItemKey: ""}, + "BatchGetTableOptimizer": {Verb: "List", Resource: "TableOptimizer", OutputListKey: "Failures", OutputItemKey: ""}, + "BatchGetTriggers": {Verb: "List", Resource: "Trigger", OutputListKey: "Triggers", OutputItemKey: ""}, + "BatchGetWorkflows": {Verb: "List", Resource: "Workflow", OutputListKey: "MissingWorkflows", OutputItemKey: ""}, + "CreateBlueprint": {Verb: "Create", Resource: "Blueprint", OutputListKey: "", OutputItemKey: ""}, + "CreateCatalog": {Verb: "Create", Resource: "Catalog", OutputListKey: "", OutputItemKey: ""}, + "CreateClassifier": {Verb: "Create", Resource: "Classifier", OutputListKey: "", OutputItemKey: ""}, + "CreateColumnStatisticsTaskSettings": {Verb: "Create", Resource: "ColumnStatisticsTaskSetting", OutputListKey: "", OutputItemKey: ""}, + "CreateConnection": {Verb: "Create", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "CreateCrawler": {Verb: "Create", Resource: "Crawler", OutputListKey: "", OutputItemKey: ""}, + "CreateCustomEntityType": {Verb: "Create", Resource: "CustomEntityType", OutputListKey: "", OutputItemKey: ""}, + "CreateDataQualityRuleset": {Verb: "Create", Resource: "DataQualityRuleset", OutputListKey: "", OutputItemKey: ""}, + "CreateDatabase": {Verb: "Create", Resource: "Database", OutputListKey: "", OutputItemKey: ""}, + "CreateDevEndpoint": {Verb: "Create", Resource: "DevEndpoint", OutputListKey: "SecurityGroupIds", OutputItemKey: ""}, + "CreateGlueIdentityCenterConfiguration": {Verb: "Create", Resource: "GlueIdentityCenterConfiguration", OutputListKey: "", OutputItemKey: ""}, + "CreateIntegration": {Verb: "Create", Resource: "Integration", OutputListKey: "Errors", OutputItemKey: "IntegrationConfig"}, + "CreateIntegrationResourceProperty": {Verb: "Create", Resource: "IntegrationResourceProperty", OutputListKey: "", OutputItemKey: "SourceProcessingProperties"}, + "CreateIntegrationTableProperties": {Verb: "Create", Resource: "IntegrationTableProperty", OutputListKey: "", OutputItemKey: ""}, + "CreateJob": {Verb: "Create", Resource: "Job", OutputListKey: "", OutputItemKey: ""}, + "CreateMLTransform": {Verb: "Create", Resource: "MLTransform", OutputListKey: "", OutputItemKey: ""}, + "CreatePartition": {Verb: "Create", Resource: "Partition", OutputListKey: "", OutputItemKey: ""}, + "CreatePartitionIndex": {Verb: "Create", Resource: "PartitionIndex", OutputListKey: "", OutputItemKey: ""}, + "CreateRegistry": {Verb: "Create", Resource: "Registry", OutputListKey: "", OutputItemKey: ""}, + "CreateSchema": {Verb: "Create", Resource: "Schema", OutputListKey: "", OutputItemKey: ""}, + "CreateScript": {Verb: "Create", Resource: "Script", OutputListKey: "", OutputItemKey: ""}, + "CreateSecurityConfiguration": {Verb: "Create", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: ""}, + "CreateSession": {Verb: "Create", Resource: "Session", OutputListKey: "", OutputItemKey: "Session"}, + "CreateTable": {Verb: "Create", Resource: "Table", OutputListKey: "", OutputItemKey: ""}, + "CreateTableOptimizer": {Verb: "Create", Resource: "TableOptimizer", OutputListKey: "", OutputItemKey: ""}, + "CreateTrigger": {Verb: "Create", Resource: "Trigger", OutputListKey: "", OutputItemKey: ""}, + "CreateUsageProfile": {Verb: "Create", Resource: "UsageProfile", OutputListKey: "", OutputItemKey: ""}, + "CreateUserDefinedFunction": {Verb: "Create", Resource: "UserDefinedFunction", OutputListKey: "", OutputItemKey: ""}, + "CreateWorkflow": {Verb: "Create", Resource: "Workflow", OutputListKey: "", OutputItemKey: ""}, + "DeleteBlueprint": {Verb: "Delete", Resource: "Blueprint", OutputListKey: "", OutputItemKey: ""}, + "DeleteCatalog": {Verb: "Delete", Resource: "Catalog", OutputListKey: "", OutputItemKey: ""}, + "DeleteClassifier": {Verb: "Delete", Resource: "Classifier", OutputListKey: "", OutputItemKey: ""}, + "DeleteColumnStatisticsForPartition": {Verb: "Delete", Resource: "ColumnStatisticsForPartition", OutputListKey: "", OutputItemKey: ""}, + "DeleteColumnStatisticsForTable": {Verb: "Delete", Resource: "ColumnStatisticsForTable", OutputListKey: "", OutputItemKey: ""}, + "DeleteColumnStatisticsTaskSettings": {Verb: "Delete", Resource: "ColumnStatisticsTaskSetting", OutputListKey: "", OutputItemKey: ""}, + "DeleteConnection": {Verb: "Delete", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "DeleteConnectionType": {Verb: "Delete", Resource: "ConnectionType", OutputListKey: "", OutputItemKey: ""}, + "DeleteCrawler": {Verb: "Delete", Resource: "Crawler", OutputListKey: "", OutputItemKey: ""}, + "DeleteCustomEntityType": {Verb: "Delete", Resource: "CustomEntityType", OutputListKey: "", OutputItemKey: ""}, + "DeleteDataQualityRuleset": {Verb: "Delete", Resource: "DataQualityRuleset", OutputListKey: "", OutputItemKey: ""}, + "DeleteDatabase": {Verb: "Delete", Resource: "Database", OutputListKey: "", OutputItemKey: ""}, + "DeleteDevEndpoint": {Verb: "Delete", Resource: "DevEndpoint", OutputListKey: "", OutputItemKey: ""}, + "DeleteGlueIdentityCenterConfiguration": {Verb: "Delete", Resource: "GlueIdentityCenterConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteIntegration": {Verb: "Delete", Resource: "Integration", OutputListKey: "Errors", OutputItemKey: ""}, + "DeleteIntegrationResourceProperty": {Verb: "Delete", Resource: "IntegrationResourceProperty", OutputListKey: "", OutputItemKey: ""}, + "DeleteIntegrationTableProperties": {Verb: "Delete", Resource: "IntegrationTableProperty", OutputListKey: "", OutputItemKey: ""}, + "DeleteJob": {Verb: "Delete", Resource: "Job", OutputListKey: "", OutputItemKey: ""}, + "DeleteMLTransform": {Verb: "Delete", Resource: "MLTransform", OutputListKey: "", OutputItemKey: ""}, + "DeletePartition": {Verb: "Delete", Resource: "Partition", OutputListKey: "", OutputItemKey: ""}, + "DeletePartitionIndex": {Verb: "Delete", Resource: "PartitionIndex", OutputListKey: "", OutputItemKey: ""}, + "DeleteRegistry": {Verb: "Delete", Resource: "Registry", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteSchema": {Verb: "Delete", Resource: "Schema", OutputListKey: "", OutputItemKey: ""}, + "DeleteSchemaVersions": {Verb: "Delete", Resource: "SchemaVersion", OutputListKey: "SchemaVersionErrors", OutputItemKey: ""}, + "DeleteSecurityConfiguration": {Verb: "Delete", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteSession": {Verb: "Delete", Resource: "Session", OutputListKey: "", OutputItemKey: ""}, + "DeleteTable": {Verb: "Delete", Resource: "Table", OutputListKey: "", OutputItemKey: ""}, + "DeleteTableOptimizer": {Verb: "Delete", Resource: "TableOptimizer", OutputListKey: "", OutputItemKey: ""}, + "DeleteTableVersion": {Verb: "Delete", Resource: "TableVersion", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrigger": {Verb: "Delete", Resource: "Trigger", OutputListKey: "", OutputItemKey: ""}, + "DeleteUsageProfile": {Verb: "Delete", Resource: "UsageProfile", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserDefinedFunction": {Verb: "Delete", Resource: "UserDefinedFunction", OutputListKey: "", OutputItemKey: ""}, + "DeleteWorkflow": {Verb: "Delete", Resource: "Workflow", OutputListKey: "", OutputItemKey: ""}, + "DescribeConnectionType": {Verb: "Get", Resource: "ConnectionType", OutputListKey: "", OutputItemKey: "AuthenticationConfiguration"}, + "DescribeEntity": {Verb: "Get", Resource: "Entity", OutputListKey: "Fields", OutputItemKey: ""}, + "DescribeInboundIntegrations": {Verb: "Get", Resource: "InboundIntegration", OutputListKey: "InboundIntegrations", OutputItemKey: ""}, + "DescribeIntegrations": {Verb: "Get", Resource: "Integration", OutputListKey: "Integrations", OutputItemKey: ""}, + "GetBlueprint": {Verb: "Get", Resource: "Blueprint", OutputListKey: "", OutputItemKey: "Blueprint"}, + "GetBlueprintRun": {Verb: "Get", Resource: "BlueprintRun", OutputListKey: "", OutputItemKey: "BlueprintRun"}, + "GetBlueprintRuns": {Verb: "Get", Resource: "BlueprintRun", OutputListKey: "BlueprintRuns", OutputItemKey: ""}, + "GetCatalog": {Verb: "Get", Resource: "Catalog", OutputListKey: "", OutputItemKey: "Catalog"}, + "GetCatalogImportStatus": {Verb: "Get", Resource: "CatalogImportStatu", OutputListKey: "", OutputItemKey: "ImportStatus"}, + "GetCatalogs": {Verb: "Get", Resource: "Catalog", OutputListKey: "CatalogList", OutputItemKey: ""}, + "GetClassifier": {Verb: "Get", Resource: "Classifier", OutputListKey: "", OutputItemKey: "Classifier"}, + "GetClassifiers": {Verb: "Get", Resource: "Classifier", OutputListKey: "Classifiers", OutputItemKey: ""}, + "GetColumnStatisticsForPartition": {Verb: "Get", Resource: "ColumnStatisticsForPartition", OutputListKey: "ColumnStatisticsList", OutputItemKey: ""}, + "GetColumnStatisticsForTable": {Verb: "Get", Resource: "ColumnStatisticsForTable", OutputListKey: "ColumnStatisticsList", OutputItemKey: ""}, + "GetColumnStatisticsTaskRun": {Verb: "Get", Resource: "ColumnStatisticsTaskRun", OutputListKey: "", OutputItemKey: "ColumnStatisticsTaskRun"}, + "GetColumnStatisticsTaskRuns": {Verb: "Get", Resource: "ColumnStatisticsTaskRun", OutputListKey: "ColumnStatisticsTaskRuns", OutputItemKey: ""}, + "GetColumnStatisticsTaskSettings": {Verb: "Get", Resource: "ColumnStatisticsTaskSetting", OutputListKey: "", OutputItemKey: "ColumnStatisticsTaskSettings"}, + "GetConnection": {Verb: "Get", Resource: "Connection", OutputListKey: "", OutputItemKey: "Connection"}, + "GetConnections": {Verb: "Get", Resource: "Connection", OutputListKey: "ConnectionList", OutputItemKey: ""}, + "GetCrawler": {Verb: "Get", Resource: "Crawler", OutputListKey: "", OutputItemKey: "Crawler"}, + "GetCrawlerMetrics": {Verb: "Get", Resource: "CrawlerMetric", OutputListKey: "CrawlerMetricsList", OutputItemKey: ""}, + "GetCrawlers": {Verb: "Get", Resource: "Crawler", OutputListKey: "Crawlers", OutputItemKey: ""}, + "GetCustomEntityType": {Verb: "Get", Resource: "CustomEntityType", OutputListKey: "ContextWords", OutputItemKey: ""}, + "GetDataCatalogEncryptionSettings": {Verb: "Get", Resource: "DataCatalogEncryptionSetting", OutputListKey: "", OutputItemKey: "DataCatalogEncryptionSettings"}, + "GetDataQualityModel": {Verb: "Get", Resource: "DataQualityModel", OutputListKey: "", OutputItemKey: ""}, + "GetDataQualityModelResult": {Verb: "Get", Resource: "DataQualityModelResult", OutputListKey: "Model", OutputItemKey: ""}, + "GetDataQualityResult": {Verb: "Get", Resource: "DataQualityResult", OutputListKey: "AnalyzerResults", OutputItemKey: "AggregatedMetrics"}, + "GetDataQualityRuleRecommendationRun": {Verb: "Get", Resource: "DataQualityRuleRecommendationRun", OutputListKey: "", OutputItemKey: "DataSource"}, + "GetDataQualityRuleset": {Verb: "Get", Resource: "DataQualityRuleset", OutputListKey: "", OutputItemKey: "TargetTable"}, + "GetDataQualityRulesetEvaluationRun": {Verb: "Get", Resource: "DataQualityRulesetEvaluationRun", OutputListKey: "ResultIds", OutputItemKey: "AdditionalRunOptions"}, + "GetDatabase": {Verb: "Get", Resource: "Database", OutputListKey: "", OutputItemKey: "Database"}, + "GetDatabases": {Verb: "Get", Resource: "Database", OutputListKey: "DatabaseList", OutputItemKey: ""}, + "GetDataflowGraph": {Verb: "Get", Resource: "DataflowGraph", OutputListKey: "DagEdges", OutputItemKey: ""}, + "GetDevEndpoint": {Verb: "Get", Resource: "DevEndpoint", OutputListKey: "", OutputItemKey: "DevEndpoint"}, + "GetDevEndpoints": {Verb: "Get", Resource: "DevEndpoint", OutputListKey: "DevEndpoints", OutputItemKey: ""}, + "GetEntityRecords": {Verb: "Get", Resource: "EntityRecord", OutputListKey: "Records", OutputItemKey: ""}, + "GetGlueIdentityCenterConfiguration": {Verb: "Get", Resource: "GlueIdentityCenterConfiguration", OutputListKey: "Scopes", OutputItemKey: ""}, + "GetIntegrationResourceProperty": {Verb: "Get", Resource: "IntegrationResourceProperty", OutputListKey: "", OutputItemKey: "SourceProcessingProperties"}, + "GetIntegrationTableProperties": {Verb: "Get", Resource: "IntegrationTableProperty", OutputListKey: "", OutputItemKey: "SourceTableConfig"}, + "GetJob": {Verb: "Get", Resource: "Job", OutputListKey: "", OutputItemKey: "Job"}, + "GetJobBookmark": {Verb: "Get", Resource: "JobBookmark", OutputListKey: "", OutputItemKey: "JobBookmarkEntry"}, + "GetJobRun": {Verb: "Get", Resource: "JobRun", OutputListKey: "", OutputItemKey: "JobRun"}, + "GetJobRuns": {Verb: "Get", Resource: "JobRun", OutputListKey: "JobRuns", OutputItemKey: ""}, + "GetJobs": {Verb: "Get", Resource: "Job", OutputListKey: "Jobs", OutputItemKey: ""}, + "GetMLTaskRun": {Verb: "Get", Resource: "MLTaskRun", OutputListKey: "", OutputItemKey: "Properties"}, + "GetMLTaskRuns": {Verb: "Get", Resource: "MLTaskRun", OutputListKey: "TaskRuns", OutputItemKey: ""}, + "GetMLTransform": {Verb: "Get", Resource: "MLTransform", OutputListKey: "InputRecordTables", OutputItemKey: "EvaluationMetrics"}, + "GetMLTransforms": {Verb: "Get", Resource: "MLTransform", OutputListKey: "Transforms", OutputItemKey: ""}, + "GetMapping": {Verb: "Get", Resource: "Mapping", OutputListKey: "Mapping", OutputItemKey: ""}, + "GetMaterializedViewRefreshTaskRun": {Verb: "Get", Resource: "MaterializedViewRefreshTaskRun", OutputListKey: "", OutputItemKey: "MaterializedViewRefreshTaskRun"}, + "GetPartition": {Verb: "Get", Resource: "Partition", OutputListKey: "", OutputItemKey: "Partition"}, + "GetPartitionIndexes": {Verb: "Get", Resource: "PartitionIndex", OutputListKey: "PartitionIndexDescriptorList", OutputItemKey: ""}, + "GetPartitions": {Verb: "Get", Resource: "Partition", OutputListKey: "Partitions", OutputItemKey: ""}, + "GetPlan": {Verb: "Get", Resource: "Plan", OutputListKey: "", OutputItemKey: ""}, + "GetRegistry": {Verb: "Get", Resource: "Registry", OutputListKey: "", OutputItemKey: ""}, + "GetResourcePolicies": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "GetResourcePoliciesResponseList", OutputItemKey: ""}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetSchema": {Verb: "Get", Resource: "Schema", OutputListKey: "", OutputItemKey: ""}, + "GetSchemaByDefinition": {Verb: "Get", Resource: "SchemaByDefinition", OutputListKey: "", OutputItemKey: ""}, + "GetSchemaVersion": {Verb: "Get", Resource: "SchemaVersion", OutputListKey: "", OutputItemKey: ""}, + "GetSchemaVersionsDiff": {Verb: "Get", Resource: "SchemaVersionsDiff", OutputListKey: "", OutputItemKey: ""}, + "GetSecurityConfiguration": {Verb: "Get", Resource: "SecurityConfiguration", OutputListKey: "", OutputItemKey: "SecurityConfiguration"}, + "GetSecurityConfigurations": {Verb: "Get", Resource: "SecurityConfiguration", OutputListKey: "SecurityConfigurations", OutputItemKey: ""}, + "GetSession": {Verb: "Get", Resource: "Session", OutputListKey: "", OutputItemKey: "Session"}, + "GetStatement": {Verb: "Get", Resource: "Statement", OutputListKey: "", OutputItemKey: "Statement"}, + "GetTable": {Verb: "Get", Resource: "Table", OutputListKey: "", OutputItemKey: "Table"}, + "GetTableOptimizer": {Verb: "Get", Resource: "TableOptimizer", OutputListKey: "", OutputItemKey: "TableOptimizer"}, + "GetTableVersion": {Verb: "Get", Resource: "TableVersion", OutputListKey: "", OutputItemKey: "TableVersion"}, + "GetTableVersions": {Verb: "Get", Resource: "TableVersion", OutputListKey: "TableVersions", OutputItemKey: ""}, + "GetTables": {Verb: "Get", Resource: "Table", OutputListKey: "TableList", OutputItemKey: ""}, + "GetTags": {Verb: "Get", Resource: "Tag", OutputListKey: "", OutputItemKey: ""}, + "GetTrigger": {Verb: "Get", Resource: "Trigger", OutputListKey: "", OutputItemKey: "Trigger"}, + "GetTriggers": {Verb: "Get", Resource: "Trigger", OutputListKey: "Triggers", OutputItemKey: ""}, + "GetUnfilteredPartitionMetadata": {Verb: "Get", Resource: "UnfilteredPartitionMetadata", OutputListKey: "AuthorizedColumns", OutputItemKey: "Partition"}, + "GetUnfilteredPartitionsMetadata": {Verb: "Get", Resource: "UnfilteredPartitionsMetadata", OutputListKey: "UnfilteredPartitions", OutputItemKey: ""}, + "GetUnfilteredTableMetadata": {Verb: "Get", Resource: "UnfilteredTableMetadata", OutputListKey: "AuthorizedColumns", OutputItemKey: "Table"}, + "GetUsageProfile": {Verb: "Get", Resource: "UsageProfile", OutputListKey: "", OutputItemKey: "Configuration"}, + "GetUserDefinedFunction": {Verb: "Get", Resource: "UserDefinedFunction", OutputListKey: "", OutputItemKey: "UserDefinedFunction"}, + "GetUserDefinedFunctions": {Verb: "Get", Resource: "UserDefinedFunction", OutputListKey: "UserDefinedFunctions", OutputItemKey: ""}, + "GetWorkflow": {Verb: "Get", Resource: "Workflow", OutputListKey: "", OutputItemKey: "Workflow"}, + "GetWorkflowRun": {Verb: "Get", Resource: "WorkflowRun", OutputListKey: "", OutputItemKey: "Run"}, + "GetWorkflowRunProperties": {Verb: "Get", Resource: "WorkflowRunProperty", OutputListKey: "", OutputItemKey: ""}, + "GetWorkflowRuns": {Verb: "Get", Resource: "WorkflowRun", OutputListKey: "Runs", OutputItemKey: ""}, + "ListBlueprints": {Verb: "List", Resource: "Blueprint", OutputListKey: "Blueprints", OutputItemKey: ""}, + "ListColumnStatisticsTaskRuns": {Verb: "List", Resource: "ColumnStatisticsTaskRun", OutputListKey: "ColumnStatisticsTaskRunIds", OutputItemKey: ""}, + "ListConnectionTypes": {Verb: "List", Resource: "ConnectionType", OutputListKey: "ConnectionTypes", OutputItemKey: ""}, + "ListCrawlers": {Verb: "List", Resource: "Crawler", OutputListKey: "CrawlerNames", OutputItemKey: ""}, + "ListCrawls": {Verb: "List", Resource: "Crawl", OutputListKey: "Crawls", OutputItemKey: ""}, + "ListCustomEntityTypes": {Verb: "List", Resource: "CustomEntityType", OutputListKey: "CustomEntityTypes", OutputItemKey: ""}, + "ListDataQualityResults": {Verb: "List", Resource: "DataQualityResult", OutputListKey: "Results", OutputItemKey: ""}, + "ListDataQualityRuleRecommendationRuns": {Verb: "List", Resource: "DataQualityRuleRecommendationRun", OutputListKey: "Runs", OutputItemKey: ""}, + "ListDataQualityRulesetEvaluationRuns": {Verb: "List", Resource: "DataQualityRulesetEvaluationRun", OutputListKey: "Runs", OutputItemKey: ""}, + "ListDataQualityRulesets": {Verb: "List", Resource: "DataQualityRuleset", OutputListKey: "Rulesets", OutputItemKey: ""}, + "ListDataQualityStatisticAnnotations": {Verb: "List", Resource: "DataQualityStatisticAnnotation", OutputListKey: "Annotations", OutputItemKey: ""}, + "ListDataQualityStatistics": {Verb: "List", Resource: "DataQualityStatistic", OutputListKey: "Statistics", OutputItemKey: ""}, + "ListDevEndpoints": {Verb: "List", Resource: "DevEndpoint", OutputListKey: "DevEndpointNames", OutputItemKey: ""}, + "ListEntities": {Verb: "List", Resource: "Entity", OutputListKey: "Entities", OutputItemKey: ""}, + "ListIntegrationResourceProperties": {Verb: "List", Resource: "IntegrationResourceProperty", OutputListKey: "IntegrationResourcePropertyList", OutputItemKey: ""}, + "ListJobs": {Verb: "List", Resource: "Job", OutputListKey: "JobNames", OutputItemKey: ""}, + "ListMLTransforms": {Verb: "List", Resource: "MLTransform", OutputListKey: "TransformIds", OutputItemKey: ""}, + "ListMaterializedViewRefreshTaskRuns": {Verb: "List", Resource: "MaterializedViewRefreshTaskRun", OutputListKey: "MaterializedViewRefreshTaskRuns", OutputItemKey: ""}, + "ListRegistries": {Verb: "List", Resource: "Registry", OutputListKey: "Registries", OutputItemKey: ""}, + "ListSchemaVersions": {Verb: "List", Resource: "SchemaVersion", OutputListKey: "Schemas", OutputItemKey: ""}, + "ListSchemas": {Verb: "List", Resource: "Schema", OutputListKey: "Schemas", OutputItemKey: ""}, + "ListSessions": {Verb: "List", Resource: "Session", OutputListKey: "Ids", OutputItemKey: ""}, + "ListStatements": {Verb: "List", Resource: "Statement", OutputListKey: "Statements", OutputItemKey: ""}, + "ListTableOptimizerRuns": {Verb: "List", Resource: "TableOptimizerRun", OutputListKey: "TableOptimizerRuns", OutputItemKey: ""}, + "ListTriggers": {Verb: "List", Resource: "Trigger", OutputListKey: "TriggerNames", OutputItemKey: ""}, + "ListUsageProfiles": {Verb: "List", Resource: "UsageProfile", OutputListKey: "Profiles", OutputItemKey: ""}, + "ListWorkflows": {Verb: "List", Resource: "Workflow", OutputListKey: "Workflows", OutputItemKey: ""}, + "ModifyIntegration": {Verb: "Update", Resource: "Integration", OutputListKey: "Errors", OutputItemKey: "IntegrationConfig"}, + "PutDataCatalogEncryptionSettings": {Verb: "Update", Resource: "DataCatalogEncryptionSetting", OutputListKey: "", OutputItemKey: ""}, + "PutDataQualityProfileAnnotation": {Verb: "Update", Resource: "DataQualityProfileAnnotation", OutputListKey: "", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "PutSchemaVersionMetadata": {Verb: "Update", Resource: "SchemaVersionMetadata", OutputListKey: "", OutputItemKey: ""}, + "PutWorkflowRunProperties": {Verb: "Update", Resource: "WorkflowRunProperty", OutputListKey: "", OutputItemKey: ""}, + "RegisterConnectionType": {Verb: "Create", Resource: "ConnectionType", OutputListKey: "", OutputItemKey: ""}, + "RegisterSchemaVersion": {Verb: "Create", Resource: "SchemaVersion", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateBlueprint": {Verb: "Update", Resource: "Blueprint", OutputListKey: "", OutputItemKey: ""}, + "UpdateCatalog": {Verb: "Update", Resource: "Catalog", OutputListKey: "", OutputItemKey: ""}, + "UpdateClassifier": {Verb: "Update", Resource: "Classifier", OutputListKey: "", OutputItemKey: ""}, + "UpdateColumnStatisticsForPartition": {Verb: "Update", Resource: "ColumnStatisticsForPartition", OutputListKey: "Errors", OutputItemKey: ""}, + "UpdateColumnStatisticsForTable": {Verb: "Update", Resource: "ColumnStatisticsForTable", OutputListKey: "Errors", OutputItemKey: ""}, + "UpdateColumnStatisticsTaskSettings": {Verb: "Update", Resource: "ColumnStatisticsTaskSetting", OutputListKey: "", OutputItemKey: ""}, + "UpdateConnection": {Verb: "Update", Resource: "Connection", OutputListKey: "", OutputItemKey: ""}, + "UpdateCrawler": {Verb: "Update", Resource: "Crawler", OutputListKey: "", OutputItemKey: ""}, + "UpdateCrawlerSchedule": {Verb: "Update", Resource: "CrawlerSchedule", OutputListKey: "", OutputItemKey: ""}, + "UpdateDataQualityRuleset": {Verb: "Update", Resource: "DataQualityRuleset", OutputListKey: "", OutputItemKey: ""}, + "UpdateDatabase": {Verb: "Update", Resource: "Database", OutputListKey: "", OutputItemKey: ""}, + "UpdateDevEndpoint": {Verb: "Update", Resource: "DevEndpoint", OutputListKey: "", OutputItemKey: ""}, + "UpdateGlueIdentityCenterConfiguration": {Verb: "Update", Resource: "GlueIdentityCenterConfiguration", OutputListKey: "", OutputItemKey: ""}, + "UpdateIntegrationResourceProperty": {Verb: "Update", Resource: "IntegrationResourceProperty", OutputListKey: "", OutputItemKey: "SourceProcessingProperties"}, + "UpdateIntegrationTableProperties": {Verb: "Update", Resource: "IntegrationTableProperty", OutputListKey: "", OutputItemKey: ""}, + "UpdateJob": {Verb: "Update", Resource: "Job", OutputListKey: "", OutputItemKey: ""}, + "UpdateJobFromSourceControl": {Verb: "Update", Resource: "JobFromSourceControl", OutputListKey: "", OutputItemKey: ""}, + "UpdateMLTransform": {Verb: "Update", Resource: "MLTransform", OutputListKey: "", OutputItemKey: ""}, + "UpdatePartition": {Verb: "Update", Resource: "Partition", OutputListKey: "", OutputItemKey: ""}, + "UpdateRegistry": {Verb: "Update", Resource: "Registry", OutputListKey: "", OutputItemKey: ""}, + "UpdateSchema": {Verb: "Update", Resource: "Schema", OutputListKey: "", OutputItemKey: ""}, + "UpdateSourceControlFromJob": {Verb: "Update", Resource: "SourceControlFromJob", OutputListKey: "", OutputItemKey: ""}, + "UpdateTable": {Verb: "Update", Resource: "Table", OutputListKey: "", OutputItemKey: ""}, + "UpdateTableOptimizer": {Verb: "Update", Resource: "TableOptimizer", OutputListKey: "", OutputItemKey: ""}, + "UpdateTrigger": {Verb: "Update", Resource: "Trigger", OutputListKey: "", OutputItemKey: "Trigger"}, + "UpdateUsageProfile": {Verb: "Update", Resource: "UsageProfile", OutputListKey: "", OutputItemKey: ""}, + "UpdateUserDefinedFunction": {Verb: "Update", Resource: "UserDefinedFunction", OutputListKey: "", OutputItemKey: ""}, + "UpdateWorkflow": {Verb: "Update", Resource: "Workflow", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("kinesis", map[string]crud.OpMeta{ + "CreateStream": {Verb: "Create", Resource: "Stream", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteStream": {Verb: "Delete", Resource: "Stream", OutputListKey: "", OutputItemKey: ""}, + "DeregisterStreamConsumer": {Verb: "Delete", Resource: "StreamConsumer", OutputListKey: "", OutputItemKey: ""}, + "DescribeAccountSettings": {Verb: "Get", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: "MinimumThroughputBillingCommitment"}, + "DescribeLimits": {Verb: "Get", Resource: "Limit", OutputListKey: "", OutputItemKey: ""}, + "DescribeStream": {Verb: "Get", Resource: "Stream", OutputListKey: "", OutputItemKey: "StreamDescription"}, + "DescribeStreamConsumer": {Verb: "Get", Resource: "StreamConsumer", OutputListKey: "", OutputItemKey: "ConsumerDescription"}, + "DescribeStreamSummary": {Verb: "Get", Resource: "StreamSummary", OutputListKey: "", OutputItemKey: "StreamDescriptionSummary"}, + "GetRecords": {Verb: "Get", Resource: "Record", OutputListKey: "ChildShards", OutputItemKey: ""}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetShardIterator": {Verb: "Get", Resource: "ShardIterator", OutputListKey: "", OutputItemKey: ""}, + "ListShards": {Verb: "List", Resource: "Shard", OutputListKey: "Shards", OutputItemKey: ""}, + "ListStreamConsumers": {Verb: "List", Resource: "StreamConsumer", OutputListKey: "Consumers", OutputItemKey: ""}, + "ListStreams": {Verb: "List", Resource: "Stream", OutputListKey: "StreamNames", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTagsForStream": {Verb: "List", Resource: "TagsForStream", OutputListKey: "Tags", OutputItemKey: ""}, + "PutRecord": {Verb: "Update", Resource: "Record", OutputListKey: "", OutputItemKey: ""}, + "PutRecords": {Verb: "Update", Resource: "Record", OutputListKey: "Records", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "RegisterStreamConsumer": {Verb: "Create", Resource: "StreamConsumer", OutputListKey: "", OutputItemKey: "Consumer"}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAccountSettings": {Verb: "Update", Resource: "AccountSetting", OutputListKey: "", OutputItemKey: "MinimumThroughputBillingCommitment"}, + "UpdateMaxRecordSize": {Verb: "Update", Resource: "MaxRecordSize", OutputListKey: "", OutputItemKey: ""}, + "UpdateShardCount": {Verb: "Update", Resource: "ShardCount", OutputListKey: "", OutputItemKey: ""}, + "UpdateStreamMode": {Verb: "Update", Resource: "StreamMode", OutputListKey: "", OutputItemKey: ""}, + "UpdateStreamWarmThroughput": {Verb: "Update", Resource: "StreamWarmThroughput", OutputListKey: "", OutputItemKey: "WarmThroughput"}, + }) + crud.Register("kinesisanalyticsv2", map[string]crud.OpMeta{ + "CreateApplication": {Verb: "Create", Resource: "Application", OutputListKey: "", OutputItemKey: "ApplicationDetail"}, + "CreateApplicationPresignedUrl": {Verb: "Create", Resource: "ApplicationPresignedUrl", OutputListKey: "", OutputItemKey: ""}, + "CreateApplicationSnapshot": {Verb: "Create", Resource: "ApplicationSnapshot", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplication": {Verb: "Delete", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationCloudWatchLoggingOption": {Verb: "Delete", Resource: "ApplicationCloudWatchLoggingOption", OutputListKey: "CloudWatchLoggingOptionDescriptions", OutputItemKey: ""}, + "DeleteApplicationInputProcessingConfiguration": {Verb: "Delete", Resource: "ApplicationInputProcessingConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationOutput": {Verb: "Delete", Resource: "ApplicationOutput", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationReferenceDataSource": {Verb: "Delete", Resource: "ApplicationReferenceDataSource", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationSnapshot": {Verb: "Delete", Resource: "ApplicationSnapshot", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationVpcConfiguration": {Verb: "Delete", Resource: "ApplicationVpcConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DescribeApplication": {Verb: "Get", Resource: "Application", OutputListKey: "", OutputItemKey: "ApplicationDetail"}, + "DescribeApplicationOperation": {Verb: "Get", Resource: "ApplicationOperation", OutputListKey: "", OutputItemKey: "ApplicationOperationInfoDetails"}, + "DescribeApplicationSnapshot": {Verb: "Get", Resource: "ApplicationSnapshot", OutputListKey: "", OutputItemKey: "SnapshotDetails"}, + "DescribeApplicationVersion": {Verb: "Get", Resource: "ApplicationVersion", OutputListKey: "", OutputItemKey: "ApplicationVersionDetail"}, + "ListApplicationOperations": {Verb: "List", Resource: "ApplicationOperation", OutputListKey: "ApplicationOperationInfoList", OutputItemKey: ""}, + "ListApplicationSnapshots": {Verb: "List", Resource: "ApplicationSnapshot", OutputListKey: "SnapshotSummaries", OutputItemKey: ""}, + "ListApplicationVersions": {Verb: "List", Resource: "ApplicationVersion", OutputListKey: "ApplicationVersionSummaries", OutputItemKey: ""}, + "ListApplications": {Verb: "List", Resource: "Application", OutputListKey: "ApplicationSummaries", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApplication": {Verb: "Update", Resource: "Application", OutputListKey: "", OutputItemKey: "ApplicationDetail"}, + "UpdateApplicationMaintenanceConfiguration": {Verb: "Update", Resource: "ApplicationMaintenanceConfiguration", OutputListKey: "", OutputItemKey: "ApplicationMaintenanceConfigurationDescription"}, + }) + crud.Register("kms", map[string]crud.OpMeta{ + "CreateAlias": {Verb: "Create", Resource: "Alia", OutputListKey: "", OutputItemKey: ""}, + "CreateCustomKeyStore": {Verb: "Create", Resource: "CustomKeyStore", OutputListKey: "", OutputItemKey: ""}, + "CreateGrant": {Verb: "Create", Resource: "Grant", OutputListKey: "", OutputItemKey: ""}, + "CreateKey": {Verb: "Create", Resource: "Key", OutputListKey: "", OutputItemKey: "KeyMetadata"}, + "DeleteAlias": {Verb: "Delete", Resource: "Alia", OutputListKey: "", OutputItemKey: ""}, + "DeleteCustomKeyStore": {Verb: "Delete", Resource: "CustomKeyStore", OutputListKey: "", OutputItemKey: ""}, + "DeleteImportedKeyMaterial": {Verb: "Delete", Resource: "ImportedKeyMaterial", OutputListKey: "", OutputItemKey: ""}, + "DescribeCustomKeyStores": {Verb: "Get", Resource: "CustomKeyStore", OutputListKey: "CustomKeyStores", OutputItemKey: ""}, + "DescribeKey": {Verb: "Get", Resource: "Key", OutputListKey: "", OutputItemKey: "KeyMetadata"}, + "GetKeyPolicy": {Verb: "Get", Resource: "KeyPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetKeyRotationStatus": {Verb: "Get", Resource: "KeyRotationStatu", OutputListKey: "", OutputItemKey: ""}, + "GetParametersForImport": {Verb: "Get", Resource: "ParametersForImport", OutputListKey: "", OutputItemKey: ""}, + "GetPublicKey": {Verb: "Get", Resource: "PublicKey", OutputListKey: "EncryptionAlgorithms", OutputItemKey: ""}, + "ListAliases": {Verb: "List", Resource: "Aliase", OutputListKey: "Aliases", OutputItemKey: ""}, + "ListGrants": {Verb: "List", Resource: "Grant", OutputListKey: "Grants", OutputItemKey: ""}, + "ListKeyPolicies": {Verb: "List", Resource: "KeyPolicy", OutputListKey: "PolicyNames", OutputItemKey: ""}, + "ListKeyRotations": {Verb: "List", Resource: "KeyRotation", OutputListKey: "Rotations", OutputItemKey: ""}, + "ListKeys": {Verb: "List", Resource: "Key", OutputListKey: "Keys", OutputItemKey: ""}, + "ListResourceTags": {Verb: "List", Resource: "ResourceTag", OutputListKey: "Tags", OutputItemKey: ""}, + "ListRetirableGrants": {Verb: "List", Resource: "RetirableGrant", OutputListKey: "Grants", OutputItemKey: ""}, + "PutKeyPolicy": {Verb: "Update", Resource: "KeyPolicy", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAlias": {Verb: "Update", Resource: "Alia", OutputListKey: "", OutputItemKey: ""}, + "UpdateCustomKeyStore": {Verb: "Update", Resource: "CustomKeyStore", OutputListKey: "", OutputItemKey: ""}, + "UpdateKeyDescription": {Verb: "Update", Resource: "KeyDescription", OutputListKey: "", OutputItemKey: ""}, + "UpdatePrimaryRegion": {Verb: "Update", Resource: "PrimaryRegion", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("memorydb", map[string]crud.OpMeta{ + "CreateACL": {Verb: "Create", Resource: "ACL", OutputListKey: "", OutputItemKey: "ACL"}, + "CreateCluster": {Verb: "Create", Resource: "Cluster", OutputListKey: "", OutputItemKey: "Cluster"}, + "CreateMultiRegionCluster": {Verb: "Create", Resource: "MultiRegionCluster", OutputListKey: "", OutputItemKey: "MultiRegionCluster"}, + "CreateParameterGroup": {Verb: "Create", Resource: "ParameterGroup", OutputListKey: "", OutputItemKey: "ParameterGroup"}, + "CreateSnapshot": {Verb: "Create", Resource: "Snapshot", OutputListKey: "", OutputItemKey: "Snapshot"}, + "CreateSubnetGroup": {Verb: "Create", Resource: "SubnetGroup", OutputListKey: "", OutputItemKey: "SubnetGroup"}, + "CreateUser": {Verb: "Create", Resource: "User", OutputListKey: "", OutputItemKey: "User"}, + "DeleteACL": {Verb: "Delete", Resource: "ACL", OutputListKey: "", OutputItemKey: "ACL"}, + "DeleteCluster": {Verb: "Delete", Resource: "Cluster", OutputListKey: "", OutputItemKey: "Cluster"}, + "DeleteMultiRegionCluster": {Verb: "Delete", Resource: "MultiRegionCluster", OutputListKey: "", OutputItemKey: "MultiRegionCluster"}, + "DeleteParameterGroup": {Verb: "Delete", Resource: "ParameterGroup", OutputListKey: "", OutputItemKey: "ParameterGroup"}, + "DeleteSnapshot": {Verb: "Delete", Resource: "Snapshot", OutputListKey: "", OutputItemKey: "Snapshot"}, + "DeleteSubnetGroup": {Verb: "Delete", Resource: "SubnetGroup", OutputListKey: "", OutputItemKey: "SubnetGroup"}, + "DeleteUser": {Verb: "Delete", Resource: "User", OutputListKey: "", OutputItemKey: "User"}, + "DescribeACLs": {Verb: "Get", Resource: "ACL", OutputListKey: "ACLs", OutputItemKey: ""}, + "DescribeClusters": {Verb: "Get", Resource: "Cluster", OutputListKey: "Clusters", OutputItemKey: ""}, + "DescribeEngineVersions": {Verb: "Get", Resource: "EngineVersion", OutputListKey: "EngineVersions", OutputItemKey: ""}, + "DescribeEvents": {Verb: "Get", Resource: "Event", OutputListKey: "Events", OutputItemKey: ""}, + "DescribeMultiRegionClusters": {Verb: "Get", Resource: "MultiRegionCluster", OutputListKey: "MultiRegionClusters", OutputItemKey: ""}, + "DescribeMultiRegionParameterGroups": {Verb: "Get", Resource: "MultiRegionParameterGroup", OutputListKey: "MultiRegionParameterGroups", OutputItemKey: ""}, + "DescribeMultiRegionParameters": {Verb: "Get", Resource: "MultiRegionParameter", OutputListKey: "MultiRegionParameters", OutputItemKey: ""}, + "DescribeParameterGroups": {Verb: "Get", Resource: "ParameterGroup", OutputListKey: "ParameterGroups", OutputItemKey: ""}, + "DescribeParameters": {Verb: "Get", Resource: "Parameter", OutputListKey: "Parameters", OutputItemKey: ""}, + "DescribeReservedNodes": {Verb: "Get", Resource: "ReservedNode", OutputListKey: "ReservedNodes", OutputItemKey: ""}, + "DescribeReservedNodesOfferings": {Verb: "Get", Resource: "ReservedNodesOffering", OutputListKey: "ReservedNodesOfferings", OutputItemKey: ""}, + "DescribeServiceUpdates": {Verb: "Get", Resource: "ServiceUpdate", OutputListKey: "ServiceUpdates", OutputItemKey: ""}, + "DescribeSnapshots": {Verb: "Get", Resource: "Snapshot", OutputListKey: "Snapshots", OutputItemKey: ""}, + "DescribeSubnetGroups": {Verb: "Get", Resource: "SubnetGroup", OutputListKey: "SubnetGroups", OutputItemKey: ""}, + "DescribeUsers": {Verb: "Get", Resource: "User", OutputListKey: "Users", OutputItemKey: ""}, + "ListAllowedMultiRegionClusterUpdates": {Verb: "List", Resource: "AllowedMultiRegionClusterUpdate", OutputListKey: "ScaleDownNodeTypes", OutputItemKey: ""}, + "ListAllowedNodeTypeUpdates": {Verb: "List", Resource: "AllowedNodeTypeUpdate", OutputListKey: "ScaleDownNodeTypes", OutputItemKey: ""}, + "ListTags": {Verb: "List", Resource: "Tag", OutputListKey: "TagList", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "TagList", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "TagList", OutputItemKey: ""}, + "UpdateACL": {Verb: "Update", Resource: "ACL", OutputListKey: "", OutputItemKey: "ACL"}, + "UpdateCluster": {Verb: "Update", Resource: "Cluster", OutputListKey: "", OutputItemKey: "Cluster"}, + "UpdateMultiRegionCluster": {Verb: "Update", Resource: "MultiRegionCluster", OutputListKey: "", OutputItemKey: "MultiRegionCluster"}, + "UpdateParameterGroup": {Verb: "Update", Resource: "ParameterGroup", OutputListKey: "", OutputItemKey: "ParameterGroup"}, + "UpdateSubnetGroup": {Verb: "Update", Resource: "SubnetGroup", OutputListKey: "", OutputItemKey: "SubnetGroup"}, + "UpdateUser": {Verb: "Update", Resource: "User", OutputListKey: "", OutputItemKey: "User"}, + }) + crud.Register("organizations", map[string]crud.OpMeta{ + "CreateAccount": {Verb: "Create", Resource: "Account", OutputListKey: "", OutputItemKey: "CreateAccountStatus"}, + "CreateGovCloudAccount": {Verb: "Create", Resource: "GovCloudAccount", OutputListKey: "", OutputItemKey: "CreateAccountStatus"}, + "CreateOrganization": {Verb: "Create", Resource: "Organization", OutputListKey: "", OutputItemKey: "Organization"}, + "CreateOrganizationalUnit": {Verb: "Create", Resource: "OrganizationalUnit", OutputListKey: "", OutputItemKey: "OrganizationalUnit"}, + "CreatePolicy": {Verb: "Create", Resource: "Policy", OutputListKey: "", OutputItemKey: "Policy"}, + "DeleteOrganization": {Verb: "Delete", Resource: "Organization", OutputListKey: "", OutputItemKey: ""}, + "DeleteOrganizationalUnit": {Verb: "Delete", Resource: "OrganizationalUnit", OutputListKey: "", OutputItemKey: ""}, + "DeletePolicy": {Verb: "Delete", Resource: "Policy", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeregisterDelegatedAdministrator": {Verb: "Delete", Resource: "DelegatedAdministrator", OutputListKey: "", OutputItemKey: ""}, + "DescribeAccount": {Verb: "Get", Resource: "Account", OutputListKey: "", OutputItemKey: "Account"}, + "DescribeCreateAccountStatus": {Verb: "Get", Resource: "CreateAccountStatu", OutputListKey: "", OutputItemKey: "CreateAccountStatus"}, + "DescribeEffectivePolicy": {Verb: "Get", Resource: "EffectivePolicy", OutputListKey: "", OutputItemKey: "EffectivePolicy"}, + "DescribeHandshake": {Verb: "Get", Resource: "Handshake", OutputListKey: "", OutputItemKey: "Handshake"}, + "DescribeOrganization": {Verb: "Get", Resource: "Organization", OutputListKey: "", OutputItemKey: "Organization"}, + "DescribeOrganizationalUnit": {Verb: "Get", Resource: "OrganizationalUnit", OutputListKey: "", OutputItemKey: "OrganizationalUnit"}, + "DescribePolicy": {Verb: "Get", Resource: "Policy", OutputListKey: "", OutputItemKey: "Policy"}, + "DescribeResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: "ResourcePolicy"}, + "DescribeResponsibilityTransfer": {Verb: "Get", Resource: "ResponsibilityTransfer", OutputListKey: "", OutputItemKey: "ResponsibilityTransfer"}, + "ListAWSServiceAccessForOrganization": {Verb: "List", Resource: "AWSServiceAccessForOrganization", OutputListKey: "EnabledServicePrincipals", OutputItemKey: ""}, + "ListAccounts": {Verb: "List", Resource: "Account", OutputListKey: "Accounts", OutputItemKey: ""}, + "ListAccountsForParent": {Verb: "List", Resource: "AccountsForParent", OutputListKey: "Accounts", OutputItemKey: ""}, + "ListAccountsWithInvalidEffectivePolicy": {Verb: "List", Resource: "AccountsWithInvalidEffectivePolicy", OutputListKey: "Accounts", OutputItemKey: ""}, + "ListChildren": {Verb: "List", Resource: "Children", OutputListKey: "Children", OutputItemKey: ""}, + "ListCreateAccountStatus": {Verb: "List", Resource: "CreateAccountStatu", OutputListKey: "CreateAccountStatuses", OutputItemKey: ""}, + "ListDelegatedAdministrators": {Verb: "List", Resource: "DelegatedAdministrator", OutputListKey: "DelegatedAdministrators", OutputItemKey: ""}, + "ListDelegatedServicesForAccount": {Verb: "List", Resource: "DelegatedServicesForAccount", OutputListKey: "DelegatedServices", OutputItemKey: ""}, + "ListEffectivePolicyValidationErrors": {Verb: "List", Resource: "EffectivePolicyValidationError", OutputListKey: "EffectivePolicyValidationErrors", OutputItemKey: ""}, + "ListHandshakesForAccount": {Verb: "List", Resource: "HandshakesForAccount", OutputListKey: "Handshakes", OutputItemKey: ""}, + "ListHandshakesForOrganization": {Verb: "List", Resource: "HandshakesForOrganization", OutputListKey: "Handshakes", OutputItemKey: ""}, + "ListInboundResponsibilityTransfers": {Verb: "List", Resource: "InboundResponsibilityTransfer", OutputListKey: "ResponsibilityTransfers", OutputItemKey: ""}, + "ListOrganizationalUnitsForParent": {Verb: "List", Resource: "OrganizationalUnitsForParent", OutputListKey: "OrganizationalUnits", OutputItemKey: ""}, + "ListOutboundResponsibilityTransfers": {Verb: "List", Resource: "OutboundResponsibilityTransfer", OutputListKey: "ResponsibilityTransfers", OutputItemKey: ""}, + "ListParents": {Verb: "List", Resource: "Parent", OutputListKey: "Parents", OutputItemKey: ""}, + "ListPolicies": {Verb: "List", Resource: "Policy", OutputListKey: "Policies", OutputItemKey: ""}, + "ListPoliciesForTarget": {Verb: "List", Resource: "PoliciesForTarget", OutputListKey: "Policies", OutputItemKey: ""}, + "ListRoots": {Verb: "List", Resource: "Root", OutputListKey: "Roots", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTargetsForPolicy": {Verb: "List", Resource: "TargetsForPolicy", OutputListKey: "Targets", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: "ResourcePolicy"}, + "RegisterDelegatedAdministrator": {Verb: "Create", Resource: "DelegatedAdministrator", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateOrganizationalUnit": {Verb: "Update", Resource: "OrganizationalUnit", OutputListKey: "", OutputItemKey: "OrganizationalUnit"}, + "UpdatePolicy": {Verb: "Update", Resource: "Policy", OutputListKey: "", OutputItemKey: "Policy"}, + "UpdateResponsibilityTransfer": {Verb: "Update", Resource: "ResponsibilityTransfer", OutputListKey: "", OutputItemKey: "ResponsibilityTransfer"}, + }) + crud.Register("resourcegroupstaggingapi", map[string]crud.OpMeta{ + "DescribeReportCreation": {Verb: "Get", Resource: "ReportCreation", OutputListKey: "", OutputItemKey: ""}, + "GetComplianceSummary": {Verb: "Get", Resource: "ComplianceSummary", OutputListKey: "SummaryList", OutputItemKey: ""}, + "GetResources": {Verb: "Get", Resource: "Resource", OutputListKey: "ResourceTagMappingList", OutputItemKey: ""}, + "GetTagKeys": {Verb: "Get", Resource: "TagKey", OutputListKey: "TagKeys", OutputItemKey: ""}, + "GetTagValues": {Verb: "Get", Resource: "TagValue", OutputListKey: "TagValues", OutputItemKey: ""}, + "ListRequiredTags": {Verb: "List", Resource: "RequiredTag", OutputListKey: "RequiredTags", OutputItemKey: ""}, + "TagResources": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResources": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("route53resolver", map[string]crud.OpMeta{ + "CreateFirewallDomainList": {Verb: "Create", Resource: "FirewallDomainList", OutputListKey: "", OutputItemKey: "FirewallDomainList"}, + "CreateFirewallRule": {Verb: "Create", Resource: "FirewallRule", OutputListKey: "", OutputItemKey: "FirewallRule"}, + "CreateFirewallRuleGroup": {Verb: "Create", Resource: "FirewallRuleGroup", OutputListKey: "", OutputItemKey: "FirewallRuleGroup"}, + "CreateOutpostResolver": {Verb: "Create", Resource: "OutpostResolver", OutputListKey: "", OutputItemKey: "OutpostResolver"}, + "CreateResolverEndpoint": {Verb: "Create", Resource: "ResolverEndpoint", OutputListKey: "", OutputItemKey: "ResolverEndpoint"}, + "CreateResolverQueryLogConfig": {Verb: "Create", Resource: "ResolverQueryLogConfig", OutputListKey: "", OutputItemKey: "ResolverQueryLogConfig"}, + "CreateResolverRule": {Verb: "Create", Resource: "ResolverRule", OutputListKey: "", OutputItemKey: "ResolverRule"}, + "DeleteFirewallDomainList": {Verb: "Delete", Resource: "FirewallDomainList", OutputListKey: "", OutputItemKey: "FirewallDomainList"}, + "DeleteFirewallRule": {Verb: "Delete", Resource: "FirewallRule", OutputListKey: "", OutputItemKey: "FirewallRule"}, + "DeleteFirewallRuleGroup": {Verb: "Delete", Resource: "FirewallRuleGroup", OutputListKey: "", OutputItemKey: "FirewallRuleGroup"}, + "DeleteOutpostResolver": {Verb: "Delete", Resource: "OutpostResolver", OutputListKey: "", OutputItemKey: "OutpostResolver"}, + "DeleteResolverEndpoint": {Verb: "Delete", Resource: "ResolverEndpoint", OutputListKey: "", OutputItemKey: "ResolverEndpoint"}, + "DeleteResolverQueryLogConfig": {Verb: "Delete", Resource: "ResolverQueryLogConfig", OutputListKey: "", OutputItemKey: "ResolverQueryLogConfig"}, + "DeleteResolverRule": {Verb: "Delete", Resource: "ResolverRule", OutputListKey: "", OutputItemKey: "ResolverRule"}, + "GetFirewallConfig": {Verb: "Get", Resource: "FirewallConfig", OutputListKey: "", OutputItemKey: "FirewallConfig"}, + "GetFirewallDomainList": {Verb: "Get", Resource: "FirewallDomainList", OutputListKey: "", OutputItemKey: "FirewallDomainList"}, + "GetFirewallRuleGroup": {Verb: "Get", Resource: "FirewallRuleGroup", OutputListKey: "", OutputItemKey: "FirewallRuleGroup"}, + "GetFirewallRuleGroupAssociation": {Verb: "Get", Resource: "FirewallRuleGroupAssociation", OutputListKey: "", OutputItemKey: "FirewallRuleGroupAssociation"}, + "GetFirewallRuleGroupPolicy": {Verb: "Get", Resource: "FirewallRuleGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetOutpostResolver": {Verb: "Get", Resource: "OutpostResolver", OutputListKey: "", OutputItemKey: "OutpostResolver"}, + "GetResolverConfig": {Verb: "Get", Resource: "ResolverConfig", OutputListKey: "", OutputItemKey: "ResolverConfig"}, + "GetResolverDnssecConfig": {Verb: "Get", Resource: "ResolverDnssecConfig", OutputListKey: "", OutputItemKey: "ResolverDNSSECConfig"}, + "GetResolverEndpoint": {Verb: "Get", Resource: "ResolverEndpoint", OutputListKey: "", OutputItemKey: "ResolverEndpoint"}, + "GetResolverQueryLogConfig": {Verb: "Get", Resource: "ResolverQueryLogConfig", OutputListKey: "", OutputItemKey: "ResolverQueryLogConfig"}, + "GetResolverQueryLogConfigAssociation": {Verb: "Get", Resource: "ResolverQueryLogConfigAssociation", OutputListKey: "", OutputItemKey: "ResolverQueryLogConfigAssociation"}, + "GetResolverQueryLogConfigPolicy": {Verb: "Get", Resource: "ResolverQueryLogConfigPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetResolverRule": {Verb: "Get", Resource: "ResolverRule", OutputListKey: "", OutputItemKey: "ResolverRule"}, + "GetResolverRuleAssociation": {Verb: "Get", Resource: "ResolverRuleAssociation", OutputListKey: "", OutputItemKey: "ResolverRuleAssociation"}, + "GetResolverRulePolicy": {Verb: "Get", Resource: "ResolverRulePolicy", OutputListKey: "", OutputItemKey: ""}, + "ListFirewallConfigs": {Verb: "List", Resource: "FirewallConfig", OutputListKey: "FirewallConfigs", OutputItemKey: ""}, + "ListFirewallDomainLists": {Verb: "List", Resource: "FirewallDomainList", OutputListKey: "FirewallDomainLists", OutputItemKey: ""}, + "ListFirewallDomains": {Verb: "List", Resource: "FirewallDomain", OutputListKey: "Domains", OutputItemKey: ""}, + "ListFirewallRuleGroupAssociations": {Verb: "List", Resource: "FirewallRuleGroupAssociation", OutputListKey: "FirewallRuleGroupAssociations", OutputItemKey: ""}, + "ListFirewallRuleGroups": {Verb: "List", Resource: "FirewallRuleGroup", OutputListKey: "FirewallRuleGroups", OutputItemKey: ""}, + "ListFirewallRules": {Verb: "List", Resource: "FirewallRule", OutputListKey: "FirewallRules", OutputItemKey: ""}, + "ListOutpostResolvers": {Verb: "List", Resource: "OutpostResolver", OutputListKey: "OutpostResolvers", OutputItemKey: ""}, + "ListResolverConfigs": {Verb: "List", Resource: "ResolverConfig", OutputListKey: "ResolverConfigs", OutputItemKey: ""}, + "ListResolverDnssecConfigs": {Verb: "List", Resource: "ResolverDnssecConfig", OutputListKey: "ResolverDnssecConfigs", OutputItemKey: ""}, + "ListResolverEndpointIpAddresses": {Verb: "List", Resource: "ResolverEndpointIpAddress", OutputListKey: "IpAddresses", OutputItemKey: ""}, + "ListResolverEndpoints": {Verb: "List", Resource: "ResolverEndpoint", OutputListKey: "ResolverEndpoints", OutputItemKey: ""}, + "ListResolverQueryLogConfigAssociations": {Verb: "List", Resource: "ResolverQueryLogConfigAssociation", OutputListKey: "ResolverQueryLogConfigAssociations", OutputItemKey: ""}, + "ListResolverQueryLogConfigs": {Verb: "List", Resource: "ResolverQueryLogConfig", OutputListKey: "ResolverQueryLogConfigs", OutputItemKey: ""}, + "ListResolverRuleAssociations": {Verb: "List", Resource: "ResolverRuleAssociation", OutputListKey: "ResolverRuleAssociations", OutputItemKey: ""}, + "ListResolverRules": {Verb: "List", Resource: "ResolverRule", OutputListKey: "ResolverRules", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "PutFirewallRuleGroupPolicy": {Verb: "Update", Resource: "FirewallRuleGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutResolverQueryLogConfigPolicy": {Verb: "Update", Resource: "ResolverQueryLogConfigPolicy", OutputListKey: "", OutputItemKey: ""}, + "PutResolverRulePolicy": {Verb: "Update", Resource: "ResolverRulePolicy", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateFirewallConfig": {Verb: "Update", Resource: "FirewallConfig", OutputListKey: "", OutputItemKey: "FirewallConfig"}, + "UpdateFirewallDomains": {Verb: "Update", Resource: "FirewallDomain", OutputListKey: "", OutputItemKey: ""}, + "UpdateFirewallRule": {Verb: "Update", Resource: "FirewallRule", OutputListKey: "", OutputItemKey: "FirewallRule"}, + "UpdateFirewallRuleGroupAssociation": {Verb: "Update", Resource: "FirewallRuleGroupAssociation", OutputListKey: "", OutputItemKey: "FirewallRuleGroupAssociation"}, + "UpdateOutpostResolver": {Verb: "Update", Resource: "OutpostResolver", OutputListKey: "", OutputItemKey: "OutpostResolver"}, + "UpdateResolverConfig": {Verb: "Update", Resource: "ResolverConfig", OutputListKey: "", OutputItemKey: "ResolverConfig"}, + "UpdateResolverDnssecConfig": {Verb: "Update", Resource: "ResolverDnssecConfig", OutputListKey: "", OutputItemKey: "ResolverDNSSECConfig"}, + "UpdateResolverEndpoint": {Verb: "Update", Resource: "ResolverEndpoint", OutputListKey: "", OutputItemKey: "ResolverEndpoint"}, + "UpdateResolverRule": {Verb: "Update", Resource: "ResolverRule", OutputListKey: "", OutputItemKey: "ResolverRule"}, + }) + crud.Register("sagemaker", map[string]crud.OpMeta{ + "CreateAction": {Verb: "Create", Resource: "Action", OutputListKey: "", OutputItemKey: ""}, + "CreateAlgorithm": {Verb: "Create", Resource: "Algorithm", OutputListKey: "", OutputItemKey: ""}, + "CreateApp": {Verb: "Create", Resource: "App", OutputListKey: "", OutputItemKey: ""}, + "CreateAppImageConfig": {Verb: "Create", Resource: "AppImageConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateArtifact": {Verb: "Create", Resource: "Artifact", OutputListKey: "", OutputItemKey: ""}, + "CreateAutoMLJob": {Verb: "Create", Resource: "AutoMLJob", OutputListKey: "", OutputItemKey: ""}, + "CreateAutoMLJobV2": {Verb: "Create", Resource: "AutoMLJobV2", OutputListKey: "", OutputItemKey: ""}, + "CreateCluster": {Verb: "Create", Resource: "Cluster", OutputListKey: "", OutputItemKey: ""}, + "CreateClusterSchedulerConfig": {Verb: "Create", Resource: "ClusterSchedulerConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateCodeRepository": {Verb: "Create", Resource: "CodeRepository", OutputListKey: "", OutputItemKey: ""}, + "CreateCompilationJob": {Verb: "Create", Resource: "CompilationJob", OutputListKey: "", OutputItemKey: ""}, + "CreateComputeQuota": {Verb: "Create", Resource: "ComputeQuota", OutputListKey: "", OutputItemKey: ""}, + "CreateContext": {Verb: "Create", Resource: "Context", OutputListKey: "", OutputItemKey: ""}, + "CreateDataQualityJobDefinition": {Verb: "Create", Resource: "DataQualityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "CreateDeviceFleet": {Verb: "Create", Resource: "DeviceFleet", OutputListKey: "", OutputItemKey: ""}, + "CreateDomain": {Verb: "Create", Resource: "Domain", OutputListKey: "", OutputItemKey: ""}, + "CreateEdgeDeploymentPlan": {Verb: "Create", Resource: "EdgeDeploymentPlan", OutputListKey: "", OutputItemKey: ""}, + "CreateEdgeDeploymentStage": {Verb: "Create", Resource: "EdgeDeploymentStage", OutputListKey: "", OutputItemKey: ""}, + "CreateEdgePackagingJob": {Verb: "Create", Resource: "EdgePackagingJob", OutputListKey: "", OutputItemKey: ""}, + "CreateEndpoint": {Verb: "Create", Resource: "Endpoint", OutputListKey: "", OutputItemKey: ""}, + "CreateEndpointConfig": {Verb: "Create", Resource: "EndpointConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateExperiment": {Verb: "Create", Resource: "Experiment", OutputListKey: "", OutputItemKey: ""}, + "CreateFeatureGroup": {Verb: "Create", Resource: "FeatureGroup", OutputListKey: "", OutputItemKey: ""}, + "CreateFlowDefinition": {Verb: "Create", Resource: "FlowDefinition", OutputListKey: "", OutputItemKey: ""}, + "CreateHub": {Verb: "Create", Resource: "Hub", OutputListKey: "", OutputItemKey: ""}, + "CreateHubContentPresignedUrls": {Verb: "Create", Resource: "HubContentPresignedUrl", OutputListKey: "AuthorizedUrlConfigs", OutputItemKey: ""}, + "CreateHubContentReference": {Verb: "Create", Resource: "HubContentReference", OutputListKey: "", OutputItemKey: ""}, + "CreateHumanTaskUi": {Verb: "Create", Resource: "HumanTaskUi", OutputListKey: "", OutputItemKey: ""}, + "CreateHyperParameterTuningJob": {Verb: "Create", Resource: "HyperParameterTuningJob", OutputListKey: "", OutputItemKey: ""}, + "CreateImage": {Verb: "Create", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "CreateImageVersion": {Verb: "Create", Resource: "ImageVersion", OutputListKey: "", OutputItemKey: ""}, + "CreateInferenceComponent": {Verb: "Create", Resource: "InferenceComponent", OutputListKey: "", OutputItemKey: ""}, + "CreateInferenceExperiment": {Verb: "Create", Resource: "InferenceExperiment", OutputListKey: "", OutputItemKey: ""}, + "CreateInferenceRecommendationsJob": {Verb: "Create", Resource: "InferenceRecommendationsJob", OutputListKey: "", OutputItemKey: ""}, + "CreateLabelingJob": {Verb: "Create", Resource: "LabelingJob", OutputListKey: "", OutputItemKey: ""}, + "CreateMlflowApp": {Verb: "Create", Resource: "MlflowApp", OutputListKey: "", OutputItemKey: ""}, + "CreateMlflowTrackingServer": {Verb: "Create", Resource: "MlflowTrackingServer", OutputListKey: "", OutputItemKey: ""}, + "CreateModel": {Verb: "Create", Resource: "Model", OutputListKey: "", OutputItemKey: ""}, + "CreateModelBiasJobDefinition": {Verb: "Create", Resource: "ModelBiasJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "CreateModelCard": {Verb: "Create", Resource: "ModelCard", OutputListKey: "", OutputItemKey: ""}, + "CreateModelCardExportJob": {Verb: "Create", Resource: "ModelCardExportJob", OutputListKey: "", OutputItemKey: ""}, + "CreateModelExplainabilityJobDefinition": {Verb: "Create", Resource: "ModelExplainabilityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "CreateModelPackage": {Verb: "Create", Resource: "ModelPackage", OutputListKey: "", OutputItemKey: ""}, + "CreateModelPackageGroup": {Verb: "Create", Resource: "ModelPackageGroup", OutputListKey: "", OutputItemKey: ""}, + "CreateModelQualityJobDefinition": {Verb: "Create", Resource: "ModelQualityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "CreateMonitoringSchedule": {Verb: "Create", Resource: "MonitoringSchedule", OutputListKey: "", OutputItemKey: ""}, + "CreateNotebookInstance": {Verb: "Create", Resource: "NotebookInstance", OutputListKey: "", OutputItemKey: ""}, + "CreateNotebookInstanceLifecycleConfig": {Verb: "Create", Resource: "NotebookInstanceLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateOptimizationJob": {Verb: "Create", Resource: "OptimizationJob", OutputListKey: "", OutputItemKey: ""}, + "CreatePartnerApp": {Verb: "Create", Resource: "PartnerApp", OutputListKey: "", OutputItemKey: ""}, + "CreatePartnerAppPresignedUrl": {Verb: "Create", Resource: "PartnerAppPresignedUrl", OutputListKey: "", OutputItemKey: ""}, + "CreatePipeline": {Verb: "Create", Resource: "Pipeline", OutputListKey: "", OutputItemKey: ""}, + "CreatePresignedDomainUrl": {Verb: "Create", Resource: "PresignedDomainUrl", OutputListKey: "", OutputItemKey: ""}, + "CreatePresignedMlflowAppUrl": {Verb: "Create", Resource: "PresignedMlflowAppUrl", OutputListKey: "", OutputItemKey: ""}, + "CreatePresignedMlflowTrackingServerUrl": {Verb: "Create", Resource: "PresignedMlflowTrackingServerUrl", OutputListKey: "", OutputItemKey: ""}, + "CreatePresignedNotebookInstanceUrl": {Verb: "Create", Resource: "PresignedNotebookInstanceUrl", OutputListKey: "", OutputItemKey: ""}, + "CreateProcessingJob": {Verb: "Create", Resource: "ProcessingJob", OutputListKey: "", OutputItemKey: ""}, + "CreateProject": {Verb: "Create", Resource: "Project", OutputListKey: "", OutputItemKey: ""}, + "CreateSpace": {Verb: "Create", Resource: "Space", OutputListKey: "", OutputItemKey: ""}, + "CreateStudioLifecycleConfig": {Verb: "Create", Resource: "StudioLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "CreateTrainingJob": {Verb: "Create", Resource: "TrainingJob", OutputListKey: "", OutputItemKey: ""}, + "CreateTrainingPlan": {Verb: "Create", Resource: "TrainingPlan", OutputListKey: "", OutputItemKey: ""}, + "CreateTransformJob": {Verb: "Create", Resource: "TransformJob", OutputListKey: "", OutputItemKey: ""}, + "CreateTrial": {Verb: "Create", Resource: "Trial", OutputListKey: "", OutputItemKey: ""}, + "CreateTrialComponent": {Verb: "Create", Resource: "TrialComponent", OutputListKey: "", OutputItemKey: ""}, + "CreateUserProfile": {Verb: "Create", Resource: "UserProfile", OutputListKey: "", OutputItemKey: ""}, + "CreateWorkforce": {Verb: "Create", Resource: "Workforce", OutputListKey: "", OutputItemKey: ""}, + "CreateWorkteam": {Verb: "Create", Resource: "Workteam", OutputListKey: "", OutputItemKey: ""}, + "DeleteAction": {Verb: "Delete", Resource: "Action", OutputListKey: "", OutputItemKey: ""}, + "DeleteAlgorithm": {Verb: "Delete", Resource: "Algorithm", OutputListKey: "", OutputItemKey: ""}, + "DeleteApp": {Verb: "Delete", Resource: "App", OutputListKey: "", OutputItemKey: ""}, + "DeleteAppImageConfig": {Verb: "Delete", Resource: "AppImageConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteArtifact": {Verb: "Delete", Resource: "Artifact", OutputListKey: "", OutputItemKey: ""}, + "DeleteAssociation": {Verb: "Delete", Resource: "Association", OutputListKey: "", OutputItemKey: ""}, + "DeleteCluster": {Verb: "Delete", Resource: "Cluster", OutputListKey: "", OutputItemKey: ""}, + "DeleteClusterSchedulerConfig": {Verb: "Delete", Resource: "ClusterSchedulerConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteCodeRepository": {Verb: "Delete", Resource: "CodeRepository", OutputListKey: "", OutputItemKey: ""}, + "DeleteCompilationJob": {Verb: "Delete", Resource: "CompilationJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteComputeQuota": {Verb: "Delete", Resource: "ComputeQuota", OutputListKey: "", OutputItemKey: ""}, + "DeleteContext": {Verb: "Delete", Resource: "Context", OutputListKey: "", OutputItemKey: ""}, + "DeleteDataQualityJobDefinition": {Verb: "Delete", Resource: "DataQualityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteDeviceFleet": {Verb: "Delete", Resource: "DeviceFleet", OutputListKey: "", OutputItemKey: ""}, + "DeleteDomain": {Verb: "Delete", Resource: "Domain", OutputListKey: "", OutputItemKey: ""}, + "DeleteEdgeDeploymentPlan": {Verb: "Delete", Resource: "EdgeDeploymentPlan", OutputListKey: "", OutputItemKey: ""}, + "DeleteEdgeDeploymentStage": {Verb: "Delete", Resource: "EdgeDeploymentStage", OutputListKey: "", OutputItemKey: ""}, + "DeleteEndpoint": {Verb: "Delete", Resource: "Endpoint", OutputListKey: "", OutputItemKey: ""}, + "DeleteEndpointConfig": {Verb: "Delete", Resource: "EndpointConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteExperiment": {Verb: "Delete", Resource: "Experiment", OutputListKey: "", OutputItemKey: ""}, + "DeleteFeatureGroup": {Verb: "Delete", Resource: "FeatureGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteFlowDefinition": {Verb: "Delete", Resource: "FlowDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteHub": {Verb: "Delete", Resource: "Hub", OutputListKey: "", OutputItemKey: ""}, + "DeleteHubContent": {Verb: "Delete", Resource: "HubContent", OutputListKey: "", OutputItemKey: ""}, + "DeleteHubContentReference": {Verb: "Delete", Resource: "HubContentReference", OutputListKey: "", OutputItemKey: ""}, + "DeleteHumanTaskUi": {Verb: "Delete", Resource: "HumanTaskUi", OutputListKey: "", OutputItemKey: ""}, + "DeleteHyperParameterTuningJob": {Verb: "Delete", Resource: "HyperParameterTuningJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteImage": {Verb: "Delete", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "DeleteImageVersion": {Verb: "Delete", Resource: "ImageVersion", OutputListKey: "", OutputItemKey: ""}, + "DeleteInferenceComponent": {Verb: "Delete", Resource: "InferenceComponent", OutputListKey: "", OutputItemKey: ""}, + "DeleteInferenceExperiment": {Verb: "Delete", Resource: "InferenceExperiment", OutputListKey: "", OutputItemKey: ""}, + "DeleteMlflowApp": {Verb: "Delete", Resource: "MlflowApp", OutputListKey: "", OutputItemKey: ""}, + "DeleteMlflowTrackingServer": {Verb: "Delete", Resource: "MlflowTrackingServer", OutputListKey: "", OutputItemKey: ""}, + "DeleteModel": {Verb: "Delete", Resource: "Model", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelBiasJobDefinition": {Verb: "Delete", Resource: "ModelBiasJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelCard": {Verb: "Delete", Resource: "ModelCard", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelExplainabilityJobDefinition": {Verb: "Delete", Resource: "ModelExplainabilityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelPackage": {Verb: "Delete", Resource: "ModelPackage", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelPackageGroup": {Verb: "Delete", Resource: "ModelPackageGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelPackageGroupPolicy": {Verb: "Delete", Resource: "ModelPackageGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteModelQualityJobDefinition": {Verb: "Delete", Resource: "ModelQualityJobDefinition", OutputListKey: "", OutputItemKey: ""}, + "DeleteMonitoringSchedule": {Verb: "Delete", Resource: "MonitoringSchedule", OutputListKey: "", OutputItemKey: ""}, + "DeleteNotebookInstance": {Verb: "Delete", Resource: "NotebookInstance", OutputListKey: "", OutputItemKey: ""}, + "DeleteNotebookInstanceLifecycleConfig": {Verb: "Delete", Resource: "NotebookInstanceLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteOptimizationJob": {Verb: "Delete", Resource: "OptimizationJob", OutputListKey: "", OutputItemKey: ""}, + "DeletePartnerApp": {Verb: "Delete", Resource: "PartnerApp", OutputListKey: "", OutputItemKey: ""}, + "DeletePipeline": {Verb: "Delete", Resource: "Pipeline", OutputListKey: "", OutputItemKey: ""}, + "DeleteProcessingJob": {Verb: "Delete", Resource: "ProcessingJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteProject": {Verb: "Delete", Resource: "Project", OutputListKey: "", OutputItemKey: ""}, + "DeleteSpace": {Verb: "Delete", Resource: "Space", OutputListKey: "", OutputItemKey: ""}, + "DeleteStudioLifecycleConfig": {Verb: "Delete", Resource: "StudioLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "DeleteTags": {Verb: "Delete", Resource: "Tag", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrainingJob": {Verb: "Delete", Resource: "TrainingJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrial": {Verb: "Delete", Resource: "Trial", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrialComponent": {Verb: "Delete", Resource: "TrialComponent", OutputListKey: "", OutputItemKey: ""}, + "DeleteUserProfile": {Verb: "Delete", Resource: "UserProfile", OutputListKey: "", OutputItemKey: ""}, + "DeleteWorkforce": {Verb: "Delete", Resource: "Workforce", OutputListKey: "", OutputItemKey: ""}, + "DeleteWorkteam": {Verb: "Delete", Resource: "Workteam", OutputListKey: "", OutputItemKey: ""}, + "DeregisterDevices": {Verb: "Delete", Resource: "Device", OutputListKey: "", OutputItemKey: ""}, + "DescribeAction": {Verb: "Get", Resource: "Action", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeAlgorithm": {Verb: "Get", Resource: "Algorithm", OutputListKey: "", OutputItemKey: "AlgorithmStatusDetails"}, + "DescribeApp": {Verb: "Get", Resource: "App", OutputListKey: "", OutputItemKey: "ResourceSpec"}, + "DescribeAppImageConfig": {Verb: "Get", Resource: "AppImageConfig", OutputListKey: "", OutputItemKey: "CodeEditorAppImageConfig"}, + "DescribeArtifact": {Verb: "Get", Resource: "Artifact", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeAutoMLJob": {Verb: "Get", Resource: "AutoMLJob", OutputListKey: "InputDataConfig", OutputItemKey: "AutoMLJobArtifacts"}, + "DescribeAutoMLJobV2": {Verb: "Get", Resource: "AutoMLJobV2", OutputListKey: "AutoMLJobInputDataConfig", OutputItemKey: "AutoMLComputeConfig"}, + "DescribeCluster": {Verb: "Get", Resource: "Cluster", OutputListKey: "InstanceGroups", OutputItemKey: "AutoScaling"}, + "DescribeClusterEvent": {Verb: "Get", Resource: "ClusterEvent", OutputListKey: "", OutputItemKey: "EventDetails"}, + "DescribeClusterNode": {Verb: "Get", Resource: "ClusterNode", OutputListKey: "", OutputItemKey: "NodeDetails"}, + "DescribeClusterSchedulerConfig": {Verb: "Get", Resource: "ClusterSchedulerConfig", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeCodeRepository": {Verb: "Get", Resource: "CodeRepository", OutputListKey: "", OutputItemKey: "GitConfig"}, + "DescribeCompilationJob": {Verb: "Get", Resource: "CompilationJob", OutputListKey: "", OutputItemKey: "DerivedInformation"}, + "DescribeComputeQuota": {Verb: "Get", Resource: "ComputeQuota", OutputListKey: "", OutputItemKey: "ComputeQuotaConfig"}, + "DescribeContext": {Verb: "Get", Resource: "Context", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeDataQualityJobDefinition": {Verb: "Get", Resource: "DataQualityJobDefinition", OutputListKey: "", OutputItemKey: "DataQualityAppSpecification"}, + "DescribeDevice": {Verb: "Get", Resource: "Device", OutputListKey: "Models", OutputItemKey: ""}, + "DescribeDeviceFleet": {Verb: "Get", Resource: "DeviceFleet", OutputListKey: "", OutputItemKey: "OutputConfig"}, + "DescribeDomain": {Verb: "Get", Resource: "Domain", OutputListKey: "SubnetIds", OutputItemKey: "DefaultSpaceSettings"}, + "DescribeEdgeDeploymentPlan": {Verb: "Get", Resource: "EdgeDeploymentPlan", OutputListKey: "ModelConfigs", OutputItemKey: ""}, + "DescribeEdgePackagingJob": {Verb: "Get", Resource: "EdgePackagingJob", OutputListKey: "", OutputItemKey: "OutputConfig"}, + "DescribeEndpoint": {Verb: "Get", Resource: "Endpoint", OutputListKey: "ProductionVariants", OutputItemKey: "AsyncInferenceConfig"}, + "DescribeEndpointConfig": {Verb: "Get", Resource: "EndpointConfig", OutputListKey: "ProductionVariants", OutputItemKey: "AsyncInferenceConfig"}, + "DescribeExperiment": {Verb: "Get", Resource: "Experiment", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeFeatureGroup": {Verb: "Get", Resource: "FeatureGroup", OutputListKey: "FeatureDefinitions", OutputItemKey: "LastUpdateStatus"}, + "DescribeFeatureMetadata": {Verb: "Get", Resource: "FeatureMetadata", OutputListKey: "Parameters", OutputItemKey: ""}, + "DescribeFlowDefinition": {Verb: "Get", Resource: "FlowDefinition", OutputListKey: "", OutputItemKey: "HumanLoopActivationConfig"}, + "DescribeHub": {Verb: "Get", Resource: "Hub", OutputListKey: "HubSearchKeywords", OutputItemKey: "S3StorageConfig"}, + "DescribeHubContent": {Verb: "Get", Resource: "HubContent", OutputListKey: "HubContentDependencies", OutputItemKey: ""}, + "DescribeHumanTaskUi": {Verb: "Get", Resource: "HumanTaskUi", OutputListKey: "", OutputItemKey: "UiTemplate"}, + "DescribeHyperParameterTuningJob": {Verb: "Get", Resource: "HyperParameterTuningJob", OutputListKey: "TrainingJobDefinitions", OutputItemKey: "Autotune"}, + "DescribeImage": {Verb: "Get", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "DescribeImageVersion": {Verb: "Get", Resource: "ImageVersion", OutputListKey: "", OutputItemKey: ""}, + "DescribeInferenceComponent": {Verb: "Get", Resource: "InferenceComponent", OutputListKey: "", OutputItemKey: "LastDeploymentConfig"}, + "DescribeInferenceExperiment": {Verb: "Get", Resource: "InferenceExperiment", OutputListKey: "ModelVariants", OutputItemKey: "DataStorageConfig"}, + "DescribeInferenceRecommendationsJob": {Verb: "Get", Resource: "InferenceRecommendationsJob", OutputListKey: "EndpointPerformances", OutputItemKey: "InputConfig"}, + "DescribeLabelingJob": {Verb: "Get", Resource: "LabelingJob", OutputListKey: "Tags", OutputItemKey: "HumanTaskConfig"}, + "DescribeLineageGroup": {Verb: "Get", Resource: "LineageGroup", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeMlflowApp": {Verb: "Get", Resource: "MlflowApp", OutputListKey: "DefaultDomainIdList", OutputItemKey: "CreatedBy"}, + "DescribeMlflowTrackingServer": {Verb: "Get", Resource: "MlflowTrackingServer", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeModel": {Verb: "Get", Resource: "Model", OutputListKey: "Containers", OutputItemKey: "DeploymentRecommendation"}, + "DescribeModelBiasJobDefinition": {Verb: "Get", Resource: "ModelBiasJobDefinition", OutputListKey: "", OutputItemKey: "JobResources"}, + "DescribeModelCard": {Verb: "Get", Resource: "ModelCard", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeModelCardExportJob": {Verb: "Get", Resource: "ModelCardExportJob", OutputListKey: "", OutputItemKey: "ExportArtifacts"}, + "DescribeModelExplainabilityJobDefinition": {Verb: "Get", Resource: "ModelExplainabilityJobDefinition", OutputListKey: "", OutputItemKey: "JobResources"}, + "DescribeModelPackage": {Verb: "Get", Resource: "ModelPackage", OutputListKey: "AdditionalInferenceSpecifications", OutputItemKey: "CreatedBy"}, + "DescribeModelPackageGroup": {Verb: "Get", Resource: "ModelPackageGroup", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeModelQualityJobDefinition": {Verb: "Get", Resource: "ModelQualityJobDefinition", OutputListKey: "", OutputItemKey: "JobResources"}, + "DescribeMonitoringSchedule": {Verb: "Get", Resource: "MonitoringSchedule", OutputListKey: "", OutputItemKey: "LastMonitoringExecutionSummary"}, + "DescribeNotebookInstance": {Verb: "Get", Resource: "NotebookInstance", OutputListKey: "AcceleratorTypes", OutputItemKey: "InstanceMetadataServiceConfiguration"}, + "DescribeNotebookInstanceLifecycleConfig": {Verb: "Get", Resource: "NotebookInstanceLifecycleConfig", OutputListKey: "OnCreate", OutputItemKey: ""}, + "DescribeOptimizationJob": {Verb: "Get", Resource: "OptimizationJob", OutputListKey: "OptimizationConfigs", OutputItemKey: "ModelSource"}, + "DescribePartnerApp": {Verb: "Get", Resource: "PartnerApp", OutputListKey: "", OutputItemKey: "ApplicationConfig"}, + "DescribePipeline": {Verb: "Get", Resource: "Pipeline", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribePipelineDefinitionForExecution": {Verb: "Get", Resource: "PipelineDefinitionForExecution", OutputListKey: "", OutputItemKey: ""}, + "DescribePipelineExecution": {Verb: "Get", Resource: "PipelineExecution", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeProcessingJob": {Verb: "Get", Resource: "ProcessingJob", OutputListKey: "ProcessingInputs", OutputItemKey: "AppSpecification"}, + "DescribeProject": {Verb: "Get", Resource: "Project", OutputListKey: "TemplateProviderDetails", OutputItemKey: "CreatedBy"}, + "DescribeReservedCapacity": {Verb: "Get", Resource: "ReservedCapacity", OutputListKey: "", OutputItemKey: "UltraServerSummary"}, + "DescribeSpace": {Verb: "Get", Resource: "Space", OutputListKey: "", OutputItemKey: "OwnershipSettings"}, + "DescribeStudioLifecycleConfig": {Verb: "Get", Resource: "StudioLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "DescribeSubscribedWorkteam": {Verb: "Get", Resource: "SubscribedWorkteam", OutputListKey: "", OutputItemKey: "SubscribedWorkteam"}, + "DescribeTrainingJob": {Verb: "Get", Resource: "TrainingJob", OutputListKey: "DebugRuleConfigurations", OutputItemKey: "AlgorithmSpecification"}, + "DescribeTrainingPlan": {Verb: "Get", Resource: "TrainingPlan", OutputListKey: "ReservedCapacitySummaries", OutputItemKey: ""}, + "DescribeTrainingPlanExtensionHistory": {Verb: "Get", Resource: "TrainingPlanExtensionHistory", OutputListKey: "TrainingPlanExtensions", OutputItemKey: ""}, + "DescribeTransformJob": {Verb: "Get", Resource: "TransformJob", OutputListKey: "", OutputItemKey: "DataCaptureConfig"}, + "DescribeTrial": {Verb: "Get", Resource: "Trial", OutputListKey: "", OutputItemKey: "CreatedBy"}, + "DescribeTrialComponent": {Verb: "Get", Resource: "TrialComponent", OutputListKey: "Metrics", OutputItemKey: "CreatedBy"}, + "DescribeUserProfile": {Verb: "Get", Resource: "UserProfile", OutputListKey: "", OutputItemKey: "UserSettings"}, + "DescribeWorkforce": {Verb: "Get", Resource: "Workforce", OutputListKey: "", OutputItemKey: "Workforce"}, + "DescribeWorkteam": {Verb: "Get", Resource: "Workteam", OutputListKey: "", OutputItemKey: "Workteam"}, + "GetDeviceFleetReport": {Verb: "Get", Resource: "DeviceFleetReport", OutputListKey: "AgentVersions", OutputItemKey: "DeviceStats"}, + "GetLineageGroupPolicy": {Verb: "Get", Resource: "LineageGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetModelPackageGroupPolicy": {Verb: "Get", Resource: "ModelPackageGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetSagemakerServicecatalogPortfolioStatus": {Verb: "Get", Resource: "SagemakerServicecatalogPortfolioStatu", OutputListKey: "", OutputItemKey: ""}, + "GetScalingConfigurationRecommendation": {Verb: "Get", Resource: "ScalingConfigurationRecommendation", OutputListKey: "", OutputItemKey: "DynamicScalingConfiguration"}, + "GetSearchSuggestions": {Verb: "Get", Resource: "SearchSuggestion", OutputListKey: "PropertyNameSuggestions", OutputItemKey: ""}, + "ListActions": {Verb: "List", Resource: "Action", OutputListKey: "ActionSummaries", OutputItemKey: ""}, + "ListAlgorithms": {Verb: "List", Resource: "Algorithm", OutputListKey: "AlgorithmSummaryList", OutputItemKey: ""}, + "ListAliases": {Verb: "List", Resource: "Aliase", OutputListKey: "SageMakerImageVersionAliases", OutputItemKey: ""}, + "ListAppImageConfigs": {Verb: "List", Resource: "AppImageConfig", OutputListKey: "AppImageConfigs", OutputItemKey: ""}, + "ListApps": {Verb: "List", Resource: "App", OutputListKey: "Apps", OutputItemKey: ""}, + "ListArtifacts": {Verb: "List", Resource: "Artifact", OutputListKey: "ArtifactSummaries", OutputItemKey: ""}, + "ListAssociations": {Verb: "List", Resource: "Association", OutputListKey: "AssociationSummaries", OutputItemKey: ""}, + "ListAutoMLJobs": {Verb: "List", Resource: "AutoMLJob", OutputListKey: "AutoMLJobSummaries", OutputItemKey: ""}, + "ListCandidatesForAutoMLJob": {Verb: "List", Resource: "CandidatesForAutoMLJob", OutputListKey: "Candidates", OutputItemKey: ""}, + "ListClusterEvents": {Verb: "List", Resource: "ClusterEvent", OutputListKey: "Events", OutputItemKey: ""}, + "ListClusterNodes": {Verb: "List", Resource: "ClusterNode", OutputListKey: "ClusterNodeSummaries", OutputItemKey: ""}, + "ListClusterSchedulerConfigs": {Verb: "List", Resource: "ClusterSchedulerConfig", OutputListKey: "ClusterSchedulerConfigSummaries", OutputItemKey: ""}, + "ListClusters": {Verb: "List", Resource: "Cluster", OutputListKey: "ClusterSummaries", OutputItemKey: ""}, + "ListCodeRepositories": {Verb: "List", Resource: "CodeRepository", OutputListKey: "CodeRepositorySummaryList", OutputItemKey: ""}, + "ListCompilationJobs": {Verb: "List", Resource: "CompilationJob", OutputListKey: "CompilationJobSummaries", OutputItemKey: ""}, + "ListComputeQuotas": {Verb: "List", Resource: "ComputeQuota", OutputListKey: "ComputeQuotaSummaries", OutputItemKey: ""}, + "ListContexts": {Verb: "List", Resource: "Context", OutputListKey: "ContextSummaries", OutputItemKey: ""}, + "ListDataQualityJobDefinitions": {Verb: "List", Resource: "DataQualityJobDefinition", OutputListKey: "JobDefinitionSummaries", OutputItemKey: ""}, + "ListDeviceFleets": {Verb: "List", Resource: "DeviceFleet", OutputListKey: "DeviceFleetSummaries", OutputItemKey: ""}, + "ListDevices": {Verb: "List", Resource: "Device", OutputListKey: "DeviceSummaries", OutputItemKey: ""}, + "ListDomains": {Verb: "List", Resource: "Domain", OutputListKey: "Domains", OutputItemKey: ""}, + "ListEdgeDeploymentPlans": {Verb: "List", Resource: "EdgeDeploymentPlan", OutputListKey: "EdgeDeploymentPlanSummaries", OutputItemKey: ""}, + "ListEdgePackagingJobs": {Verb: "List", Resource: "EdgePackagingJob", OutputListKey: "EdgePackagingJobSummaries", OutputItemKey: ""}, + "ListEndpointConfigs": {Verb: "List", Resource: "EndpointConfig", OutputListKey: "EndpointConfigs", OutputItemKey: ""}, + "ListEndpoints": {Verb: "List", Resource: "Endpoint", OutputListKey: "Endpoints", OutputItemKey: ""}, + "ListExperiments": {Verb: "List", Resource: "Experiment", OutputListKey: "ExperimentSummaries", OutputItemKey: ""}, + "ListFeatureGroups": {Verb: "List", Resource: "FeatureGroup", OutputListKey: "FeatureGroupSummaries", OutputItemKey: ""}, + "ListFlowDefinitions": {Verb: "List", Resource: "FlowDefinition", OutputListKey: "FlowDefinitionSummaries", OutputItemKey: ""}, + "ListHubContentVersions": {Verb: "List", Resource: "HubContentVersion", OutputListKey: "HubContentSummaries", OutputItemKey: ""}, + "ListHubContents": {Verb: "List", Resource: "HubContent", OutputListKey: "HubContentSummaries", OutputItemKey: ""}, + "ListHubs": {Verb: "List", Resource: "Hub", OutputListKey: "HubSummaries", OutputItemKey: ""}, + "ListHumanTaskUis": {Verb: "List", Resource: "HumanTaskUi", OutputListKey: "HumanTaskUiSummaries", OutputItemKey: ""}, + "ListHyperParameterTuningJobs": {Verb: "List", Resource: "HyperParameterTuningJob", OutputListKey: "HyperParameterTuningJobSummaries", OutputItemKey: ""}, + "ListImageVersions": {Verb: "List", Resource: "ImageVersion", OutputListKey: "ImageVersions", OutputItemKey: ""}, + "ListImages": {Verb: "List", Resource: "Image", OutputListKey: "Images", OutputItemKey: ""}, + "ListInferenceComponents": {Verb: "List", Resource: "InferenceComponent", OutputListKey: "InferenceComponents", OutputItemKey: ""}, + "ListInferenceExperiments": {Verb: "List", Resource: "InferenceExperiment", OutputListKey: "InferenceExperiments", OutputItemKey: ""}, + "ListInferenceRecommendationsJobSteps": {Verb: "List", Resource: "InferenceRecommendationsJobStep", OutputListKey: "Steps", OutputItemKey: ""}, + "ListInferenceRecommendationsJobs": {Verb: "List", Resource: "InferenceRecommendationsJob", OutputListKey: "InferenceRecommendationsJobs", OutputItemKey: ""}, + "ListLabelingJobs": {Verb: "List", Resource: "LabelingJob", OutputListKey: "LabelingJobSummaryList", OutputItemKey: ""}, + "ListLabelingJobsForWorkteam": {Verb: "List", Resource: "LabelingJobsForWorkteam", OutputListKey: "LabelingJobSummaryList", OutputItemKey: ""}, + "ListLineageGroups": {Verb: "List", Resource: "LineageGroup", OutputListKey: "LineageGroupSummaries", OutputItemKey: ""}, + "ListMlflowApps": {Verb: "List", Resource: "MlflowApp", OutputListKey: "Summaries", OutputItemKey: ""}, + "ListMlflowTrackingServers": {Verb: "List", Resource: "MlflowTrackingServer", OutputListKey: "TrackingServerSummaries", OutputItemKey: ""}, + "ListModelBiasJobDefinitions": {Verb: "List", Resource: "ModelBiasJobDefinition", OutputListKey: "JobDefinitionSummaries", OutputItemKey: ""}, + "ListModelCardExportJobs": {Verb: "List", Resource: "ModelCardExportJob", OutputListKey: "ModelCardExportJobSummaries", OutputItemKey: ""}, + "ListModelCardVersions": {Verb: "List", Resource: "ModelCardVersion", OutputListKey: "ModelCardVersionSummaryList", OutputItemKey: ""}, + "ListModelCards": {Verb: "List", Resource: "ModelCard", OutputListKey: "ModelCardSummaries", OutputItemKey: ""}, + "ListModelExplainabilityJobDefinitions": {Verb: "List", Resource: "ModelExplainabilityJobDefinition", OutputListKey: "JobDefinitionSummaries", OutputItemKey: ""}, + "ListModelMetadata": {Verb: "List", Resource: "ModelMetadata", OutputListKey: "ModelMetadataSummaries", OutputItemKey: ""}, + "ListModelPackageGroups": {Verb: "List", Resource: "ModelPackageGroup", OutputListKey: "ModelPackageGroupSummaryList", OutputItemKey: ""}, + "ListModelPackages": {Verb: "List", Resource: "ModelPackage", OutputListKey: "ModelPackageSummaryList", OutputItemKey: ""}, + "ListModelQualityJobDefinitions": {Verb: "List", Resource: "ModelQualityJobDefinition", OutputListKey: "JobDefinitionSummaries", OutputItemKey: ""}, + "ListModels": {Verb: "List", Resource: "Model", OutputListKey: "Models", OutputItemKey: ""}, + "ListMonitoringAlertHistory": {Verb: "List", Resource: "MonitoringAlertHistory", OutputListKey: "MonitoringAlertHistory", OutputItemKey: ""}, + "ListMonitoringAlerts": {Verb: "List", Resource: "MonitoringAlert", OutputListKey: "MonitoringAlertSummaries", OutputItemKey: ""}, + "ListMonitoringExecutions": {Verb: "List", Resource: "MonitoringExecution", OutputListKey: "MonitoringExecutionSummaries", OutputItemKey: ""}, + "ListMonitoringSchedules": {Verb: "List", Resource: "MonitoringSchedule", OutputListKey: "MonitoringScheduleSummaries", OutputItemKey: ""}, + "ListNotebookInstanceLifecycleConfigs": {Verb: "List", Resource: "NotebookInstanceLifecycleConfig", OutputListKey: "NotebookInstanceLifecycleConfigs", OutputItemKey: ""}, + "ListNotebookInstances": {Verb: "List", Resource: "NotebookInstance", OutputListKey: "NotebookInstances", OutputItemKey: ""}, + "ListOptimizationJobs": {Verb: "List", Resource: "OptimizationJob", OutputListKey: "OptimizationJobSummaries", OutputItemKey: ""}, + "ListPartnerApps": {Verb: "List", Resource: "PartnerApp", OutputListKey: "Summaries", OutputItemKey: ""}, + "ListPipelineExecutionSteps": {Verb: "List", Resource: "PipelineExecutionStep", OutputListKey: "PipelineExecutionSteps", OutputItemKey: ""}, + "ListPipelineExecutions": {Verb: "List", Resource: "PipelineExecution", OutputListKey: "PipelineExecutionSummaries", OutputItemKey: ""}, + "ListPipelineParametersForExecution": {Verb: "List", Resource: "PipelineParametersForExecution", OutputListKey: "PipelineParameters", OutputItemKey: ""}, + "ListPipelineVersions": {Verb: "List", Resource: "PipelineVersion", OutputListKey: "PipelineVersionSummaries", OutputItemKey: ""}, + "ListPipelines": {Verb: "List", Resource: "Pipeline", OutputListKey: "PipelineSummaries", OutputItemKey: ""}, + "ListProcessingJobs": {Verb: "List", Resource: "ProcessingJob", OutputListKey: "ProcessingJobSummaries", OutputItemKey: ""}, + "ListProjects": {Verb: "List", Resource: "Project", OutputListKey: "ProjectSummaryList", OutputItemKey: ""}, + "ListResourceCatalogs": {Verb: "List", Resource: "ResourceCatalog", OutputListKey: "ResourceCatalogs", OutputItemKey: ""}, + "ListSpaces": {Verb: "List", Resource: "Space", OutputListKey: "Spaces", OutputItemKey: ""}, + "ListStageDevices": {Verb: "List", Resource: "StageDevice", OutputListKey: "DeviceDeploymentSummaries", OutputItemKey: ""}, + "ListStudioLifecycleConfigs": {Verb: "List", Resource: "StudioLifecycleConfig", OutputListKey: "StudioLifecycleConfigs", OutputItemKey: ""}, + "ListSubscribedWorkteams": {Verb: "List", Resource: "SubscribedWorkteam", OutputListKey: "SubscribedWorkteams", OutputItemKey: ""}, + "ListTags": {Verb: "List", Resource: "Tag", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTrainingJobs": {Verb: "List", Resource: "TrainingJob", OutputListKey: "TrainingJobSummaries", OutputItemKey: ""}, + "ListTrainingJobsForHyperParameterTuningJob": {Verb: "List", Resource: "TrainingJobsForHyperParameterTuningJob", OutputListKey: "TrainingJobSummaries", OutputItemKey: ""}, + "ListTrainingPlans": {Verb: "List", Resource: "TrainingPlan", OutputListKey: "TrainingPlanSummaries", OutputItemKey: ""}, + "ListTransformJobs": {Verb: "List", Resource: "TransformJob", OutputListKey: "TransformJobSummaries", OutputItemKey: ""}, + "ListTrialComponents": {Verb: "List", Resource: "TrialComponent", OutputListKey: "TrialComponentSummaries", OutputItemKey: ""}, + "ListTrials": {Verb: "List", Resource: "Trial", OutputListKey: "TrialSummaries", OutputItemKey: ""}, + "ListUltraServersByReservedCapacity": {Verb: "List", Resource: "UltraServersByReservedCapacity", OutputListKey: "UltraServers", OutputItemKey: ""}, + "ListUserProfiles": {Verb: "List", Resource: "UserProfile", OutputListKey: "UserProfiles", OutputItemKey: ""}, + "ListWorkforces": {Verb: "List", Resource: "Workforce", OutputListKey: "Workforces", OutputItemKey: ""}, + "ListWorkteams": {Verb: "List", Resource: "Workteam", OutputListKey: "Workteams", OutputItemKey: ""}, + "PutModelPackageGroupPolicy": {Verb: "Update", Resource: "ModelPackageGroupPolicy", OutputListKey: "", OutputItemKey: ""}, + "RegisterDevices": {Verb: "Create", Resource: "Device", OutputListKey: "", OutputItemKey: ""}, + "UpdateAction": {Verb: "Update", Resource: "Action", OutputListKey: "", OutputItemKey: ""}, + "UpdateAppImageConfig": {Verb: "Update", Resource: "AppImageConfig", OutputListKey: "", OutputItemKey: ""}, + "UpdateArtifact": {Verb: "Update", Resource: "Artifact", OutputListKey: "", OutputItemKey: ""}, + "UpdateCluster": {Verb: "Update", Resource: "Cluster", OutputListKey: "", OutputItemKey: ""}, + "UpdateClusterSchedulerConfig": {Verb: "Update", Resource: "ClusterSchedulerConfig", OutputListKey: "", OutputItemKey: ""}, + "UpdateClusterSoftware": {Verb: "Update", Resource: "ClusterSoftware", OutputListKey: "", OutputItemKey: ""}, + "UpdateCodeRepository": {Verb: "Update", Resource: "CodeRepository", OutputListKey: "", OutputItemKey: ""}, + "UpdateComputeQuota": {Verb: "Update", Resource: "ComputeQuota", OutputListKey: "", OutputItemKey: ""}, + "UpdateContext": {Verb: "Update", Resource: "Context", OutputListKey: "", OutputItemKey: ""}, + "UpdateDeviceFleet": {Verb: "Update", Resource: "DeviceFleet", OutputListKey: "", OutputItemKey: ""}, + "UpdateDevices": {Verb: "Update", Resource: "Device", OutputListKey: "", OutputItemKey: ""}, + "UpdateDomain": {Verb: "Update", Resource: "Domain", OutputListKey: "", OutputItemKey: ""}, + "UpdateEndpoint": {Verb: "Update", Resource: "Endpoint", OutputListKey: "", OutputItemKey: ""}, + "UpdateEndpointWeightsAndCapacities": {Verb: "Update", Resource: "EndpointWeightsAndCapacity", OutputListKey: "", OutputItemKey: ""}, + "UpdateExperiment": {Verb: "Update", Resource: "Experiment", OutputListKey: "", OutputItemKey: ""}, + "UpdateFeatureGroup": {Verb: "Update", Resource: "FeatureGroup", OutputListKey: "", OutputItemKey: ""}, + "UpdateFeatureMetadata": {Verb: "Update", Resource: "FeatureMetadata", OutputListKey: "", OutputItemKey: ""}, + "UpdateHub": {Verb: "Update", Resource: "Hub", OutputListKey: "", OutputItemKey: ""}, + "UpdateHubContent": {Verb: "Update", Resource: "HubContent", OutputListKey: "", OutputItemKey: ""}, + "UpdateHubContentReference": {Verb: "Update", Resource: "HubContentReference", OutputListKey: "", OutputItemKey: ""}, + "UpdateImage": {Verb: "Update", Resource: "Image", OutputListKey: "", OutputItemKey: ""}, + "UpdateImageVersion": {Verb: "Update", Resource: "ImageVersion", OutputListKey: "", OutputItemKey: ""}, + "UpdateInferenceComponent": {Verb: "Update", Resource: "InferenceComponent", OutputListKey: "", OutputItemKey: ""}, + "UpdateInferenceComponentRuntimeConfig": {Verb: "Update", Resource: "InferenceComponentRuntimeConfig", OutputListKey: "", OutputItemKey: ""}, + "UpdateInferenceExperiment": {Verb: "Update", Resource: "InferenceExperiment", OutputListKey: "", OutputItemKey: ""}, + "UpdateMlflowApp": {Verb: "Update", Resource: "MlflowApp", OutputListKey: "", OutputItemKey: ""}, + "UpdateMlflowTrackingServer": {Verb: "Update", Resource: "MlflowTrackingServer", OutputListKey: "", OutputItemKey: ""}, + "UpdateModelCard": {Verb: "Update", Resource: "ModelCard", OutputListKey: "", OutputItemKey: ""}, + "UpdateModelPackage": {Verb: "Update", Resource: "ModelPackage", OutputListKey: "", OutputItemKey: ""}, + "UpdateMonitoringAlert": {Verb: "Update", Resource: "MonitoringAlert", OutputListKey: "", OutputItemKey: ""}, + "UpdateMonitoringSchedule": {Verb: "Update", Resource: "MonitoringSchedule", OutputListKey: "", OutputItemKey: ""}, + "UpdateNotebookInstance": {Verb: "Update", Resource: "NotebookInstance", OutputListKey: "", OutputItemKey: ""}, + "UpdateNotebookInstanceLifecycleConfig": {Verb: "Update", Resource: "NotebookInstanceLifecycleConfig", OutputListKey: "", OutputItemKey: ""}, + "UpdatePartnerApp": {Verb: "Update", Resource: "PartnerApp", OutputListKey: "", OutputItemKey: ""}, + "UpdatePipeline": {Verb: "Update", Resource: "Pipeline", OutputListKey: "", OutputItemKey: ""}, + "UpdatePipelineExecution": {Verb: "Update", Resource: "PipelineExecution", OutputListKey: "", OutputItemKey: ""}, + "UpdatePipelineVersion": {Verb: "Update", Resource: "PipelineVersion", OutputListKey: "", OutputItemKey: ""}, + "UpdateProject": {Verb: "Update", Resource: "Project", OutputListKey: "", OutputItemKey: ""}, + "UpdateSpace": {Verb: "Update", Resource: "Space", OutputListKey: "", OutputItemKey: ""}, + "UpdateTrainingJob": {Verb: "Update", Resource: "TrainingJob", OutputListKey: "", OutputItemKey: ""}, + "UpdateTrial": {Verb: "Update", Resource: "Trial", OutputListKey: "", OutputItemKey: ""}, + "UpdateTrialComponent": {Verb: "Update", Resource: "TrialComponent", OutputListKey: "", OutputItemKey: ""}, + "UpdateUserProfile": {Verb: "Update", Resource: "UserProfile", OutputListKey: "", OutputItemKey: ""}, + "UpdateWorkforce": {Verb: "Update", Resource: "Workforce", OutputListKey: "", OutputItemKey: "Workforce"}, + "UpdateWorkteam": {Verb: "Update", Resource: "Workteam", OutputListKey: "", OutputItemKey: "Workteam"}, + }) + crud.Register("secretsmanager", map[string]crud.OpMeta{ + "BatchGetSecretValue": {Verb: "List", Resource: "SecretValue", OutputListKey: "Errors", OutputItemKey: ""}, + "CreateSecret": {Verb: "Create", Resource: "Secret", OutputListKey: "ReplicationStatus", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteSecret": {Verb: "Delete", Resource: "Secret", OutputListKey: "", OutputItemKey: ""}, + "DescribeSecret": {Verb: "Get", Resource: "Secret", OutputListKey: "ExternalSecretRotationMetadata", OutputItemKey: "RotationRules"}, + "GetRandomPassword": {Verb: "Get", Resource: "RandomPassword", OutputListKey: "", OutputItemKey: ""}, + "GetResourcePolicy": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "GetSecretValue": {Verb: "Get", Resource: "SecretValue", OutputListKey: "VersionStages", OutputItemKey: ""}, + "ListSecretVersionIds": {Verb: "List", Resource: "SecretVersionId", OutputListKey: "Versions", OutputItemKey: ""}, + "ListSecrets": {Verb: "List", Resource: "Secret", OutputListKey: "SecretList", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "PutSecretValue": {Verb: "Update", Resource: "SecretValue", OutputListKey: "VersionStages", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateSecret": {Verb: "Update", Resource: "Secret", OutputListKey: "", OutputItemKey: ""}, + "UpdateSecretVersionStage": {Verb: "Update", Resource: "SecretVersionStage", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("servicediscovery", map[string]crud.OpMeta{ + "CreateHttpNamespace": {Verb: "Create", Resource: "HttpNamespace", OutputListKey: "", OutputItemKey: ""}, + "CreatePrivateDnsNamespace": {Verb: "Create", Resource: "PrivateDnsNamespace", OutputListKey: "", OutputItemKey: ""}, + "CreatePublicDnsNamespace": {Verb: "Create", Resource: "PublicDnsNamespace", OutputListKey: "", OutputItemKey: ""}, + "CreateService": {Verb: "Create", Resource: "Service", OutputListKey: "", OutputItemKey: "Service"}, + "DeleteNamespace": {Verb: "Delete", Resource: "Namespace", OutputListKey: "", OutputItemKey: ""}, + "DeleteService": {Verb: "Delete", Resource: "Service", OutputListKey: "", OutputItemKey: ""}, + "DeleteServiceAttributes": {Verb: "Delete", Resource: "ServiceAttribute", OutputListKey: "", OutputItemKey: ""}, + "DeregisterInstance": {Verb: "Delete", Resource: "Instance", OutputListKey: "", OutputItemKey: ""}, + "GetInstance": {Verb: "Get", Resource: "Instance", OutputListKey: "", OutputItemKey: "Instance"}, + "GetInstancesHealthStatus": {Verb: "Get", Resource: "InstancesHealthStatu", OutputListKey: "", OutputItemKey: ""}, + "GetNamespace": {Verb: "Get", Resource: "Namespace", OutputListKey: "", OutputItemKey: "Namespace"}, + "GetOperation": {Verb: "Get", Resource: "Operation", OutputListKey: "", OutputItemKey: "Operation"}, + "GetService": {Verb: "Get", Resource: "Service", OutputListKey: "", OutputItemKey: "Service"}, + "GetServiceAttributes": {Verb: "Get", Resource: "ServiceAttribute", OutputListKey: "", OutputItemKey: "ServiceAttributes"}, + "ListInstances": {Verb: "List", Resource: "Instance", OutputListKey: "Instances", OutputItemKey: ""}, + "ListNamespaces": {Verb: "List", Resource: "Namespace", OutputListKey: "Namespaces", OutputItemKey: ""}, + "ListOperations": {Verb: "List", Resource: "Operation", OutputListKey: "Operations", OutputItemKey: ""}, + "ListServices": {Verb: "List", Resource: "Service", OutputListKey: "Services", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "RegisterInstance": {Verb: "Create", Resource: "Instance", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateHttpNamespace": {Verb: "Update", Resource: "HttpNamespace", OutputListKey: "", OutputItemKey: ""}, + "UpdateInstanceCustomHealthStatus": {Verb: "Update", Resource: "InstanceCustomHealthStatu", OutputListKey: "", OutputItemKey: ""}, + "UpdatePrivateDnsNamespace": {Verb: "Update", Resource: "PrivateDnsNamespace", OutputListKey: "", OutputItemKey: ""}, + "UpdatePublicDnsNamespace": {Verb: "Update", Resource: "PublicDnsNamespace", OutputListKey: "", OutputItemKey: ""}, + "UpdateService": {Verb: "Update", Resource: "Service", OutputListKey: "", OutputItemKey: ""}, + "UpdateServiceAttributes": {Verb: "Update", Resource: "ServiceAttribute", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("sfn", map[string]crud.OpMeta{ + "CreateActivity": {Verb: "Create", Resource: "Activity", OutputListKey: "", OutputItemKey: ""}, + "CreateStateMachine": {Verb: "Create", Resource: "StateMachine", OutputListKey: "", OutputItemKey: ""}, + "CreateStateMachineAlias": {Verb: "Create", Resource: "StateMachineAlia", OutputListKey: "", OutputItemKey: ""}, + "DeleteActivity": {Verb: "Delete", Resource: "Activity", OutputListKey: "", OutputItemKey: ""}, + "DeleteStateMachine": {Verb: "Delete", Resource: "StateMachine", OutputListKey: "", OutputItemKey: ""}, + "DeleteStateMachineAlias": {Verb: "Delete", Resource: "StateMachineAlia", OutputListKey: "", OutputItemKey: ""}, + "DeleteStateMachineVersion": {Verb: "Delete", Resource: "StateMachineVersion", OutputListKey: "", OutputItemKey: ""}, + "DescribeActivity": {Verb: "Get", Resource: "Activity", OutputListKey: "", OutputItemKey: "encryptionConfiguration"}, + "DescribeExecution": {Verb: "Get", Resource: "Execution", OutputListKey: "", OutputItemKey: "inputDetails"}, + "DescribeMapRun": {Verb: "Get", Resource: "MapRun", OutputListKey: "", OutputItemKey: "executionCounts"}, + "DescribeStateMachine": {Verb: "Get", Resource: "StateMachine", OutputListKey: "", OutputItemKey: "encryptionConfiguration"}, + "DescribeStateMachineAlias": {Verb: "Get", Resource: "StateMachineAlia", OutputListKey: "routingConfiguration", OutputItemKey: ""}, + "DescribeStateMachineForExecution": {Verb: "Get", Resource: "StateMachineForExecution", OutputListKey: "", OutputItemKey: "encryptionConfiguration"}, + "GetActivityTask": {Verb: "Get", Resource: "ActivityTask", OutputListKey: "", OutputItemKey: ""}, + "GetExecutionHistory": {Verb: "Get", Resource: "ExecutionHistory", OutputListKey: "events", OutputItemKey: ""}, + "ListActivities": {Verb: "List", Resource: "Activity", OutputListKey: "activities", OutputItemKey: ""}, + "ListExecutions": {Verb: "List", Resource: "Execution", OutputListKey: "executions", OutputItemKey: ""}, + "ListMapRuns": {Verb: "List", Resource: "MapRun", OutputListKey: "mapRuns", OutputItemKey: ""}, + "ListStateMachineAliases": {Verb: "List", Resource: "StateMachineAliase", OutputListKey: "stateMachineAliases", OutputItemKey: ""}, + "ListStateMachineVersions": {Verb: "List", Resource: "StateMachineVersion", OutputListKey: "stateMachineVersions", OutputItemKey: ""}, + "ListStateMachines": {Verb: "List", Resource: "StateMachine", OutputListKey: "stateMachines", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "tags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateMapRun": {Verb: "Update", Resource: "MapRun", OutputListKey: "", OutputItemKey: ""}, + "UpdateStateMachine": {Verb: "Update", Resource: "StateMachine", OutputListKey: "", OutputItemKey: ""}, + "UpdateStateMachineAlias": {Verb: "Update", Resource: "StateMachineAlia", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("shield", map[string]crud.OpMeta{ + "CreateProtection": {Verb: "Create", Resource: "Protection", OutputListKey: "", OutputItemKey: ""}, + "CreateProtectionGroup": {Verb: "Create", Resource: "ProtectionGroup", OutputListKey: "", OutputItemKey: ""}, + "CreateSubscription": {Verb: "Create", Resource: "Subscription", OutputListKey: "", OutputItemKey: ""}, + "DeleteProtection": {Verb: "Delete", Resource: "Protection", OutputListKey: "", OutputItemKey: ""}, + "DeleteProtectionGroup": {Verb: "Delete", Resource: "ProtectionGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteSubscription": {Verb: "Delete", Resource: "Subscription", OutputListKey: "", OutputItemKey: ""}, + "DescribeAttack": {Verb: "Get", Resource: "Attack", OutputListKey: "", OutputItemKey: "Attack"}, + "DescribeAttackStatistics": {Verb: "Get", Resource: "AttackStatistic", OutputListKey: "DataItems", OutputItemKey: "TimeRange"}, + "DescribeDRTAccess": {Verb: "Get", Resource: "DRTAccess", OutputListKey: "LogBucketList", OutputItemKey: ""}, + "DescribeEmergencyContactSettings": {Verb: "Get", Resource: "EmergencyContactSetting", OutputListKey: "EmergencyContactList", OutputItemKey: ""}, + "DescribeProtection": {Verb: "Get", Resource: "Protection", OutputListKey: "", OutputItemKey: "Protection"}, + "DescribeProtectionGroup": {Verb: "Get", Resource: "ProtectionGroup", OutputListKey: "", OutputItemKey: "ProtectionGroup"}, + "DescribeSubscription": {Verb: "Get", Resource: "Subscription", OutputListKey: "", OutputItemKey: "Subscription"}, + "GetSubscriptionState": {Verb: "Get", Resource: "SubscriptionState", OutputListKey: "", OutputItemKey: ""}, + "ListAttacks": {Verb: "List", Resource: "Attack", OutputListKey: "AttackSummaries", OutputItemKey: ""}, + "ListProtectionGroups": {Verb: "List", Resource: "ProtectionGroup", OutputListKey: "ProtectionGroups", OutputItemKey: ""}, + "ListProtections": {Verb: "List", Resource: "Protection", OutputListKey: "Protections", OutputItemKey: ""}, + "ListResourcesInProtectionGroup": {Verb: "List", Resource: "ResourcesInProtectionGroup", OutputListKey: "ResourceArns", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApplicationLayerAutomaticResponse": {Verb: "Update", Resource: "ApplicationLayerAutomaticResponse", OutputListKey: "", OutputItemKey: ""}, + "UpdateEmergencyContactSettings": {Verb: "Update", Resource: "EmergencyContactSetting", OutputListKey: "", OutputItemKey: ""}, + "UpdateProtectionGroup": {Verb: "Update", Resource: "ProtectionGroup", OutputListKey: "", OutputItemKey: ""}, + "UpdateSubscription": {Verb: "Update", Resource: "Subscription", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("sqs", map[string]crud.OpMeta{ + "CreateQueue": {Verb: "Create", Resource: "Queue", OutputListKey: "", OutputItemKey: ""}, + "DeleteMessage": {Verb: "Delete", Resource: "Message", OutputListKey: "", OutputItemKey: ""}, + "DeleteMessageBatch": {Verb: "Delete", Resource: "MessageBatch", OutputListKey: "Failed", OutputItemKey: ""}, + "DeleteQueue": {Verb: "Delete", Resource: "Queue", OutputListKey: "", OutputItemKey: ""}, + "GetQueueAttributes": {Verb: "Get", Resource: "QueueAttribute", OutputListKey: "", OutputItemKey: ""}, + "GetQueueUrl": {Verb: "Get", Resource: "QueueUrl", OutputListKey: "", OutputItemKey: ""}, + "ListDeadLetterSourceQueues": {Verb: "List", Resource: "DeadLetterSourceQueue", OutputListKey: "queueUrls", OutputItemKey: ""}, + "ListMessageMoveTasks": {Verb: "List", Resource: "MessageMoveTask", OutputListKey: "Results", OutputItemKey: ""}, + "ListQueueTags": {Verb: "List", Resource: "QueueTag", OutputListKey: "", OutputItemKey: ""}, + "ListQueues": {Verb: "List", Resource: "Queue", OutputListKey: "QueueUrls", OutputItemKey: ""}, + "TagQueue": {Verb: "Tag", Resource: "Queue", OutputListKey: "", OutputItemKey: ""}, + "UntagQueue": {Verb: "Untag", Resource: "Queue", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("ssm", map[string]crud.OpMeta{ + "CreateActivation": {Verb: "Create", Resource: "Activation", OutputListKey: "", OutputItemKey: ""}, + "CreateAssociation": {Verb: "Create", Resource: "Association", OutputListKey: "", OutputItemKey: "AssociationDescription"}, + "CreateAssociationBatch": {Verb: "Create", Resource: "AssociationBatch", OutputListKey: "Failed", OutputItemKey: ""}, + "CreateDocument": {Verb: "Create", Resource: "Document", OutputListKey: "", OutputItemKey: "DocumentDescription"}, + "CreateMaintenanceWindow": {Verb: "Create", Resource: "MaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "CreateOpsItem": {Verb: "Create", Resource: "OpsItem", OutputListKey: "", OutputItemKey: ""}, + "CreateOpsMetadata": {Verb: "Create", Resource: "OpsMetadata", OutputListKey: "", OutputItemKey: ""}, + "CreatePatchBaseline": {Verb: "Create", Resource: "PatchBaseline", OutputListKey: "", OutputItemKey: ""}, + "CreateResourceDataSync": {Verb: "Create", Resource: "ResourceDataSync", OutputListKey: "", OutputItemKey: ""}, + "DeleteActivation": {Verb: "Delete", Resource: "Activation", OutputListKey: "", OutputItemKey: ""}, + "DeleteAssociation": {Verb: "Delete", Resource: "Association", OutputListKey: "", OutputItemKey: ""}, + "DeleteDocument": {Verb: "Delete", Resource: "Document", OutputListKey: "", OutputItemKey: ""}, + "DeleteInventory": {Verb: "Delete", Resource: "Inventory", OutputListKey: "", OutputItemKey: "DeletionSummary"}, + "DeleteMaintenanceWindow": {Verb: "Delete", Resource: "MaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "DeleteOpsItem": {Verb: "Delete", Resource: "OpsItem", OutputListKey: "", OutputItemKey: ""}, + "DeleteOpsMetadata": {Verb: "Delete", Resource: "OpsMetadata", OutputListKey: "", OutputItemKey: ""}, + "DeleteParameter": {Verb: "Delete", Resource: "Parameter", OutputListKey: "", OutputItemKey: ""}, + "DeleteParameters": {Verb: "Delete", Resource: "Parameter", OutputListKey: "DeletedParameters", OutputItemKey: ""}, + "DeletePatchBaseline": {Verb: "Delete", Resource: "PatchBaseline", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourceDataSync": {Verb: "Delete", Resource: "ResourceDataSync", OutputListKey: "", OutputItemKey: ""}, + "DeleteResourcePolicy": {Verb: "Delete", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "DeregisterManagedInstance": {Verb: "Delete", Resource: "ManagedInstance", OutputListKey: "", OutputItemKey: ""}, + "DeregisterPatchBaselineForPatchGroup": {Verb: "Delete", Resource: "PatchBaselineForPatchGroup", OutputListKey: "", OutputItemKey: ""}, + "DeregisterTargetFromMaintenanceWindow": {Verb: "Delete", Resource: "TargetFromMaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "DeregisterTaskFromMaintenanceWindow": {Verb: "Delete", Resource: "TaskFromMaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "DescribeActivations": {Verb: "Get", Resource: "Activation", OutputListKey: "ActivationList", OutputItemKey: ""}, + "DescribeAssociation": {Verb: "Get", Resource: "Association", OutputListKey: "", OutputItemKey: "AssociationDescription"}, + "DescribeAssociationExecutionTargets": {Verb: "Get", Resource: "AssociationExecutionTarget", OutputListKey: "AssociationExecutionTargets", OutputItemKey: ""}, + "DescribeAssociationExecutions": {Verb: "Get", Resource: "AssociationExecution", OutputListKey: "AssociationExecutions", OutputItemKey: ""}, + "DescribeAutomationExecutions": {Verb: "Get", Resource: "AutomationExecution", OutputListKey: "AutomationExecutionMetadataList", OutputItemKey: ""}, + "DescribeAutomationStepExecutions": {Verb: "Get", Resource: "AutomationStepExecution", OutputListKey: "StepExecutions", OutputItemKey: ""}, + "DescribeAvailablePatches": {Verb: "Get", Resource: "AvailablePatche", OutputListKey: "Patches", OutputItemKey: ""}, + "DescribeDocument": {Verb: "Get", Resource: "Document", OutputListKey: "", OutputItemKey: "Document"}, + "DescribeDocumentPermission": {Verb: "Get", Resource: "DocumentPermission", OutputListKey: "AccountIds", OutputItemKey: ""}, + "DescribeEffectiveInstanceAssociations": {Verb: "Get", Resource: "EffectiveInstanceAssociation", OutputListKey: "Associations", OutputItemKey: ""}, + "DescribeEffectivePatchesForPatchBaseline": {Verb: "Get", Resource: "EffectivePatchesForPatchBaseline", OutputListKey: "EffectivePatches", OutputItemKey: ""}, + "DescribeInstanceAssociationsStatus": {Verb: "Get", Resource: "InstanceAssociationsStatu", OutputListKey: "InstanceAssociationStatusInfos", OutputItemKey: ""}, + "DescribeInstanceInformation": {Verb: "Get", Resource: "InstanceInformation", OutputListKey: "InstanceInformationList", OutputItemKey: ""}, + "DescribeInstancePatchStates": {Verb: "Get", Resource: "InstancePatchState", OutputListKey: "InstancePatchStates", OutputItemKey: ""}, + "DescribeInstancePatchStatesForPatchGroup": {Verb: "Get", Resource: "InstancePatchStatesForPatchGroup", OutputListKey: "InstancePatchStates", OutputItemKey: ""}, + "DescribeInstancePatches": {Verb: "Get", Resource: "InstancePatche", OutputListKey: "Patches", OutputItemKey: ""}, + "DescribeInstanceProperties": {Verb: "Get", Resource: "InstanceProperty", OutputListKey: "InstanceProperties", OutputItemKey: ""}, + "DescribeInventoryDeletions": {Verb: "Get", Resource: "InventoryDeletion", OutputListKey: "InventoryDeletions", OutputItemKey: ""}, + "DescribeMaintenanceWindowExecutionTaskInvocations": {Verb: "Get", Resource: "MaintenanceWindowExecutionTaskInvocation", OutputListKey: "WindowExecutionTaskInvocationIdentities", OutputItemKey: ""}, + "DescribeMaintenanceWindowExecutionTasks": {Verb: "Get", Resource: "MaintenanceWindowExecutionTask", OutputListKey: "WindowExecutionTaskIdentities", OutputItemKey: ""}, + "DescribeMaintenanceWindowExecutions": {Verb: "Get", Resource: "MaintenanceWindowExecution", OutputListKey: "WindowExecutions", OutputItemKey: ""}, + "DescribeMaintenanceWindowSchedule": {Verb: "Get", Resource: "MaintenanceWindowSchedule", OutputListKey: "ScheduledWindowExecutions", OutputItemKey: ""}, + "DescribeMaintenanceWindowTargets": {Verb: "Get", Resource: "MaintenanceWindowTarget", OutputListKey: "Targets", OutputItemKey: ""}, + "DescribeMaintenanceWindowTasks": {Verb: "Get", Resource: "MaintenanceWindowTask", OutputListKey: "Tasks", OutputItemKey: ""}, + "DescribeMaintenanceWindows": {Verb: "Get", Resource: "MaintenanceWindow", OutputListKey: "WindowIdentities", OutputItemKey: ""}, + "DescribeMaintenanceWindowsForTarget": {Verb: "Get", Resource: "MaintenanceWindowsForTarget", OutputListKey: "WindowIdentities", OutputItemKey: ""}, + "DescribeOpsItems": {Verb: "Get", Resource: "OpsItem", OutputListKey: "OpsItemSummaries", OutputItemKey: ""}, + "DescribeParameters": {Verb: "Get", Resource: "Parameter", OutputListKey: "Parameters", OutputItemKey: ""}, + "DescribePatchBaselines": {Verb: "Get", Resource: "PatchBaseline", OutputListKey: "BaselineIdentities", OutputItemKey: ""}, + "DescribePatchGroupState": {Verb: "Get", Resource: "PatchGroupState", OutputListKey: "", OutputItemKey: ""}, + "DescribePatchGroups": {Verb: "Get", Resource: "PatchGroup", OutputListKey: "Mappings", OutputItemKey: ""}, + "DescribePatchProperties": {Verb: "Get", Resource: "PatchProperty", OutputListKey: "Properties", OutputItemKey: ""}, + "DescribeSessions": {Verb: "Get", Resource: "Session", OutputListKey: "Sessions", OutputItemKey: ""}, + "GetAccessToken": {Verb: "Get", Resource: "AccessToken", OutputListKey: "", OutputItemKey: "Credentials"}, + "GetAutomationExecution": {Verb: "Get", Resource: "AutomationExecution", OutputListKey: "", OutputItemKey: "AutomationExecution"}, + "GetCalendarState": {Verb: "Get", Resource: "CalendarState", OutputListKey: "", OutputItemKey: ""}, + "GetCommandInvocation": {Verb: "Get", Resource: "CommandInvocation", OutputListKey: "", OutputItemKey: "CloudWatchOutputConfig"}, + "GetConnectionStatus": {Verb: "Get", Resource: "ConnectionStatu", OutputListKey: "", OutputItemKey: ""}, + "GetDefaultPatchBaseline": {Verb: "Get", Resource: "DefaultPatchBaseline", OutputListKey: "", OutputItemKey: ""}, + "GetDeployablePatchSnapshotForInstance": {Verb: "Get", Resource: "DeployablePatchSnapshotForInstance", OutputListKey: "", OutputItemKey: ""}, + "GetDocument": {Verb: "Get", Resource: "Document", OutputListKey: "AttachmentsContent", OutputItemKey: ""}, + "GetExecutionPreview": {Verb: "Get", Resource: "ExecutionPreview", OutputListKey: "", OutputItemKey: ""}, + "GetInventory": {Verb: "Get", Resource: "Inventory", OutputListKey: "Entities", OutputItemKey: ""}, + "GetInventorySchema": {Verb: "Get", Resource: "InventorySchema", OutputListKey: "Schemas", OutputItemKey: ""}, + "GetMaintenanceWindow": {Verb: "Get", Resource: "MaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "GetMaintenanceWindowExecution": {Verb: "Get", Resource: "MaintenanceWindowExecution", OutputListKey: "TaskIds", OutputItemKey: ""}, + "GetMaintenanceWindowExecutionTask": {Verb: "Get", Resource: "MaintenanceWindowExecutionTask", OutputListKey: "TaskParameters", OutputItemKey: "AlarmConfiguration"}, + "GetMaintenanceWindowExecutionTaskInvocation": {Verb: "Get", Resource: "MaintenanceWindowExecutionTaskInvocation", OutputListKey: "", OutputItemKey: ""}, + "GetMaintenanceWindowTask": {Verb: "Get", Resource: "MaintenanceWindowTask", OutputListKey: "Targets", OutputItemKey: "AlarmConfiguration"}, + "GetOpsItem": {Verb: "Get", Resource: "OpsItem", OutputListKey: "", OutputItemKey: "OpsItem"}, + "GetOpsMetadata": {Verb: "Get", Resource: "OpsMetadata", OutputListKey: "", OutputItemKey: ""}, + "GetOpsSummary": {Verb: "Get", Resource: "OpsSummary", OutputListKey: "Entities", OutputItemKey: ""}, + "GetParameter": {Verb: "Get", Resource: "Parameter", OutputListKey: "", OutputItemKey: "Parameter"}, + "GetParameterHistory": {Verb: "Get", Resource: "ParameterHistory", OutputListKey: "Parameters", OutputItemKey: ""}, + "GetParameters": {Verb: "Get", Resource: "Parameter", OutputListKey: "InvalidParameters", OutputItemKey: ""}, + "GetParametersByPath": {Verb: "Get", Resource: "ParametersByPath", OutputListKey: "Parameters", OutputItemKey: ""}, + "GetPatchBaseline": {Verb: "Get", Resource: "PatchBaseline", OutputListKey: "ApprovedPatches", OutputItemKey: "ApprovalRules"}, + "GetPatchBaselineForPatchGroup": {Verb: "Get", Resource: "PatchBaselineForPatchGroup", OutputListKey: "", OutputItemKey: ""}, + "GetResourcePolicies": {Verb: "Get", Resource: "ResourcePolicy", OutputListKey: "Policies", OutputItemKey: ""}, + "GetServiceSetting": {Verb: "Get", Resource: "ServiceSetting", OutputListKey: "", OutputItemKey: "ServiceSetting"}, + "ListAssociationVersions": {Verb: "List", Resource: "AssociationVersion", OutputListKey: "AssociationVersions", OutputItemKey: ""}, + "ListAssociations": {Verb: "List", Resource: "Association", OutputListKey: "Associations", OutputItemKey: ""}, + "ListCommandInvocations": {Verb: "List", Resource: "CommandInvocation", OutputListKey: "CommandInvocations", OutputItemKey: ""}, + "ListCommands": {Verb: "List", Resource: "Command", OutputListKey: "Commands", OutputItemKey: ""}, + "ListComplianceItems": {Verb: "List", Resource: "ComplianceItem", OutputListKey: "ComplianceItems", OutputItemKey: ""}, + "ListComplianceSummaries": {Verb: "List", Resource: "ComplianceSummary", OutputListKey: "ComplianceSummaryItems", OutputItemKey: ""}, + "ListDocumentMetadataHistory": {Verb: "List", Resource: "DocumentMetadataHistory", OutputListKey: "", OutputItemKey: "Metadata"}, + "ListDocumentVersions": {Verb: "List", Resource: "DocumentVersion", OutputListKey: "DocumentVersions", OutputItemKey: ""}, + "ListDocuments": {Verb: "List", Resource: "Document", OutputListKey: "DocumentIdentifiers", OutputItemKey: ""}, + "ListInventoryEntries": {Verb: "List", Resource: "InventoryEntry", OutputListKey: "Entries", OutputItemKey: ""}, + "ListNodes": {Verb: "List", Resource: "Node", OutputListKey: "Nodes", OutputItemKey: ""}, + "ListNodesSummary": {Verb: "List", Resource: "NodesSummary", OutputListKey: "Summary", OutputItemKey: ""}, + "ListOpsItemEvents": {Verb: "List", Resource: "OpsItemEvent", OutputListKey: "Summaries", OutputItemKey: ""}, + "ListOpsItemRelatedItems": {Verb: "List", Resource: "OpsItemRelatedItem", OutputListKey: "Summaries", OutputItemKey: ""}, + "ListOpsMetadata": {Verb: "List", Resource: "OpsMetadata", OutputListKey: "OpsMetadataList", OutputItemKey: ""}, + "ListResourceComplianceSummaries": {Verb: "List", Resource: "ResourceComplianceSummary", OutputListKey: "ResourceComplianceSummaryItems", OutputItemKey: ""}, + "ListResourceDataSync": {Verb: "List", Resource: "ResourceDataSync", OutputListKey: "ResourceDataSyncItems", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "TagList", OutputItemKey: ""}, + "ModifyDocumentPermission": {Verb: "Update", Resource: "DocumentPermission", OutputListKey: "", OutputItemKey: ""}, + "PutComplianceItems": {Verb: "Update", Resource: "ComplianceItem", OutputListKey: "", OutputItemKey: ""}, + "PutInventory": {Verb: "Update", Resource: "Inventory", OutputListKey: "", OutputItemKey: ""}, + "PutParameter": {Verb: "Update", Resource: "Parameter", OutputListKey: "", OutputItemKey: ""}, + "PutResourcePolicy": {Verb: "Update", Resource: "ResourcePolicy", OutputListKey: "", OutputItemKey: ""}, + "RegisterDefaultPatchBaseline": {Verb: "Create", Resource: "DefaultPatchBaseline", OutputListKey: "", OutputItemKey: ""}, + "RegisterPatchBaselineForPatchGroup": {Verb: "Create", Resource: "PatchBaselineForPatchGroup", OutputListKey: "", OutputItemKey: ""}, + "RegisterTargetWithMaintenanceWindow": {Verb: "Create", Resource: "TargetWithMaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "RegisterTaskWithMaintenanceWindow": {Verb: "Create", Resource: "TaskWithMaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "UpdateAssociation": {Verb: "Update", Resource: "Association", OutputListKey: "", OutputItemKey: "AssociationDescription"}, + "UpdateAssociationStatus": {Verb: "Update", Resource: "AssociationStatu", OutputListKey: "", OutputItemKey: "AssociationDescription"}, + "UpdateDocument": {Verb: "Update", Resource: "Document", OutputListKey: "", OutputItemKey: "DocumentDescription"}, + "UpdateDocumentDefaultVersion": {Verb: "Update", Resource: "DocumentDefaultVersion", OutputListKey: "", OutputItemKey: "Description"}, + "UpdateDocumentMetadata": {Verb: "Update", Resource: "DocumentMetadata", OutputListKey: "", OutputItemKey: ""}, + "UpdateMaintenanceWindow": {Verb: "Update", Resource: "MaintenanceWindow", OutputListKey: "", OutputItemKey: ""}, + "UpdateMaintenanceWindowTarget": {Verb: "Update", Resource: "MaintenanceWindowTarget", OutputListKey: "Targets", OutputItemKey: ""}, + "UpdateMaintenanceWindowTask": {Verb: "Update", Resource: "MaintenanceWindowTask", OutputListKey: "Targets", OutputItemKey: "AlarmConfiguration"}, + "UpdateManagedInstanceRole": {Verb: "Update", Resource: "ManagedInstanceRole", OutputListKey: "", OutputItemKey: ""}, + "UpdateOpsItem": {Verb: "Update", Resource: "OpsItem", OutputListKey: "", OutputItemKey: ""}, + "UpdateOpsMetadata": {Verb: "Update", Resource: "OpsMetadata", OutputListKey: "", OutputItemKey: ""}, + "UpdatePatchBaseline": {Verb: "Update", Resource: "PatchBaseline", OutputListKey: "ApprovedPatches", OutputItemKey: "ApprovalRules"}, + "UpdateResourceDataSync": {Verb: "Update", Resource: "ResourceDataSync", OutputListKey: "", OutputItemKey: ""}, + "UpdateServiceSetting": {Verb: "Update", Resource: "ServiceSetting", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("ssoadmin", map[string]crud.OpMeta{ + "CreateAccountAssignment": {Verb: "Create", Resource: "AccountAssignment", OutputListKey: "", OutputItemKey: "AccountAssignmentCreationStatus"}, + "CreateApplication": {Verb: "Create", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "CreateApplicationAssignment": {Verb: "Create", Resource: "ApplicationAssignment", OutputListKey: "", OutputItemKey: ""}, + "CreateInstance": {Verb: "Create", Resource: "Instance", OutputListKey: "", OutputItemKey: ""}, + "CreateInstanceAccessControlAttributeConfiguration": {Verb: "Create", Resource: "InstanceAccessControlAttributeConfiguration", OutputListKey: "", OutputItemKey: ""}, + "CreatePermissionSet": {Verb: "Create", Resource: "PermissionSet", OutputListKey: "", OutputItemKey: "PermissionSet"}, + "CreateTrustedTokenIssuer": {Verb: "Create", Resource: "TrustedTokenIssuer", OutputListKey: "", OutputItemKey: ""}, + "DeleteAccountAssignment": {Verb: "Delete", Resource: "AccountAssignment", OutputListKey: "", OutputItemKey: "AccountAssignmentDeletionStatus"}, + "DeleteApplication": {Verb: "Delete", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "DeleteApplicationAssignment": {Verb: "Delete", Resource: "ApplicationAssignment", OutputListKey: "", OutputItemKey: ""}, + "DeleteInlinePolicyFromPermissionSet": {Verb: "Delete", Resource: "InlinePolicyFromPermissionSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteInstance": {Verb: "Delete", Resource: "Instance", OutputListKey: "", OutputItemKey: ""}, + "DeleteInstanceAccessControlAttributeConfiguration": {Verb: "Delete", Resource: "InstanceAccessControlAttributeConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeletePermissionSet": {Verb: "Delete", Resource: "PermissionSet", OutputListKey: "", OutputItemKey: ""}, + "DeletePermissionsBoundaryFromPermissionSet": {Verb: "Delete", Resource: "PermissionsBoundaryFromPermissionSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteTrustedTokenIssuer": {Verb: "Delete", Resource: "TrustedTokenIssuer", OutputListKey: "", OutputItemKey: ""}, + "DescribeAccountAssignmentCreationStatus": {Verb: "Get", Resource: "AccountAssignmentCreationStatu", OutputListKey: "", OutputItemKey: "AccountAssignmentCreationStatus"}, + "DescribeAccountAssignmentDeletionStatus": {Verb: "Get", Resource: "AccountAssignmentDeletionStatu", OutputListKey: "", OutputItemKey: "AccountAssignmentDeletionStatus"}, + "DescribeApplication": {Verb: "Get", Resource: "Application", OutputListKey: "", OutputItemKey: "PortalOptions"}, + "DescribeApplicationAssignment": {Verb: "Get", Resource: "ApplicationAssignment", OutputListKey: "", OutputItemKey: ""}, + "DescribeApplicationProvider": {Verb: "Get", Resource: "ApplicationProvider", OutputListKey: "", OutputItemKey: "DisplayData"}, + "DescribeInstance": {Verb: "Get", Resource: "Instance", OutputListKey: "", OutputItemKey: "EncryptionConfigurationDetails"}, + "DescribeInstanceAccessControlAttributeConfiguration": {Verb: "Get", Resource: "InstanceAccessControlAttributeConfiguration", OutputListKey: "", OutputItemKey: "InstanceAccessControlAttributeConfiguration"}, + "DescribePermissionSet": {Verb: "Get", Resource: "PermissionSet", OutputListKey: "", OutputItemKey: "PermissionSet"}, + "DescribePermissionSetProvisioningStatus": {Verb: "Get", Resource: "PermissionSetProvisioningStatu", OutputListKey: "", OutputItemKey: "PermissionSetProvisioningStatus"}, + "DescribeRegion": {Verb: "Get", Resource: "Region", OutputListKey: "", OutputItemKey: ""}, + "DescribeTrustedTokenIssuer": {Verb: "Get", Resource: "TrustedTokenIssuer", OutputListKey: "", OutputItemKey: ""}, + "GetApplicationAssignmentConfiguration": {Verb: "Get", Resource: "ApplicationAssignmentConfiguration", OutputListKey: "", OutputItemKey: ""}, + "GetApplicationSessionConfiguration": {Verb: "Get", Resource: "ApplicationSessionConfiguration", OutputListKey: "", OutputItemKey: ""}, + "GetInlinePolicyForPermissionSet": {Verb: "Get", Resource: "InlinePolicyForPermissionSet", OutputListKey: "", OutputItemKey: ""}, + "GetPermissionsBoundaryForPermissionSet": {Verb: "Get", Resource: "PermissionsBoundaryForPermissionSet", OutputListKey: "", OutputItemKey: "PermissionsBoundary"}, + "ListAccountAssignmentCreationStatus": {Verb: "List", Resource: "AccountAssignmentCreationStatu", OutputListKey: "AccountAssignmentsCreationStatus", OutputItemKey: ""}, + "ListAccountAssignmentDeletionStatus": {Verb: "List", Resource: "AccountAssignmentDeletionStatu", OutputListKey: "AccountAssignmentsDeletionStatus", OutputItemKey: ""}, + "ListAccountAssignments": {Verb: "List", Resource: "AccountAssignment", OutputListKey: "AccountAssignments", OutputItemKey: ""}, + "ListAccountAssignmentsForPrincipal": {Verb: "List", Resource: "AccountAssignmentsForPrincipal", OutputListKey: "AccountAssignments", OutputItemKey: ""}, + "ListAccountsForProvisionedPermissionSet": {Verb: "List", Resource: "AccountsForProvisionedPermissionSet", OutputListKey: "AccountIds", OutputItemKey: ""}, + "ListApplicationAssignments": {Verb: "List", Resource: "ApplicationAssignment", OutputListKey: "ApplicationAssignments", OutputItemKey: ""}, + "ListApplicationAssignmentsForPrincipal": {Verb: "List", Resource: "ApplicationAssignmentsForPrincipal", OutputListKey: "ApplicationAssignments", OutputItemKey: ""}, + "ListApplicationProviders": {Verb: "List", Resource: "ApplicationProvider", OutputListKey: "ApplicationProviders", OutputItemKey: ""}, + "ListApplications": {Verb: "List", Resource: "Application", OutputListKey: "Applications", OutputItemKey: ""}, + "ListCustomerManagedPolicyReferencesInPermissionSet": {Verb: "List", Resource: "CustomerManagedPolicyReferencesInPermissionSet", OutputListKey: "CustomerManagedPolicyReferences", OutputItemKey: ""}, + "ListInstances": {Verb: "List", Resource: "Instance", OutputListKey: "Instances", OutputItemKey: ""}, + "ListManagedPoliciesInPermissionSet": {Verb: "List", Resource: "ManagedPoliciesInPermissionSet", OutputListKey: "AttachedManagedPolicies", OutputItemKey: ""}, + "ListPermissionSetProvisioningStatus": {Verb: "List", Resource: "PermissionSetProvisioningStatu", OutputListKey: "PermissionSetsProvisioningStatus", OutputItemKey: ""}, + "ListPermissionSets": {Verb: "List", Resource: "PermissionSet", OutputListKey: "PermissionSets", OutputItemKey: ""}, + "ListPermissionSetsProvisionedToAccount": {Verb: "List", Resource: "PermissionSetsProvisionedToAccount", OutputListKey: "PermissionSets", OutputItemKey: ""}, + "ListRegions": {Verb: "List", Resource: "Region", OutputListKey: "Regions", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTrustedTokenIssuers": {Verb: "List", Resource: "TrustedTokenIssuer", OutputListKey: "TrustedTokenIssuers", OutputItemKey: ""}, + "PutApplicationAssignmentConfiguration": {Verb: "Update", Resource: "ApplicationAssignmentConfiguration", OutputListKey: "", OutputItemKey: ""}, + "PutApplicationSessionConfiguration": {Verb: "Update", Resource: "ApplicationSessionConfiguration", OutputListKey: "", OutputItemKey: ""}, + "PutInlinePolicyToPermissionSet": {Verb: "Update", Resource: "InlinePolicyToPermissionSet", OutputListKey: "", OutputItemKey: ""}, + "PutPermissionsBoundaryToPermissionSet": {Verb: "Update", Resource: "PermissionsBoundaryToPermissionSet", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateApplication": {Verb: "Update", Resource: "Application", OutputListKey: "", OutputItemKey: ""}, + "UpdateInstance": {Verb: "Update", Resource: "Instance", OutputListKey: "", OutputItemKey: ""}, + "UpdateInstanceAccessControlAttributeConfiguration": {Verb: "Update", Resource: "InstanceAccessControlAttributeConfiguration", OutputListKey: "", OutputItemKey: ""}, + "UpdatePermissionSet": {Verb: "Update", Resource: "PermissionSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateTrustedTokenIssuer": {Verb: "Update", Resource: "TrustedTokenIssuer", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("support", map[string]crud.OpMeta{ + "CreateCase": {Verb: "Create", Resource: "Case", OutputListKey: "", OutputItemKey: ""}, + "DescribeAttachment": {Verb: "Get", Resource: "Attachment", OutputListKey: "", OutputItemKey: "attachment"}, + "DescribeCases": {Verb: "Get", Resource: "Case", OutputListKey: "cases", OutputItemKey: ""}, + "DescribeCommunications": {Verb: "Get", Resource: "Communication", OutputListKey: "communications", OutputItemKey: ""}, + "DescribeCreateCaseOptions": {Verb: "Get", Resource: "CreateCaseOption", OutputListKey: "communicationTypes", OutputItemKey: ""}, + "DescribeServices": {Verb: "Get", Resource: "Service", OutputListKey: "services", OutputItemKey: ""}, + "DescribeSeverityLevels": {Verb: "Get", Resource: "SeverityLevel", OutputListKey: "severityLevels", OutputItemKey: ""}, + "DescribeSupportedLanguages": {Verb: "Get", Resource: "SupportedLanguage", OutputListKey: "supportedLanguages", OutputItemKey: ""}, + "DescribeTrustedAdvisorCheckRefreshStatuses": {Verb: "Get", Resource: "TrustedAdvisorCheckRefreshStatuse", OutputListKey: "statuses", OutputItemKey: ""}, + "DescribeTrustedAdvisorCheckResult": {Verb: "Get", Resource: "TrustedAdvisorCheckResult", OutputListKey: "", OutputItemKey: "result"}, + "DescribeTrustedAdvisorCheckSummaries": {Verb: "Get", Resource: "TrustedAdvisorCheckSummary", OutputListKey: "summaries", OutputItemKey: ""}, + "DescribeTrustedAdvisorChecks": {Verb: "Get", Resource: "TrustedAdvisorCheck", OutputListKey: "checks", OutputItemKey: ""}, + }) + crud.Register("swf", map[string]crud.OpMeta{ + "DeleteActivityType": {Verb: "Delete", Resource: "ActivityType", OutputListKey: "", OutputItemKey: ""}, + "DeleteWorkflowType": {Verb: "Delete", Resource: "WorkflowType", OutputListKey: "", OutputItemKey: ""}, + "DescribeActivityType": {Verb: "Get", Resource: "ActivityType", OutputListKey: "", OutputItemKey: "configuration"}, + "DescribeDomain": {Verb: "Get", Resource: "Domain", OutputListKey: "", OutputItemKey: "configuration"}, + "DescribeWorkflowExecution": {Verb: "Get", Resource: "WorkflowExecution", OutputListKey: "", OutputItemKey: "executionConfiguration"}, + "DescribeWorkflowType": {Verb: "Get", Resource: "WorkflowType", OutputListKey: "", OutputItemKey: "configuration"}, + "GetWorkflowExecutionHistory": {Verb: "Get", Resource: "WorkflowExecutionHistory", OutputListKey: "events", OutputItemKey: ""}, + "ListActivityTypes": {Verb: "List", Resource: "ActivityType", OutputListKey: "typeInfos", OutputItemKey: ""}, + "ListClosedWorkflowExecutions": {Verb: "List", Resource: "ClosedWorkflowExecution", OutputListKey: "executionInfos", OutputItemKey: ""}, + "ListDomains": {Verb: "List", Resource: "Domain", OutputListKey: "domainInfos", OutputItemKey: ""}, + "ListOpenWorkflowExecutions": {Verb: "List", Resource: "OpenWorkflowExecution", OutputListKey: "executionInfos", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "tags", OutputItemKey: ""}, + "ListWorkflowTypes": {Verb: "List", Resource: "WorkflowType", OutputListKey: "typeInfos", OutputItemKey: ""}, + "RegisterActivityType": {Verb: "Create", Resource: "ActivityType", OutputListKey: "", OutputItemKey: ""}, + "RegisterDomain": {Verb: "Create", Resource: "Domain", OutputListKey: "", OutputItemKey: ""}, + "RegisterWorkflowType": {Verb: "Create", Resource: "WorkflowType", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("textract", map[string]crud.OpMeta{ + "CreateAdapter": {Verb: "Create", Resource: "Adapter", OutputListKey: "", OutputItemKey: ""}, + "CreateAdapterVersion": {Verb: "Create", Resource: "AdapterVersion", OutputListKey: "", OutputItemKey: ""}, + "DeleteAdapter": {Verb: "Delete", Resource: "Adapter", OutputListKey: "", OutputItemKey: ""}, + "DeleteAdapterVersion": {Verb: "Delete", Resource: "AdapterVersion", OutputListKey: "", OutputItemKey: ""}, + "GetAdapter": {Verb: "Get", Resource: "Adapter", OutputListKey: "FeatureTypes", OutputItemKey: ""}, + "GetAdapterVersion": {Verb: "Get", Resource: "AdapterVersion", OutputListKey: "EvaluationMetrics", OutputItemKey: "DatasetConfig"}, + "GetDocumentAnalysis": {Verb: "Get", Resource: "DocumentAnalysi", OutputListKey: "Blocks", OutputItemKey: "DocumentMetadata"}, + "GetDocumentTextDetection": {Verb: "Get", Resource: "DocumentTextDetection", OutputListKey: "Blocks", OutputItemKey: "DocumentMetadata"}, + "GetExpenseAnalysis": {Verb: "Get", Resource: "ExpenseAnalysi", OutputListKey: "ExpenseDocuments", OutputItemKey: "DocumentMetadata"}, + "GetLendingAnalysis": {Verb: "Get", Resource: "LendingAnalysi", OutputListKey: "Results", OutputItemKey: "DocumentMetadata"}, + "GetLendingAnalysisSummary": {Verb: "Get", Resource: "LendingAnalysisSummary", OutputListKey: "Warnings", OutputItemKey: "DocumentMetadata"}, + "ListAdapterVersions": {Verb: "List", Resource: "AdapterVersion", OutputListKey: "AdapterVersions", OutputItemKey: ""}, + "ListAdapters": {Verb: "List", Resource: "Adapter", OutputListKey: "Adapters", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAdapter": {Verb: "Update", Resource: "Adapter", OutputListKey: "FeatureTypes", OutputItemKey: ""}, + }) + crud.Register("timestreamwrite", map[string]crud.OpMeta{ + "CreateBatchLoadTask": {Verb: "Create", Resource: "BatchLoadTask", OutputListKey: "", OutputItemKey: ""}, + "CreateDatabase": {Verb: "Create", Resource: "Database", OutputListKey: "", OutputItemKey: "Database"}, + "CreateTable": {Verb: "Create", Resource: "Table", OutputListKey: "", OutputItemKey: "Table"}, + "DeleteDatabase": {Verb: "Delete", Resource: "Database", OutputListKey: "", OutputItemKey: ""}, + "DeleteTable": {Verb: "Delete", Resource: "Table", OutputListKey: "", OutputItemKey: ""}, + "DescribeBatchLoadTask": {Verb: "Get", Resource: "BatchLoadTask", OutputListKey: "", OutputItemKey: "BatchLoadTaskDescription"}, + "DescribeDatabase": {Verb: "Get", Resource: "Database", OutputListKey: "", OutputItemKey: "Database"}, + "DescribeEndpoints": {Verb: "Get", Resource: "Endpoint", OutputListKey: "Endpoints", OutputItemKey: ""}, + "DescribeTable": {Verb: "Get", Resource: "Table", OutputListKey: "", OutputItemKey: "Table"}, + "ListBatchLoadTasks": {Verb: "List", Resource: "BatchLoadTask", OutputListKey: "BatchLoadTasks", OutputItemKey: ""}, + "ListDatabases": {Verb: "List", Resource: "Database", OutputListKey: "Databases", OutputItemKey: ""}, + "ListTables": {Verb: "List", Resource: "Table", OutputListKey: "Tables", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateDatabase": {Verb: "Update", Resource: "Database", OutputListKey: "", OutputItemKey: "Database"}, + "UpdateTable": {Verb: "Update", Resource: "Table", OutputListKey: "", OutputItemKey: "Table"}, + }) + crud.Register("transcribe", map[string]crud.OpMeta{ + "CreateCallAnalyticsCategory": {Verb: "Create", Resource: "CallAnalyticsCategory", OutputListKey: "", OutputItemKey: "CategoryProperties"}, + "CreateLanguageModel": {Verb: "Create", Resource: "LanguageModel", OutputListKey: "", OutputItemKey: "InputDataConfig"}, + "CreateMedicalVocabulary": {Verb: "Create", Resource: "MedicalVocabulary", OutputListKey: "", OutputItemKey: ""}, + "CreateVocabulary": {Verb: "Create", Resource: "Vocabulary", OutputListKey: "", OutputItemKey: ""}, + "CreateVocabularyFilter": {Verb: "Create", Resource: "VocabularyFilter", OutputListKey: "", OutputItemKey: ""}, + "DeleteCallAnalyticsCategory": {Verb: "Delete", Resource: "CallAnalyticsCategory", OutputListKey: "", OutputItemKey: ""}, + "DeleteCallAnalyticsJob": {Verb: "Delete", Resource: "CallAnalyticsJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteLanguageModel": {Verb: "Delete", Resource: "LanguageModel", OutputListKey: "", OutputItemKey: ""}, + "DeleteMedicalScribeJob": {Verb: "Delete", Resource: "MedicalScribeJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteMedicalTranscriptionJob": {Verb: "Delete", Resource: "MedicalTranscriptionJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteMedicalVocabulary": {Verb: "Delete", Resource: "MedicalVocabulary", OutputListKey: "", OutputItemKey: ""}, + "DeleteTranscriptionJob": {Verb: "Delete", Resource: "TranscriptionJob", OutputListKey: "", OutputItemKey: ""}, + "DeleteVocabulary": {Verb: "Delete", Resource: "Vocabulary", OutputListKey: "", OutputItemKey: ""}, + "DeleteVocabularyFilter": {Verb: "Delete", Resource: "VocabularyFilter", OutputListKey: "", OutputItemKey: ""}, + "DescribeLanguageModel": {Verb: "Get", Resource: "LanguageModel", OutputListKey: "", OutputItemKey: "LanguageModel"}, + "GetCallAnalyticsCategory": {Verb: "Get", Resource: "CallAnalyticsCategory", OutputListKey: "", OutputItemKey: "CategoryProperties"}, + "GetCallAnalyticsJob": {Verb: "Get", Resource: "CallAnalyticsJob", OutputListKey: "", OutputItemKey: "CallAnalyticsJob"}, + "GetMedicalScribeJob": {Verb: "Get", Resource: "MedicalScribeJob", OutputListKey: "", OutputItemKey: "MedicalScribeJob"}, + "GetMedicalTranscriptionJob": {Verb: "Get", Resource: "MedicalTranscriptionJob", OutputListKey: "", OutputItemKey: "MedicalTranscriptionJob"}, + "GetMedicalVocabulary": {Verb: "Get", Resource: "MedicalVocabulary", OutputListKey: "", OutputItemKey: ""}, + "GetTranscriptionJob": {Verb: "Get", Resource: "TranscriptionJob", OutputListKey: "", OutputItemKey: "TranscriptionJob"}, + "GetVocabulary": {Verb: "Get", Resource: "Vocabulary", OutputListKey: "", OutputItemKey: ""}, + "GetVocabularyFilter": {Verb: "Get", Resource: "VocabularyFilter", OutputListKey: "", OutputItemKey: ""}, + "ListCallAnalyticsCategories": {Verb: "List", Resource: "CallAnalyticsCategory", OutputListKey: "Categories", OutputItemKey: ""}, + "ListCallAnalyticsJobs": {Verb: "List", Resource: "CallAnalyticsJob", OutputListKey: "CallAnalyticsJobSummaries", OutputItemKey: ""}, + "ListLanguageModels": {Verb: "List", Resource: "LanguageModel", OutputListKey: "Models", OutputItemKey: ""}, + "ListMedicalScribeJobs": {Verb: "List", Resource: "MedicalScribeJob", OutputListKey: "MedicalScribeJobSummaries", OutputItemKey: ""}, + "ListMedicalTranscriptionJobs": {Verb: "List", Resource: "MedicalTranscriptionJob", OutputListKey: "MedicalTranscriptionJobSummaries", OutputItemKey: ""}, + "ListMedicalVocabularies": {Verb: "List", Resource: "MedicalVocabulary", OutputListKey: "Vocabularies", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "ListTranscriptionJobs": {Verb: "List", Resource: "TranscriptionJob", OutputListKey: "TranscriptionJobSummaries", OutputItemKey: ""}, + "ListVocabularies": {Verb: "List", Resource: "Vocabulary", OutputListKey: "Vocabularies", OutputItemKey: ""}, + "ListVocabularyFilters": {Verb: "List", Resource: "VocabularyFilter", OutputListKey: "VocabularyFilters", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateCallAnalyticsCategory": {Verb: "Update", Resource: "CallAnalyticsCategory", OutputListKey: "", OutputItemKey: "CategoryProperties"}, + "UpdateMedicalVocabulary": {Verb: "Update", Resource: "MedicalVocabulary", OutputListKey: "", OutputItemKey: ""}, + "UpdateVocabulary": {Verb: "Update", Resource: "Vocabulary", OutputListKey: "", OutputItemKey: ""}, + "UpdateVocabularyFilter": {Verb: "Update", Resource: "VocabularyFilter", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("transfer", map[string]crud.OpMeta{ + "CreateAccess": {Verb: "Create", Resource: "Access", OutputListKey: "", OutputItemKey: ""}, + "DeleteAccess": {Verb: "Delete", Resource: "Access", OutputListKey: "", OutputItemKey: ""}, + "DeleteHostKey": {Verb: "Delete", Resource: "HostKey", OutputListKey: "", OutputItemKey: ""}, + "DeleteSshPublicKey": {Verb: "Delete", Resource: "SshPublicKey", OutputListKey: "", OutputItemKey: ""}, + "DescribeAccess": {Verb: "Get", Resource: "Access", OutputListKey: "", OutputItemKey: "Access"}, + "DescribeExecution": {Verb: "Get", Resource: "Execution", OutputListKey: "", OutputItemKey: "Execution"}, + "DescribeHostKey": {Verb: "Get", Resource: "HostKey", OutputListKey: "", OutputItemKey: "HostKey"}, + "DescribeSecurityPolicy": {Verb: "Get", Resource: "SecurityPolicy", OutputListKey: "", OutputItemKey: "SecurityPolicy"}, + "ListAccesses": {Verb: "List", Resource: "Access", OutputListKey: "Accesses", OutputItemKey: ""}, + "ListExecutions": {Verb: "List", Resource: "Execution", OutputListKey: "Executions", OutputItemKey: ""}, + "ListFileTransferResults": {Verb: "List", Resource: "FileTransferResult", OutputListKey: "FileTransferResults", OutputItemKey: ""}, + "ListHostKeys": {Verb: "List", Resource: "HostKey", OutputListKey: "HostKeys", OutputItemKey: ""}, + "ListSecurityPolicies": {Verb: "List", Resource: "SecurityPolicy", OutputListKey: "SecurityPolicyNames", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "Tags", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateAccess": {Verb: "Update", Resource: "Access", OutputListKey: "", OutputItemKey: ""}, + "UpdateHostKey": {Verb: "Update", Resource: "HostKey", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("waf", map[string]crud.OpMeta{ + "CreateByteMatchSet": {Verb: "Create", Resource: "ByteMatchSet", OutputListKey: "", OutputItemKey: "ByteMatchSet"}, + "CreateGeoMatchSet": {Verb: "Create", Resource: "GeoMatchSet", OutputListKey: "", OutputItemKey: "GeoMatchSet"}, + "CreateIPSet": {Verb: "Create", Resource: "IPSet", OutputListKey: "", OutputItemKey: "IPSet"}, + "CreateRateBasedRule": {Verb: "Create", Resource: "RateBasedRule", OutputListKey: "", OutputItemKey: "Rule"}, + "CreateRegexMatchSet": {Verb: "Create", Resource: "RegexMatchSet", OutputListKey: "", OutputItemKey: "RegexMatchSet"}, + "CreateRegexPatternSet": {Verb: "Create", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: "RegexPatternSet"}, + "CreateRule": {Verb: "Create", Resource: "Rule", OutputListKey: "", OutputItemKey: "Rule"}, + "CreateRuleGroup": {Verb: "Create", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: "RuleGroup"}, + "CreateSizeConstraintSet": {Verb: "Create", Resource: "SizeConstraintSet", OutputListKey: "", OutputItemKey: "SizeConstraintSet"}, + "CreateSqlInjectionMatchSet": {Verb: "Create", Resource: "SqlInjectionMatchSet", OutputListKey: "", OutputItemKey: "SqlInjectionMatchSet"}, + "CreateWebACL": {Verb: "Create", Resource: "WebACL", OutputListKey: "", OutputItemKey: "WebACL"}, + "CreateWebACLMigrationStack": {Verb: "Create", Resource: "WebACLMigrationStack", OutputListKey: "", OutputItemKey: ""}, + "CreateXssMatchSet": {Verb: "Create", Resource: "XssMatchSet", OutputListKey: "", OutputItemKey: "XssMatchSet"}, + "DeleteByteMatchSet": {Verb: "Delete", Resource: "ByteMatchSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteGeoMatchSet": {Verb: "Delete", Resource: "GeoMatchSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteIPSet": {Verb: "Delete", Resource: "IPSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteLoggingConfiguration": {Verb: "Delete", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeletePermissionPolicy": {Verb: "Delete", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteRateBasedRule": {Verb: "Delete", Resource: "RateBasedRule", OutputListKey: "", OutputItemKey: ""}, + "DeleteRegexMatchSet": {Verb: "Delete", Resource: "RegexMatchSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteRegexPatternSet": {Verb: "Delete", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteRule": {Verb: "Delete", Resource: "Rule", OutputListKey: "", OutputItemKey: ""}, + "DeleteRuleGroup": {Verb: "Delete", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteSizeConstraintSet": {Verb: "Delete", Resource: "SizeConstraintSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteSqlInjectionMatchSet": {Verb: "Delete", Resource: "SqlInjectionMatchSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteWebACL": {Verb: "Delete", Resource: "WebACL", OutputListKey: "", OutputItemKey: ""}, + "DeleteXssMatchSet": {Verb: "Delete", Resource: "XssMatchSet", OutputListKey: "", OutputItemKey: ""}, + "GetByteMatchSet": {Verb: "Get", Resource: "ByteMatchSet", OutputListKey: "", OutputItemKey: "ByteMatchSet"}, + "GetChangeToken": {Verb: "Get", Resource: "ChangeToken", OutputListKey: "", OutputItemKey: ""}, + "GetChangeTokenStatus": {Verb: "Get", Resource: "ChangeTokenStatu", OutputListKey: "", OutputItemKey: ""}, + "GetGeoMatchSet": {Verb: "Get", Resource: "GeoMatchSet", OutputListKey: "", OutputItemKey: "GeoMatchSet"}, + "GetIPSet": {Verb: "Get", Resource: "IPSet", OutputListKey: "", OutputItemKey: "IPSet"}, + "GetLoggingConfiguration": {Verb: "Get", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: "LoggingConfiguration"}, + "GetPermissionPolicy": {Verb: "Get", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetRateBasedRule": {Verb: "Get", Resource: "RateBasedRule", OutputListKey: "", OutputItemKey: "Rule"}, + "GetRateBasedRuleManagedKeys": {Verb: "Get", Resource: "RateBasedRuleManagedKey", OutputListKey: "ManagedKeys", OutputItemKey: ""}, + "GetRegexMatchSet": {Verb: "Get", Resource: "RegexMatchSet", OutputListKey: "", OutputItemKey: "RegexMatchSet"}, + "GetRegexPatternSet": {Verb: "Get", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: "RegexPatternSet"}, + "GetRule": {Verb: "Get", Resource: "Rule", OutputListKey: "", OutputItemKey: "Rule"}, + "GetRuleGroup": {Verb: "Get", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: "RuleGroup"}, + "GetSampledRequests": {Verb: "Get", Resource: "SampledRequest", OutputListKey: "SampledRequests", OutputItemKey: "TimeWindow"}, + "GetSizeConstraintSet": {Verb: "Get", Resource: "SizeConstraintSet", OutputListKey: "", OutputItemKey: "SizeConstraintSet"}, + "GetSqlInjectionMatchSet": {Verb: "Get", Resource: "SqlInjectionMatchSet", OutputListKey: "", OutputItemKey: "SqlInjectionMatchSet"}, + "GetWebACL": {Verb: "Get", Resource: "WebACL", OutputListKey: "", OutputItemKey: "WebACL"}, + "GetXssMatchSet": {Verb: "Get", Resource: "XssMatchSet", OutputListKey: "", OutputItemKey: "XssMatchSet"}, + "ListActivatedRulesInRuleGroup": {Verb: "List", Resource: "ActivatedRulesInRuleGroup", OutputListKey: "ActivatedRules", OutputItemKey: ""}, + "ListByteMatchSets": {Verb: "List", Resource: "ByteMatchSet", OutputListKey: "ByteMatchSets", OutputItemKey: ""}, + "ListGeoMatchSets": {Verb: "List", Resource: "GeoMatchSet", OutputListKey: "GeoMatchSets", OutputItemKey: ""}, + "ListIPSets": {Verb: "List", Resource: "IPSet", OutputListKey: "IPSets", OutputItemKey: ""}, + "ListLoggingConfigurations": {Verb: "List", Resource: "LoggingConfiguration", OutputListKey: "LoggingConfigurations", OutputItemKey: ""}, + "ListRateBasedRules": {Verb: "List", Resource: "RateBasedRule", OutputListKey: "Rules", OutputItemKey: ""}, + "ListRegexMatchSets": {Verb: "List", Resource: "RegexMatchSet", OutputListKey: "RegexMatchSets", OutputItemKey: ""}, + "ListRegexPatternSets": {Verb: "List", Resource: "RegexPatternSet", OutputListKey: "RegexPatternSets", OutputItemKey: ""}, + "ListRuleGroups": {Verb: "List", Resource: "RuleGroup", OutputListKey: "RuleGroups", OutputItemKey: ""}, + "ListRules": {Verb: "List", Resource: "Rule", OutputListKey: "Rules", OutputItemKey: ""}, + "ListSizeConstraintSets": {Verb: "List", Resource: "SizeConstraintSet", OutputListKey: "SizeConstraintSets", OutputItemKey: ""}, + "ListSqlInjectionMatchSets": {Verb: "List", Resource: "SqlInjectionMatchSet", OutputListKey: "SqlInjectionMatchSets", OutputItemKey: ""}, + "ListSubscribedRuleGroups": {Verb: "List", Resource: "SubscribedRuleGroup", OutputListKey: "RuleGroups", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: "TagInfoForResource"}, + "ListWebACLs": {Verb: "List", Resource: "WebACL", OutputListKey: "WebACLs", OutputItemKey: ""}, + "ListXssMatchSets": {Verb: "List", Resource: "XssMatchSet", OutputListKey: "XssMatchSets", OutputItemKey: ""}, + "PutLoggingConfiguration": {Verb: "Update", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: "LoggingConfiguration"}, + "PutPermissionPolicy": {Verb: "Update", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateByteMatchSet": {Verb: "Update", Resource: "ByteMatchSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateGeoMatchSet": {Verb: "Update", Resource: "GeoMatchSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateIPSet": {Verb: "Update", Resource: "IPSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateRateBasedRule": {Verb: "Update", Resource: "RateBasedRule", OutputListKey: "", OutputItemKey: ""}, + "UpdateRegexMatchSet": {Verb: "Update", Resource: "RegexMatchSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateRegexPatternSet": {Verb: "Update", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateRule": {Verb: "Update", Resource: "Rule", OutputListKey: "", OutputItemKey: ""}, + "UpdateRuleGroup": {Verb: "Update", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: ""}, + "UpdateSizeConstraintSet": {Verb: "Update", Resource: "SizeConstraintSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateSqlInjectionMatchSet": {Verb: "Update", Resource: "SqlInjectionMatchSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateWebACL": {Verb: "Update", Resource: "WebACL", OutputListKey: "", OutputItemKey: ""}, + "UpdateXssMatchSet": {Verb: "Update", Resource: "XssMatchSet", OutputListKey: "", OutputItemKey: ""}, + }) + crud.Register("wafv2", map[string]crud.OpMeta{ + "CreateAPIKey": {Verb: "Create", Resource: "APIKey", OutputListKey: "", OutputItemKey: ""}, + "CreateIPSet": {Verb: "Create", Resource: "IPSet", OutputListKey: "", OutputItemKey: "Summary"}, + "CreateRegexPatternSet": {Verb: "Create", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: "Summary"}, + "CreateRuleGroup": {Verb: "Create", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: "Summary"}, + "CreateWebACL": {Verb: "Create", Resource: "WebACL", OutputListKey: "", OutputItemKey: "Summary"}, + "DeleteAPIKey": {Verb: "Delete", Resource: "APIKey", OutputListKey: "", OutputItemKey: ""}, + "DeleteFirewallManagerRuleGroups": {Verb: "Delete", Resource: "FirewallManagerRuleGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteIPSet": {Verb: "Delete", Resource: "IPSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteLoggingConfiguration": {Verb: "Delete", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: ""}, + "DeletePermissionPolicy": {Verb: "Delete", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "DeleteRegexPatternSet": {Verb: "Delete", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: ""}, + "DeleteRuleGroup": {Verb: "Delete", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: ""}, + "DeleteWebACL": {Verb: "Delete", Resource: "WebACL", OutputListKey: "", OutputItemKey: ""}, + "DescribeAllManagedProducts": {Verb: "Get", Resource: "AllManagedProduct", OutputListKey: "ManagedProducts", OutputItemKey: ""}, + "DescribeManagedProductsByVendor": {Verb: "Get", Resource: "ManagedProductsByVendor", OutputListKey: "ManagedProducts", OutputItemKey: ""}, + "DescribeManagedRuleGroup": {Verb: "Get", Resource: "ManagedRuleGroup", OutputListKey: "AvailableLabels", OutputItemKey: ""}, + "GetDecryptedAPIKey": {Verb: "Get", Resource: "DecryptedAPIKey", OutputListKey: "TokenDomains", OutputItemKey: ""}, + "GetIPSet": {Verb: "Get", Resource: "IPSet", OutputListKey: "", OutputItemKey: "IPSet"}, + "GetLoggingConfiguration": {Verb: "Get", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: "LoggingConfiguration"}, + "GetManagedRuleSet": {Verb: "Get", Resource: "ManagedRuleSet", OutputListKey: "", OutputItemKey: "ManagedRuleSet"}, + "GetMobileSdkRelease": {Verb: "Get", Resource: "MobileSdkRelease", OutputListKey: "", OutputItemKey: "MobileSdkRelease"}, + "GetPermissionPolicy": {Verb: "Get", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "GetRateBasedStatementManagedKeys": {Verb: "Get", Resource: "RateBasedStatementManagedKey", OutputListKey: "", OutputItemKey: "ManagedKeysIPV4"}, + "GetRegexPatternSet": {Verb: "Get", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: "RegexPatternSet"}, + "GetRuleGroup": {Verb: "Get", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: "RuleGroup"}, + "GetSampledRequests": {Verb: "Get", Resource: "SampledRequest", OutputListKey: "SampledRequests", OutputItemKey: "TimeWindow"}, + "GetTopPathStatisticsByTraffic": {Verb: "Get", Resource: "TopPathStatisticsByTraffic", OutputListKey: "PathStatistics", OutputItemKey: ""}, + "GetWebACL": {Verb: "Get", Resource: "WebACL", OutputListKey: "", OutputItemKey: "WebACL"}, + "GetWebACLForResource": {Verb: "Get", Resource: "WebACLForResource", OutputListKey: "", OutputItemKey: "WebACL"}, + "ListAPIKeys": {Verb: "List", Resource: "APIKey", OutputListKey: "APIKeySummaries", OutputItemKey: ""}, + "ListAvailableManagedRuleGroupVersions": {Verb: "List", Resource: "AvailableManagedRuleGroupVersion", OutputListKey: "Versions", OutputItemKey: ""}, + "ListAvailableManagedRuleGroups": {Verb: "List", Resource: "AvailableManagedRuleGroup", OutputListKey: "ManagedRuleGroups", OutputItemKey: ""}, + "ListIPSets": {Verb: "List", Resource: "IPSet", OutputListKey: "IPSets", OutputItemKey: ""}, + "ListLoggingConfigurations": {Verb: "List", Resource: "LoggingConfiguration", OutputListKey: "LoggingConfigurations", OutputItemKey: ""}, + "ListManagedRuleSets": {Verb: "List", Resource: "ManagedRuleSet", OutputListKey: "ManagedRuleSets", OutputItemKey: ""}, + "ListMobileSdkReleases": {Verb: "List", Resource: "MobileSdkRelease", OutputListKey: "ReleaseSummaries", OutputItemKey: ""}, + "ListRegexPatternSets": {Verb: "List", Resource: "RegexPatternSet", OutputListKey: "RegexPatternSets", OutputItemKey: ""}, + "ListResourcesForWebACL": {Verb: "List", Resource: "ResourcesForWebACL", OutputListKey: "ResourceArns", OutputItemKey: ""}, + "ListRuleGroups": {Verb: "List", Resource: "RuleGroup", OutputListKey: "RuleGroups", OutputItemKey: ""}, + "ListTagsForResource": {Verb: "List", Resource: "TagsForResource", OutputListKey: "", OutputItemKey: "TagInfoForResource"}, + "ListWebACLs": {Verb: "List", Resource: "WebACL", OutputListKey: "WebACLs", OutputItemKey: ""}, + "PutLoggingConfiguration": {Verb: "Update", Resource: "LoggingConfiguration", OutputListKey: "", OutputItemKey: "LoggingConfiguration"}, + "PutManagedRuleSetVersions": {Verb: "Update", Resource: "ManagedRuleSetVersion", OutputListKey: "", OutputItemKey: ""}, + "PutPermissionPolicy": {Verb: "Update", Resource: "PermissionPolicy", OutputListKey: "", OutputItemKey: ""}, + "TagResource": {Verb: "Tag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UntagResource": {Verb: "Untag", Resource: "Resource", OutputListKey: "", OutputItemKey: ""}, + "UpdateIPSet": {Verb: "Update", Resource: "IPSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateManagedRuleSetVersionExpiryDate": {Verb: "Update", Resource: "ManagedRuleSetVersionExpiryDate", OutputListKey: "", OutputItemKey: ""}, + "UpdateRegexPatternSet": {Verb: "Update", Resource: "RegexPatternSet", OutputListKey: "", OutputItemKey: ""}, + "UpdateRuleGroup": {Verb: "Update", Resource: "RuleGroup", OutputListKey: "", OutputItemKey: ""}, + "UpdateWebACL": {Verb: "Update", Resource: "WebACL", OutputListKey: "", OutputItemKey: ""}, + }) +} diff --git a/internal/plugin/plugin.go b/internal/plugin/plugin.go index fcd5fe3..3f1eda9 100644 --- a/internal/plugin/plugin.go +++ b/internal/plugin/plugin.go @@ -4,9 +4,16 @@ package plugin import ( "context" + "errors" "net/http" ) +// ErrUnhandledOp signals that a provider's HandleRequest did not implement the +// requested operation. The gateway treats it as a request to try the generic +// CRUD fallback engine before returning an "unknown action" error. Providers +// opt in by returning this from their dispatch default case. +var ErrUnhandledOp = errors.New("plugin: operation not handled by provider") + type ProtocolType string const ( diff --git a/internal/services/acm/provider.go b/internal/services/acm/provider.go index dddd43b..9226d0d 100644 --- a/internal/services/acm/provider.go +++ b/internal/services/acm/provider.go @@ -133,7 +133,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListRenewalEvents": return jsonResp(http.StatusOK, map[string]any{"Events": []any{}}) default: - return acmError("NotImplemented", fmt.Sprintf("operation not implemented: %s", op), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/acmpca/provider.go b/internal/services/acmpca/provider.go index d8eedf9..3cbbc18 100644 --- a/internal/services/acmpca/provider.go +++ b/internal/services/acmpca/provider.go @@ -103,7 +103,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTags": return p.listTags(req) default: - return pcaError("NotImplemented", fmt.Sprintf("operation not implemented: %s", op), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/apigatewayv2/provider.go b/internal/services/apigatewayv2/provider.go index 8330556..7c0d295 100644 --- a/internal/services/apigatewayv2/provider.go +++ b/internal/services/apigatewayv2/provider.go @@ -325,7 +325,7 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request // Stub ops (Portal, PortalProduct, RoutingRule, etc.) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+op, http.StatusNotImplemented), nil + return shared.JSONError("UnsupportedOperation", "operation not implemented: "+op, http.StatusBadRequest), nil } } diff --git a/internal/services/apigatewayv2/provider_test.go b/internal/services/apigatewayv2/provider_test.go index 1d147fd..52692bd 100644 --- a/internal/services/apigatewayv2/provider_test.go +++ b/internal/services/apigatewayv2/provider_test.go @@ -54,11 +54,12 @@ func createTestAPI(t *testing.T, p *Provider, name string) string { func TestUnimplementedOp(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. + // Unimplemented ops must return an honest AWS error (<500), not a false 200 + // success nor a server-side 501. resp := callREST(t, p, "POST", "/", "SomeUnknownOperation", "{}") - assert.Equal(t, 501, resp.StatusCode) + assert.Equal(t, 400, resp.StatusCode) rb := parseBody(t, resp) - assert.Equal(t, "NotImplemented", rb["__type"]) + assert.Equal(t, "UnsupportedOperation", rb["__type"]) } func TestApiCRUD(t *testing.T) { diff --git a/internal/services/applicationautoscaling/provider.go b/internal/services/applicationautoscaling/provider.go index 7564942..59d04d1 100644 --- a/internal/services/applicationautoscaling/provider.go +++ b/internal/services/applicationautoscaling/provider.go @@ -6,7 +6,6 @@ package applicationautoscaling import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -151,7 +150,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "GetScalingStatus": return p.getScalingStatus(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/athena/provider.go b/internal/services/athena/provider.go index 3529856..b45e9ce 100644 --- a/internal/services/athena/provider.go +++ b/internal/services/athena/provider.go @@ -6,7 +6,6 @@ package athena import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -208,7 +207,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "UpdateNamedQuery": return shared.JSONResponse(http.StatusOK, map[string]any{}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/backup/provider.go b/internal/services/backup/provider.go index 8435c51..2a7e002 100644 --- a/internal/services/backup/provider.go +++ b/internal/services/backup/provider.go @@ -315,7 +315,7 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request // --- Default stubs for remaining ops --- default: - return shared.JSONError("NotImplemented", "operation not implemented: "+op, http.StatusNotImplemented), nil + return shared.JSONError("UnsupportedOperation", "operation not implemented: "+op, http.StatusBadRequest), nil } } diff --git a/internal/services/backup/provider_test.go b/internal/services/backup/provider_test.go index 40e6152..0323314 100644 --- a/internal/services/backup/provider_test.go +++ b/internal/services/backup/provider_test.go @@ -42,11 +42,12 @@ func parseBody(t *testing.T, resp *plugin.Response) map[string]any { func TestUnimplementedOp(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. + // Unimplemented ops must return an honest AWS error (<500), not a false 200 + // success nor a server-side 501. resp := call(t, p, "POST", "/", "SomeUnknownOperation", "{}") - assert.Equal(t, 501, resp.StatusCode) + assert.Equal(t, 400, resp.StatusCode) rb := parseBody(t, resp) - assert.Equal(t, "NotImplemented", rb["__type"]) + assert.Equal(t, "UnsupportedOperation", rb["__type"]) } // ========== TestBackupPlanCRUD ========== diff --git a/internal/services/cloudtrail/provider.go b/internal/services/cloudtrail/provider.go index b37b88f..e5fbcda 100644 --- a/internal/services/cloudtrail/provider.go +++ b/internal/services/cloudtrail/provider.go @@ -6,7 +6,6 @@ package cloudtrail import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -170,7 +169,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request "ListPublicKeys", "SearchSampleQueries": return shared.JSONResponse(http.StatusOK, map[string]any{}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/cloudwatch/provider.go b/internal/services/cloudwatch/provider.go index 55e7e92..e6e6782 100644 --- a/internal/services/cloudwatch/provider.go +++ b/internal/services/cloudwatch/provider.go @@ -101,7 +101,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "DescribeAnomalyDetectors": return p.describeAnomalyDetectors(jm, req) default: - return cwError(jm, "NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/cloudwatchlogs/provider.go b/internal/services/cloudwatchlogs/provider.go index 0bc8a12..4e49d02 100644 --- a/internal/services/cloudwatchlogs/provider.go +++ b/internal/services/cloudwatchlogs/provider.go @@ -120,7 +120,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsLogGroup", "ListTagsForResource": return p.listTagsForResource(params) default: - return cwlError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/codebuild/provider.go b/internal/services/codebuild/provider.go index 74705fd..f449674 100644 --- a/internal/services/codebuild/provider.go +++ b/internal/services/codebuild/provider.go @@ -136,7 +136,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/codebuild/provider_test.go b/internal/services/codebuild/provider_test.go index 88f6fc4..0c00e9a 100644 --- a/internal/services/codebuild/provider_test.go +++ b/internal/services/codebuild/provider_test.go @@ -449,7 +449,9 @@ func TestTags(t *testing.T) { platforms, _ := eib["platforms"].([]any) assert.NotEmpty(t, platforms) - // Unimplemented ops return an AWS error, not a false success. - unknownResp := call(t, p, "StartBuildBatch", `{}`) - assert.Equal(t, 501, unknownResp.StatusCode) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + ureq := httptest.NewRequest("POST", "/", strings.NewReader("{}")) + ureq.Header.Set("Content-Type", "application/x-amz-json-1.1") + _, uerr := p.HandleRequest(context.Background(), "StartBuildBatch", ureq) + assert.ErrorIs(t, uerr, plugin.ErrUnhandledOp) } diff --git a/internal/services/codecommit/provider.go b/internal/services/codecommit/provider.go index 369bab9..b3b57a5 100644 --- a/internal/services/codecommit/provider.go +++ b/internal/services/codecommit/provider.go @@ -195,7 +195,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return shared.JSONResponse(http.StatusOK, map[string]any{}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/codedeploy/provider.go b/internal/services/codedeploy/provider.go index c9b24ac..c224ca7 100644 --- a/internal/services/codedeploy/provider.go +++ b/internal/services/codedeploy/provider.go @@ -125,7 +125,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/codedeploy/provider_test.go b/internal/services/codedeploy/provider_test.go index dc9980c..8959abe 100644 --- a/internal/services/codedeploy/provider_test.go +++ b/internal/services/codedeploy/provider_test.go @@ -379,7 +379,9 @@ func TestTags(t *testing.T) { assert.Equal(t, "Owner", firstTag["key"]) assert.Equal(t, "alice", firstTag["value"]) - // Unimplemented ops return an AWS error, not a false success. - unknownResp := call(t, p, "AddTagsToOnPremisesInstances", `{}`) - assert.Equal(t, 501, unknownResp.StatusCode) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + ureq := httptest.NewRequest("POST", "/", strings.NewReader("{}")) + ureq.Header.Set("Content-Type", "application/x-amz-json-1.1") + _, uerr := p.HandleRequest(context.Background(), "AddTagsToOnPremisesInstances", ureq) + assert.ErrorIs(t, uerr, plugin.ErrUnhandledOp) } diff --git a/internal/services/codepipeline/provider.go b/internal/services/codepipeline/provider.go index e3f8ebd..8b8c174 100644 --- a/internal/services/codepipeline/provider.go +++ b/internal/services/codepipeline/provider.go @@ -188,7 +188,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request "pipelineExecutionId": shared.GenerateUUID(), }) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/codepipeline/provider_test.go b/internal/services/codepipeline/provider_test.go index b9cd9d7..f5d90f9 100644 --- a/internal/services/codepipeline/provider_test.go +++ b/internal/services/codepipeline/provider_test.go @@ -42,11 +42,11 @@ func parseBody(t *testing.T, resp *plugin.Response) map[string]any { func TestUnimplementedOp(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. - resp := call(t, p, "SomeUnknownOperation", "{}") - assert.Equal(t, 501, resp.StatusCode) - rb := parseBody(t, resp) - assert.Equal(t, "NotImplemented", rb["__type"]) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + req := httptest.NewRequest("POST", "/", strings.NewReader("{}")) + req.Header.Set("Content-Type", "application/x-amz-json-1.1") + _, err := p.HandleRequest(context.Background(), "SomeUnknownOperation", req) + assert.ErrorIs(t, err, plugin.ErrUnhandledOp) } func TestPipelineCRUD(t *testing.T) { diff --git a/internal/services/cognitoidentity/provider.go b/internal/services/cognitoidentity/provider.go index 89a1136..66aa744 100644 --- a/internal/services/cognitoidentity/provider.go +++ b/internal/services/cognitoidentity/provider.go @@ -97,7 +97,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(req) default: - return ciError("NotImplemented", fmt.Sprintf("operation not implemented: %s", op), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/cognitoidentityprovider/provider.go b/internal/services/cognitoidentityprovider/provider.go index 3e4f3bd..11cc8e9 100644 --- a/internal/services/cognitoidentityprovider/provider.go +++ b/internal/services/cognitoidentityprovider/provider.go @@ -182,7 +182,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(req) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+op, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/cognitoidentityprovider/provider_test.go b/internal/services/cognitoidentityprovider/provider_test.go index f8d4218..9442e29 100644 --- a/internal/services/cognitoidentityprovider/provider_test.go +++ b/internal/services/cognitoidentityprovider/provider_test.go @@ -39,12 +39,11 @@ func cognitoReq(t *testing.T, p *Provider, op string, body any) *plugin.Response func TestUnimplementedOp(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. - resp := cognitoReq(t, p, "SomeUnknownOperation", map[string]any{}) - assert.Equal(t, http.StatusNotImplemented, resp.StatusCode) - var out map[string]any - require.NoError(t, json.Unmarshal(resp.Body, &out)) - assert.Equal(t, "NotImplemented", out["__type"]) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + req := httptest.NewRequest("POST", "/", bytes.NewReader([]byte("{}"))) + req.Header.Set("Content-Type", "application/x-amz-json-1.1") + _, err := p.HandleRequest(context.Background(), "SomeUnknownOperation", req) + assert.ErrorIs(t, err, plugin.ErrUnhandledOp) } // --- TestUserPoolCRUD --- diff --git a/internal/services/configservice/provider.go b/internal/services/configservice/provider.go index 683854a..55d4cdb 100644 --- a/internal/services/configservice/provider.go +++ b/internal/services/configservice/provider.go @@ -186,7 +186,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request // ---- ~60 remaining ops: compliance, aggregate queries, org rules, resource discovery ---- default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/configservice/provider_test.go b/internal/services/configservice/provider_test.go index 8c1a788..ad7236d 100644 --- a/internal/services/configservice/provider_test.go +++ b/internal/services/configservice/provider_test.go @@ -6,6 +6,7 @@ package configservice import ( "context" "encoding/json" + "errors" "net/http/httptest" "strings" "testing" @@ -62,14 +63,11 @@ func assertError(t *testing.T, resp *plugin.Response) { func TestUnimplementedOp(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops return an AWS error, not a false 200 success. - resp := callOp(t, p, "SomeUnknownOperation", `{}`) - if resp.StatusCode != 501 { - t.Fatalf("expected 501, got %d: %s", resp.StatusCode, string(resp.Body)) - } - body := parseBody(t, resp) - if body["__type"] != "NotImplemented" { - t.Errorf("expected __type=NotImplemented, got %v (body: %s)", body["__type"], string(resp.Body)) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + req := httptest.NewRequest("POST", "/", strings.NewReader("{}")) + req.Header.Set("Content-Type", "application/x-amz-json-1.1") + if _, err := p.HandleRequest(context.Background(), "SomeUnknownOperation", req); !errors.Is(err, plugin.ErrUnhandledOp) { + t.Fatalf("expected ErrUnhandledOp, got %v", err) } } diff --git a/internal/services/costexplorer/provider.go b/internal/services/costexplorer/provider.go index 582da22..6addebe 100644 --- a/internal/services/costexplorer/provider.go +++ b/internal/services/costexplorer/provider.go @@ -6,7 +6,6 @@ package costexplorer import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -173,7 +172,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return shared.JSONResponse(http.StatusOK, map[string]any{"Errors": []any{}}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/dynamodb/provider.go b/internal/services/dynamodb/provider.go index 69bee15..d6d18cc 100644 --- a/internal/services/dynamodb/provider.go +++ b/internal/services/dynamodb/provider.go @@ -100,7 +100,8 @@ func (p *DynamoDBProvider) HandleRequest(_ context.Context, op string, req *http case "ListTagsOfResource": return p.handleListTagsOfResource(body) default: - return jsonError("UnknownOperationException", fmt.Sprintf("unknown operation: %s", op), http.StatusBadRequest), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/dynamodbstreams/provider.go b/internal/services/dynamodbstreams/provider.go index 22f7b0f..4d626c8 100644 --- a/internal/services/dynamodbstreams/provider.go +++ b/internal/services/dynamodbstreams/provider.go @@ -6,7 +6,6 @@ package dynamodbstreams import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -120,7 +119,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "DescribeLimits": return p.describeLimits(params) default: - return json10Err("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/ecr/provider.go b/internal/services/ecr/provider.go index e53f774..3b00cde 100644 --- a/internal/services/ecr/provider.go +++ b/internal/services/ecr/provider.go @@ -128,7 +128,8 @@ func (p *Provider) HandleRequest(ctx context.Context, op string, req *http.Reque case "PutImageScanningConfiguration": return p.handlePutImageScanningConfiguration(params) default: - return ecrError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/ecs/provider.go b/internal/services/ecs/provider.go index 92e0a28..b797997 100644 --- a/internal/services/ecs/provider.go +++ b/internal/services/ecs/provider.go @@ -190,7 +190,8 @@ func (p *Provider) HandleRequest(ctx context.Context, op string, req *http.Reque case "DiscoverPollEndpoint": return p.handleDiscoverPollEndpoint(params) default: - return ecsError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/emr/provider.go b/internal/services/emr/provider.go index c0e6550..1c06dcd 100644 --- a/internal/services/emr/provider.go +++ b/internal/services/emr/provider.go @@ -204,7 +204,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return shared.JSONResponse(http.StatusOK, map[string]any{}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/eventbridge/provider.go b/internal/services/eventbridge/provider.go index 2df2da9..4818e19 100644 --- a/internal/services/eventbridge/provider.go +++ b/internal/services/eventbridge/provider.go @@ -125,7 +125,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "TestEventPattern": return p.testEventPattern(params) default: - return ebError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/firehose/provider.go b/internal/services/firehose/provider.go index ebe982e..4f9d70f 100644 --- a/internal/services/firehose/provider.go +++ b/internal/services/firehose/provider.go @@ -6,7 +6,6 @@ package firehose import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -156,7 +155,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListRecords": return p.listRecords(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/glue/provider.go b/internal/services/glue/provider.go index 814815f..8c3600b 100644 --- a/internal/services/glue/provider.go +++ b/internal/services/glue/provider.go @@ -213,7 +213,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request // ---- ~200 stub operations ---- default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/glue/provider_test.go b/internal/services/glue/provider_test.go index 4cd90ad..d026e2a 100644 --- a/internal/services/glue/provider_test.go +++ b/internal/services/glue/provider_test.go @@ -6,6 +6,7 @@ package glue import ( "context" "encoding/json" + "errors" "net/http/httptest" "strings" "testing" @@ -53,23 +54,14 @@ func assertOK(t *testing.T, resp *plugin.Response) { } } -func assertErr(t *testing.T, resp *plugin.Response) { +// assertUnhandled verifies an unimplemented op delegates to the CRUD engine by +// returning the ErrUnhandledOp sentinel (the router turns that into a response). +func assertUnhandled(t *testing.T, p *Provider, op string) { t.Helper() - if resp.StatusCode != 501 { - t.Fatalf("expected 501, got %d: %s", resp.StatusCode, string(resp.Body)) - } - var e struct { - Type string `json:"__type"` - Message string `json:"message"` - } - if err := json.Unmarshal(resp.Body, &e); err != nil { - t.Fatalf("expected JSON error body, got %q: %v", string(resp.Body), err) - } - if e.Type != "NotImplemented" { - t.Errorf("expected __type=NotImplemented, got %q (body: %s)", e.Type, string(resp.Body)) - } - if e.Message == "" { - t.Errorf("expected non-empty error message (body: %s)", string(resp.Body)) + req := httptest.NewRequest("POST", "/"+op, strings.NewReader("{}")) + req.Header.Set("Content-Type", "application/json") + if _, err := p.HandleRequest(context.Background(), op, req); !errors.Is(err, plugin.ErrUnhandledOp) { + t.Fatalf("%s: expected ErrUnhandledOp, got %v", op, err) } } @@ -622,11 +614,8 @@ func TestTags(t *testing.T) { t.Errorf("expected team=data, got %v", tags["team"]) } - // Unimplemented ops return an AWS error, not a false success. - resp = callOp(t, p, "GetDataflowGraph", `{}`) - assertErr(t, resp) - resp = callOp(t, p, "ListWorkflows", `{}`) - assertErr(t, resp) - resp = callOp(t, p, "GetMLTransform", `{}`) - assertErr(t, resp) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + assertUnhandled(t, p, "GetDataflowGraph") + assertUnhandled(t, p, "ListWorkflows") + assertUnhandled(t, p, "GetMLTransform") } diff --git a/internal/services/iot/provider.go b/internal/services/iot/provider.go index 073b49e..f896f88 100644 --- a/internal/services/iot/provider.go +++ b/internal/services/iot/provider.go @@ -268,7 +268,7 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return p.listTagsForResource(req) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+op, http.StatusNotImplemented), nil + return shared.JSONError("UnsupportedOperation", "operation not implemented: "+op, http.StatusBadRequest), nil } } diff --git a/internal/services/iot/provider_test.go b/internal/services/iot/provider_test.go index edaf871..7c87067 100644 --- a/internal/services/iot/provider_test.go +++ b/internal/services/iot/provider_test.go @@ -476,9 +476,10 @@ func TestTags(t *testing.T) { func TestDefaultHandler(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. + // Unimplemented ops must return an honest AWS error (<500), not a false 200 + // success nor a server-side 501. resp := callREST(t, p, "GET", "/some/unknown/path", "SomeUnknownOperation", "") - assert.Equal(t, 501, resp.StatusCode) + assert.Equal(t, 400, resp.StatusCode) rb := parseBody(t, resp) - assert.Equal(t, "NotImplemented", rb["__type"]) + assert.Equal(t, "UnsupportedOperation", rb["__type"]) } diff --git a/internal/services/iotwireless/provider.go b/internal/services/iotwireless/provider.go index 7544246..b43abf5 100644 --- a/internal/services/iotwireless/provider.go +++ b/internal/services/iotwireless/provider.go @@ -187,7 +187,7 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return p.listTagsForResource(req) default: - return shared.JSONError("NotImplemented", "operation not implemented: "+op, http.StatusNotImplemented), nil + return shared.JSONError("UnsupportedOperation", "operation not implemented: "+op, http.StatusBadRequest), nil } } diff --git a/internal/services/iotwireless/provider_test.go b/internal/services/iotwireless/provider_test.go index 87d3e10..e7b7265 100644 --- a/internal/services/iotwireless/provider_test.go +++ b/internal/services/iotwireless/provider_test.go @@ -369,10 +369,11 @@ func TestServiceProfileCRUD(t *testing.T) { func TestStubOperations(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops must return an AWS error, not a false 200 success. + // Unimplemented ops must return an honest AWS error (<500), not a false 200 + // success nor a server-side 501. resp := callREST(t, p, "GET", "/service-endpoint", "GetServiceEndpoint", "") - assert.Equal(t, 501, resp.StatusCode) + assert.Equal(t, 400, resp.StatusCode) resp2 := callREST(t, p, "GET", "/log-levels", "GetLogLevelsByResourceTypes", "") - assert.Equal(t, 501, resp2.StatusCode) + assert.Equal(t, 400, resp2.StatusCode) } diff --git a/internal/services/kinesis/provider.go b/internal/services/kinesis/provider.go index 587b77f..b0f0f7f 100644 --- a/internal/services/kinesis/provider.go +++ b/internal/services/kinesis/provider.go @@ -171,7 +171,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return jsonOK(map[string]any{"streamARN": "", "streamName": ""}) default: - return jsonErr("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/kinesisanalyticsv2/provider.go b/internal/services/kinesisanalyticsv2/provider.go index df2bfd0..2609a13 100644 --- a/internal/services/kinesisanalyticsv2/provider.go +++ b/internal/services/kinesisanalyticsv2/provider.go @@ -121,7 +121,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request "DeleteApplicationVpcConfiguration": return p.appSubConfigOperation(action, params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/kms/provider.go b/internal/services/kms/provider.go index fa1861d..e9fb3be 100644 --- a/internal/services/kms/provider.go +++ b/internal/services/kms/provider.go @@ -127,7 +127,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListKeyPolicies": return p.listKeyPolicies(params) default: - return kmsError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/memorydb/provider.go b/internal/services/memorydb/provider.go index 2c07fce..b503af6 100644 --- a/internal/services/memorydb/provider.go +++ b/internal/services/memorydb/provider.go @@ -171,7 +171,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return shared.JSONResponse(http.StatusOK, map[string]any{"ReservedNode": map[string]any{}}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/organizations/provider.go b/internal/services/organizations/provider.go index c609c04..64f22cb 100644 --- a/internal/services/organizations/provider.go +++ b/internal/services/organizations/provider.go @@ -151,7 +151,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request "DescribeResourcePolicy", "PutResourcePolicy", "DeleteResourcePolicy": return p.stubSuccess(action) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/resourcegroupstaggingapi/provider.go b/internal/services/resourcegroupstaggingapi/provider.go index 935ec42..086ece1 100644 --- a/internal/services/resourcegroupstaggingapi/provider.go +++ b/internal/services/resourcegroupstaggingapi/provider.go @@ -6,7 +6,6 @@ package resourcegroupstaggingapi import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -136,7 +135,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListResourcesWithTagFilter": return p.getResources(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/route53resolver/provider.go b/internal/services/route53resolver/provider.go index 69d943f..6055784 100644 --- a/internal/services/route53resolver/provider.go +++ b/internal/services/route53resolver/provider.go @@ -6,7 +6,6 @@ package route53resolver import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -219,7 +218,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return shared.JSONResponse(http.StatusOK, map[string]any{}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/sagemaker/provider.go b/internal/services/sagemaker/provider.go index b4f833e..bd9d115 100644 --- a/internal/services/sagemaker/provider.go +++ b/internal/services/sagemaker/provider.go @@ -223,7 +223,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request // ---- ~320 stub operations ---- default: - return shared.JSONError("NotImplemented", "operation not implemented: "+action, http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/sagemaker/provider_test.go b/internal/services/sagemaker/provider_test.go index 8f779e3..8e76568 100644 --- a/internal/services/sagemaker/provider_test.go +++ b/internal/services/sagemaker/provider_test.go @@ -6,6 +6,7 @@ package sagemaker import ( "context" "encoding/json" + "errors" "net/http/httptest" "strings" "testing" @@ -53,23 +54,14 @@ func assertOK(t *testing.T, resp *plugin.Response) { } } -func assertErr(t *testing.T, resp *plugin.Response) { +// assertUnhandled verifies an unimplemented op delegates to the CRUD engine by +// returning the ErrUnhandledOp sentinel (the router turns that into a response). +func assertUnhandled(t *testing.T, p *Provider, op string) { t.Helper() - if resp.StatusCode != 501 { - t.Fatalf("expected 501, got %d: %s", resp.StatusCode, string(resp.Body)) - } - var e struct { - Type string `json:"__type"` - Message string `json:"message"` - } - if err := json.Unmarshal(resp.Body, &e); err != nil { - t.Fatalf("expected JSON error body, got %q: %v", string(resp.Body), err) - } - if e.Type != "NotImplemented" { - t.Errorf("expected __type=NotImplemented, got %q (body: %s)", e.Type, string(resp.Body)) - } - if e.Message == "" { - t.Errorf("expected non-empty error message (body: %s)", string(resp.Body)) + req := httptest.NewRequest("POST", "/"+op, strings.NewReader("{}")) + req.Header.Set("Content-Type", "application/json") + if _, err := p.HandleRequest(context.Background(), op, req); !errors.Is(err, plugin.ErrUnhandledOp) { + t.Fatalf("%s: expected ErrUnhandledOp, got %v", op, err) } } @@ -657,15 +649,12 @@ func TestTags(t *testing.T) { func TestDefaultStub(t *testing.T) { p := newTestProvider(t) - // Unimplemented ops return an AWS error, not a false success. - resp := callOp(t, p, "CreateAutoMLJob", `{}`) - assertErr(t, resp) - - resp = callOp(t, p, "DescribeCluster", `{}`) - assertErr(t, resp) + // Unimplemented ops delegate to the CRUD engine via the sentinel. + assertUnhandled(t, p, "CreateAutoMLJob") + assertUnhandled(t, p, "DescribeCluster") // Search IS implemented and legitimately returns empty results. - resp = callOp(t, p, "Search", `{"Resource":"TrainingJob"}`) + resp := callOp(t, p, "Search", `{"Resource":"TrainingJob"}`) assertOK(t, resp) body := parseBody(t, resp) results, _ := body["Results"].([]any) diff --git a/internal/services/secretsmanager/provider.go b/internal/services/secretsmanager/provider.go index 89cfac2..c763669 100644 --- a/internal/services/secretsmanager/provider.go +++ b/internal/services/secretsmanager/provider.go @@ -150,7 +150,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "GetSecretHistory": return p.listSecretVersionIds(params) default: - return smError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/servicediscovery/provider.go b/internal/services/servicediscovery/provider.go index 6e6c515..5e26fdc 100644 --- a/internal/services/servicediscovery/provider.go +++ b/internal/services/servicediscovery/provider.go @@ -6,7 +6,6 @@ package servicediscovery import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -126,7 +125,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/sfn/provider.go b/internal/services/sfn/provider.go index 30e8fc9..e55941b 100644 --- a/internal/services/sfn/provider.go +++ b/internal/services/sfn/provider.go @@ -150,7 +150,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "UpdateMapRun": return p.updateMapRun(params) default: - return json10Err("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/shield/provider.go b/internal/services/shield/provider.go index 92de37f..2d25625 100644 --- a/internal/services/shield/provider.go +++ b/internal/services/shield/provider.go @@ -6,7 +6,6 @@ package shield import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -139,7 +138,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/sqs/provider.go b/internal/services/sqs/provider.go index bd7f696..b222d1d 100644 --- a/internal/services/sqs/provider.go +++ b/internal/services/sqs/provider.go @@ -190,7 +190,8 @@ func (p *SQSProvider) handleJSONRequest(op string, req *http.Request) (*plugin.R case "RemovePermission": return jsonResp(http.StatusOK, map[string]any{}) default: - return jsonError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/ssm/provider.go b/internal/services/ssm/provider.go index 797d833..c306f32 100644 --- a/internal/services/ssm/provider.go +++ b/internal/services/ssm/provider.go @@ -112,7 +112,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "TerminateSession": return p.terminateSession(params) default: - return ssmError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/ssoadmin/provider.go b/internal/services/ssoadmin/provider.go index 733949b..419190e 100644 --- a/internal/services/ssoadmin/provider.go +++ b/internal/services/ssoadmin/provider.go @@ -223,7 +223,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListRegions": return shared.JSONResponse(http.StatusOK, map[string]any{"Regions": []any{}}) default: - return ssoError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/support/provider.go b/internal/services/support/provider.go index c6b7c82..9f75d31 100644 --- a/internal/services/support/provider.go +++ b/internal/services/support/provider.go @@ -6,7 +6,6 @@ package support import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -153,7 +152,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "SearchCases": return p.searchCases(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/swf/provider.go b/internal/services/swf/provider.go index 1551b1c..29107df 100644 --- a/internal/services/swf/provider.go +++ b/internal/services/swf/provider.go @@ -153,7 +153,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return json10Err("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/textract/provider.go b/internal/services/textract/provider.go index 2997d0c..d2cdc88 100644 --- a/internal/services/textract/provider.go +++ b/internal/services/textract/provider.go @@ -6,7 +6,6 @@ package textract import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -169,7 +168,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "GetServiceStatus": return shared.JSONResponse(http.StatusOK, map[string]any{"Status": "AVAILABLE"}) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/timestreamwrite/provider.go b/internal/services/timestreamwrite/provider.go index a784d37..a4c700b 100644 --- a/internal/services/timestreamwrite/provider.go +++ b/internal/services/timestreamwrite/provider.go @@ -104,7 +104,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return json10Err("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/transcribe/provider.go b/internal/services/transcribe/provider.go index d2255a6..7f1e7d1 100644 --- a/internal/services/transcribe/provider.go +++ b/internal/services/transcribe/provider.go @@ -6,7 +6,6 @@ package transcribe import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -162,7 +161,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "ListTagsForResource": return p.listTagsForResource(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/transfer/provider.go b/internal/services/transfer/provider.go index a738fb3..9fc40dd 100644 --- a/internal/services/transfer/provider.go +++ b/internal/services/transfer/provider.go @@ -6,7 +6,6 @@ package transfer import ( "context" "encoding/json" - "fmt" "io" "net/http" "path/filepath" @@ -150,7 +149,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "TestIdentityProvider": return p.testIdentityProvider(params) default: - return shared.JSONError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/waf/provider.go b/internal/services/waf/provider.go index 5f3d732..afcbf40 100644 --- a/internal/services/waf/provider.go +++ b/internal/services/waf/provider.go @@ -257,7 +257,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request return jsonResp(http.StatusOK, map[string]any{"SampledRequests": []any{}, "PopulationSize": 0, "TimeWindow": map[string]any{}}) default: - return wafError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/services/wafv2/provider.go b/internal/services/wafv2/provider.go index 1b18409..e5d9ea5 100644 --- a/internal/services/wafv2/provider.go +++ b/internal/services/wafv2/provider.go @@ -197,7 +197,8 @@ func (p *Provider) HandleRequest(_ context.Context, op string, req *http.Request case "DeleteFirewallManagerRuleGroups": return shared.JSONResponse(http.StatusOK, map[string]any{"NextWebACLLockToken": shared.GenerateID("", 32)}) default: - return wafError("NotImplemented", fmt.Sprintf("operation not implemented: %s", action), http.StatusNotImplemented), nil + // Fall back to the generic CRUD engine for unimplemented ops. + return nil, plugin.ErrUnhandledOp } } diff --git a/internal/shared/crud/crud.go b/internal/shared/crud/crud.go new file mode 100644 index 0000000..df47d8f --- /dev/null +++ b/internal/shared/crud/crud.go @@ -0,0 +1,282 @@ +// SPDX-License-Identifier: Apache-2.0 + +// Package crud is a generic, Smithy-model-driven fallback engine that serves +// standard CRUD-shaped operations (Create/Get/List/Delete/Update/Tag/…) which a +// service's hand-written provider has not implemented. +// +// Fidelity is deliberately "plausible, not faithful": responses are store-backed +// and echo the caller's input plus synthesized ids/ARNs, so SDKs round-trip, but +// there is no validation, cross-resource integrity, or business logic. Operations +// the engine cannot classify return ErrUnclassified so the caller falls back to a +// normal AWS error. See docs/crud-engine.md for fidelity tiers and scope. +package crud + +import ( + "crypto/rand" + "encoding/hex" + "encoding/json" + "errors" + "maps" + "strings" + "sync" + "time" +) + +// ErrUnclassified means the engine has no CRUD handling for this operation; the +// caller should fall back to its usual "unknown action" error. +var ErrUnclassified = errors.New("crud: operation not classifiable") + +// OpMeta describes how one operation maps onto generic CRUD behaviour. It is +// produced by codegen from the Smithy model and registered per service. +type OpMeta struct { + Verb string // canonical action: Create, Get, List, Delete, Update, Tag, Untag, Relate, Toggle + Resource string // singular resource key, e.g. "Database" + OutputListKey string // output member holding the collection (List ops) + OutputItemKey string // output member wrapping a single resource ("" = flat echo) +} + +// Result is a protocol-agnostic response the caller maps onto its transport. +type Result struct { + Status int + Body []byte + ContentType string +} + +const jsonContentType = "application/x-amz-json-1.1" + +var ( + mu sync.RWMutex + registry = map[string]map[string]OpMeta{} // service -> op -> meta + store = map[string]map[string]map[string]any{} // "service|resource" -> id -> doc +) + +// Register records a service's operation metadata. The generated crudregistry +// package calls this from a single init(). +func Register(service string, ops map[string]OpMeta) { + mu.Lock() + defer mu.Unlock() + registry[service] = ops +} + +// RegisteredOps returns the operation metadata registered for a service. +func RegisteredOps(service string) map[string]OpMeta { + mu.RLock() + defer mu.RUnlock() + return registry[service] +} + +// JSONProtocol reports whether the engine can serve requests for a protocol. +// Only the X-Amz-Target JSON protocols carry an operation name at the router, +// which the engine needs to classify. +func JSONProtocol(protocol string) bool { + return strings.HasPrefix(protocol, "json") +} + +// Handle attempts to serve op for service from its request body. It returns +// ErrUnclassified when the operation is unknown or not CRUD-shaped. +func Handle(service, op, protocol string, body []byte) (*Result, error) { + if !JSONProtocol(protocol) { + return nil, ErrUnclassified + } + mu.RLock() + m, ok := registry[service][op] + mu.RUnlock() + if !ok || m.Verb == "" { + return nil, ErrUnclassified + } + + var params map[string]any + if len(body) > 0 { + if err := json.Unmarshal(body, ¶ms); err != nil { + // Malformed body: real services reject with SerializationException + // rather than fabricating a success from empty params. + return withContentType(serializationError(), protocol), nil + } + } + if params == nil { + params = map[string]any{} + } + res, err := dispatch(service, m, params) + return withContentType(res, protocol), err +} + +// withContentType stamps the protocol-appropriate amz-json version so a json-1.0 +// service is not served a 1.1 content type. dispatch/okJSON default to 1.1. +func withContentType(res *Result, protocol string) *Result { + if res != nil && protocol == "json-1.0" { + res.ContentType = "application/x-amz-json-1.0" + } + return res +} + +func dispatch(service string, m OpMeta, params map[string]any) (*Result, error) { + switch m.Verb { + case "Create": + id := resourceID(m.Resource, params) + item := maps.Clone(params) + stamp(item, service, m.Resource, id) + put(service, m.Resource, id, item) + return okJSON(wrapItem(m, item)) + + case "Get": + // A Describe*/Get* whose output is a collection (list key, no single-item + // wrapper) returns the stored list, not a single-resource lookup — a fresh + // store yields an empty collection (200), not ResourceNotFoundException. + if m.OutputItemKey == "" && m.OutputListKey != "" { + return okJSON(map[string]any{m.OutputListKey: list(service, m.Resource)}) + } + id := resourceID(m.Resource, params) + item, found := get(service, m.Resource, id) + if !found { + return notFound(m.Resource), nil + } + return okJSON(wrapItem(m, item)) + + case "List": + key := m.OutputListKey + if key == "" { + key = m.Resource + "s" + } + return okJSON(map[string]any{key: list(service, m.Resource)}) + + case "Delete": + id := resourceID(m.Resource, params) + del(service, m.Resource, id) + return okJSON(map[string]any{}) + + case "Update": + id := resourceID(m.Resource, params) + item, found := get(service, m.Resource, id) + if !found { + item = maps.Clone(params) + stamp(item, service, m.Resource, id) + } else { + for k, v := range params { + item[k] = v + } + } + put(service, m.Resource, id, item) + return okJSON(wrapItem(m, item)) + + case "Tag", "Untag", "Relate", "Toggle": + // Relationship / tag / status flips: acknowledge without modelling state. + return okJSON(map[string]any{}) + + default: + return nil, ErrUnclassified + } +} + +// resourceID picks the caller-supplied identifier for a resource, or generates +// one when none is present (e.g. Create with a server-assigned id). +func resourceID(resource string, params map[string]any) string { + for _, k := range []string{ + resource + "Name", resource + "Id", resource + "Arn", resource + "Identifier", + "Name", "Id", "Arn", "Identifier", "ResourceName", "ResourceArn", + } { + if v, ok := params[k].(string); ok && v != "" { + return v + } + } + return "res-" + randHex(10) +} + +// stamp fills in plausible server-assigned fields so single-resource responses +// look populated. It never overwrites caller-supplied values. +func stamp(item map[string]any, service, resource, id string) { + setIfAbsent(item, resource+"Id", id) + setIfAbsent(item, resource+"Arn", + "arn:aws:"+service+":us-east-1:000000000000:"+strings.ToLower(resource)+"/"+id) + setIfAbsent(item, "CreationTime", time.Now().UTC().Format(time.RFC3339)) +} + +func wrapItem(m OpMeta, item map[string]any) map[string]any { + if m.OutputItemKey != "" { + return map[string]any{m.OutputItemKey: item} + } + return item +} + +// --- in-memory store --- + +func storeKey(service, resource string) string { return service + "|" + resource } + +func put(service, resource, id string, doc map[string]any) { + mu.Lock() + defer mu.Unlock() + k := storeKey(service, resource) + if store[k] == nil { + store[k] = map[string]map[string]any{} + } + store[k][id] = doc +} + +func get(service, resource, id string) (map[string]any, bool) { + mu.RLock() + defer mu.RUnlock() + doc, ok := store[storeKey(service, resource)][id] + if !ok { + return nil, false + } + // Copy: the caller marshals/mutates this after the lock is released, so it + // must not alias the stored map (else a concurrent Get/List marshalling it + // while an Update writes to it triggers a fatal concurrent map read/write). + return maps.Clone(doc), true +} + +func del(service, resource, id string) { + mu.Lock() + defer mu.Unlock() + delete(store[storeKey(service, resource)], id) +} + +func list(service, resource string) []map[string]any { + mu.RLock() + defer mu.RUnlock() + items := store[storeKey(service, resource)] + out := make([]map[string]any, 0, len(items)) + for _, doc := range items { + out = append(out, maps.Clone(doc)) // copy: marshalled unlocked, see get() + } + return out +} + +// --- helpers --- + +func okJSON(v any) (*Result, error) { + b, err := json.Marshal(v) + if err != nil { + return nil, err + } + return &Result{Status: 200, Body: b, ContentType: jsonContentType}, nil +} + +func notFound(resource string) *Result { + b, _ := json.Marshal(map[string]string{ + "__type": "ResourceNotFoundException", + "message": resource + " not found", + }) + return &Result{Status: 400, Body: b, ContentType: jsonContentType} +} + +func serializationError() *Result { + b, _ := json.Marshal(map[string]string{ + "__type": "SerializationException", + "message": "failed to deserialize request body", + }) + return &Result{Status: 400, Body: b, ContentType: jsonContentType} +} + +func setIfAbsent(m map[string]any, k string, v any) { + if _, ok := m[k]; !ok { + m[k] = v + } +} + +func randHex(n int) string { + b := make([]byte, n) + // On the near-impossible rand failure, b stays zeroed: still a valid, + // consistent-length hex string rather than a differently-sized literal. + _, _ = rand.Read(b) + return hex.EncodeToString(b) +} diff --git a/internal/shared/crud/crud_test.go b/internal/shared/crud/crud_test.go new file mode 100644 index 0000000..9a4a5d1 --- /dev/null +++ b/internal/shared/crud/crud_test.go @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: Apache-2.0 + +package crud + +import ( + "encoding/json" + "sync" + "testing" +) + +func handleJSON(t *testing.T, service, op string, params map[string]any) (*Result, error) { + t.Helper() + body, _ := json.Marshal(params) + return Handle(service, op, "json-1.1", body) +} + +func decode(t *testing.T, r *Result) map[string]any { + t.Helper() + var m map[string]any + if err := json.Unmarshal(r.Body, &m); err != nil { + t.Fatalf("bad response body: %v", err) + } + return m +} + +func TestEngineCRUDRoundTrip(t *testing.T) { + const svc = "testsvc" + Register(svc, map[string]OpMeta{ + "CreateThing": {Verb: "Create", Resource: "Thing", OutputItemKey: "Thing"}, + "GetThing": {Verb: "Get", Resource: "Thing", OutputItemKey: "Thing"}, + "ListThings": {Verb: "List", Resource: "Thing", OutputListKey: "Things"}, + "UpdateThing": {Verb: "Update", Resource: "Thing", OutputItemKey: "Thing"}, + "DeleteThing": {Verb: "Delete", Resource: "Thing"}, + }) + + // Create echoes input and synthesizes id/arn under the item wrapper. + r, err := handleJSON(t, svc, "CreateThing", map[string]any{"ThingName": "a", "Color": "red"}) + if err != nil || r.Status != 200 { + t.Fatalf("create: status=%d err=%v", statusOf(r), err) + } + thing := decode(t, r)["Thing"].(map[string]any) + if thing["ThingName"] != "a" || thing["Color"] != "red" { + t.Fatalf("create echo wrong: %v", thing) + } + if thing["ThingArn"] == nil || thing["ThingId"] == nil { + t.Fatalf("create did not synthesize id/arn: %v", thing) + } + + // Get returns the stored item. + r, _ = handleJSON(t, svc, "GetThing", map[string]any{"ThingName": "a"}) + if r.Status != 200 { + t.Fatalf("get status=%d", r.Status) + } + if decode(t, r)["Thing"].(map[string]any)["Color"] != "red" { + t.Fatalf("get did not return stored color") + } + + // List wraps items under the output list key. + r, _ = handleJSON(t, svc, "ListThings", map[string]any{}) + things := decode(t, r)["Things"].([]any) + if len(things) != 1 { + t.Fatalf("list len = %d, want 1", len(things)) + } + + // Update merges. + r, _ = handleJSON(t, svc, "UpdateThing", map[string]any{"ThingName": "a", "Color": "blue"}) + if decode(t, r)["Thing"].(map[string]any)["Color"] != "blue" { + t.Fatalf("update did not merge") + } + + // Delete then Get -> not found. + r, _ = handleJSON(t, svc, "DeleteThing", map[string]any{"ThingName": "a"}) + if r.Status != 200 { + t.Fatalf("delete status=%d", r.Status) + } + r, _ = handleJSON(t, svc, "GetThing", map[string]any{"ThingName": "missing"}) + if r.Status != 400 || decode(t, r)["__type"] != "ResourceNotFoundException" { + t.Fatalf("expected not-found, got %d %v", r.Status, decode(t, r)) + } +} + +func TestEngineUnclassified(t *testing.T) { + const svc = "othersvc" + Register(svc, map[string]OpMeta{"CreateWidget": {Verb: "Create", Resource: "Widget"}}) + + if _, err := handleJSON(t, svc, "SomeCustomOp", nil); err != ErrUnclassified { + t.Fatalf("unknown op: want ErrUnclassified, got %v", err) + } + if _, err := Handle(svc, "CreateWidget", "query", []byte("{}")); err != ErrUnclassified { + t.Fatalf("non-json protocol: want ErrUnclassified, got %v", err) + } + if _, err := handleJSON(t, "unregistered", "CreateThing", nil); err != ErrUnclassified { + t.Fatalf("unregistered service: want ErrUnclassified, got %v", err) + } +} + +// TestEngineConcurrentAccess exercises the store under concurrent Update (which +// mutates a resource) against Get/List (which marshal it). Before get()/list() +// returned copies, this tripped `fatal error: concurrent map read and map write` +// under -race and crashed the gateway. +func TestEngineConcurrentAccess(t *testing.T) { + const svc = "racesvc" + Register(svc, map[string]OpMeta{ + "CreateThing": {Verb: "Create", Resource: "RThing", OutputItemKey: "Thing"}, + "GetThing": {Verb: "Get", Resource: "RThing", OutputItemKey: "Thing"}, + "ListThings": {Verb: "List", Resource: "RThing", OutputListKey: "Things"}, + "UpdateThing": {Verb: "Update", Resource: "RThing", OutputItemKey: "Thing"}, + }) + _, _ = handleJSON(t, svc, "CreateThing", map[string]any{"RThingName": "x", "N": float64(0)}) + + do := func(op string, params map[string]any) { + body, _ := json.Marshal(params) + if _, err := Handle(svc, op, "json-1.1", body); err != nil { + t.Errorf("%s: %v", op, err) + } + } + + var wg sync.WaitGroup + for i := 0; i < 50; i++ { + wg.Add(3) + go func(n int) { defer wg.Done(); do("UpdateThing", map[string]any{"RThingName": "x", "N": float64(n)}) }(i) + go func() { defer wg.Done(); do("GetThing", map[string]any{"RThingName": "x"}) }() + go func() { defer wg.Done(); do("ListThings", map[string]any{}) }() + } + wg.Wait() +} + +func statusOf(r *Result) int { + if r == nil { + return 0 + } + return r.Status +} diff --git a/tests/compatibility/test_crud_engine.py b/tests/compatibility/test_crud_engine.py new file mode 100644 index 0000000..a3b5901 --- /dev/null +++ b/tests/compatibility/test_crud_engine.py @@ -0,0 +1,29 @@ +"""Smoke tests for the generic CRUD fallback engine. + +These exercise operations the hand-written provider does NOT implement, proving +the router → engine fallback serves plausible, store-backed responses end-to-end +via boto3. Fidelity is intentionally "plausible, not faithful" (see +internal/shared/crud), so assertions stay at round-trip level.""" + +import pytest +from botocore.exceptions import ClientError + + +def test_glue_engine_blueprint_crud(glue_client): + # glue does not hand-implement Blueprint ops; they are served by the engine. + glue_client.create_blueprint(Name="bp1", BlueprintLocation="s3://bucket/bp.zip") + + got = glue_client.get_blueprint(Name="bp1") + assert got["ResponseMetadata"]["HTTPStatusCode"] == 200 + assert got["Blueprint"]["Name"] == "bp1" + + glue_client.delete_blueprint(Name="bp1") + with pytest.raises(ClientError): + glue_client.get_blueprint(Name="bp1") + + +def test_glue_hand_written_still_wins(glue_client): + # Databases ARE hand-implemented; the engine must not shadow them. + glue_client.create_database(DatabaseInput={"Name": "db_real"}) + resp = glue_client.get_database(Name="db_real") + assert resp["Database"]["Name"] == "db_real" diff --git a/tests/compatibility/test_unimplemented_ops.py b/tests/compatibility/test_unimplemented_ops.py index c1800c2..c343774 100644 --- a/tests/compatibility/test_unimplemented_ops.py +++ b/tests/compatibility/test_unimplemented_ops.py @@ -1,8 +1,6 @@ -"""Regression tests: unimplemented operations must return an AWS error, not a -silent 200 empty-body success. Guards the fix in the services that previously -returned a false 200 for unknown ops (apigatewayv2, backup, codebuild, -codedeploy, codepipeline, cognito-idp, config, glue, iot, iotwireless, -sagemaker).""" +"""Unimplemented CRUD-shaped operations are now served by the fallback engine on +all registered JSON services. Operations the engine cannot classify still return +an honest error, never a fabricated success.""" import pytest from botocore.exceptions import ClientError @@ -26,12 +24,31 @@ ] -@pytest.mark.parametrize( - "fixture,method,kwargs", - UNIMPLEMENTED_OPS, - ids=[f"{f.removesuffix('_client')}.{m}" for f, m, _ in UNIMPLEMENTED_OPS], -) -def test_unimplemented_op_errors(request, fixture, method, kwargs): +@pytest.mark.parametrize("fixture,method,kwargs", UNIMPLEMENTED_OPS) +def test_unimplemented_op_served_or_honest_error(request, fixture, method, kwargs): + """Across all wired services, an op the provider does not hand-implement must + be either served by the fallback engine (2xx) or rejected with an honest AWS + error — never a server-side 500 InternalError or a fabricated/garbled body.""" client = request.getfixturevalue(fixture) + try: + resp = getattr(client, method)(**kwargs) + except ClientError as e: + assert e.response["ResponseMetadata"]["HTTPStatusCode"] < 500, e + else: + assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 + + +def test_engine_serves_formerly_unimplemented_op(codebuild_client): + # codebuild does not hand-implement ListBuildBatches; the engine serves it + # (this returned an error before the service was wired to the engine). + resp = codebuild_client.list_build_batches() + assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 + + +def test_wired_service_errors_on_unclassifiable_op(glue_client): + # glue IS engine-wired, but StartBlueprintRun is neither hand-implemented nor + # CRUD-classifiable, so the engine declines it and an honest error is returned. with pytest.raises(ClientError): - getattr(client, method)(**kwargs) + glue_client.start_blueprint_run( + BlueprintName="bp", RoleArn="arn:aws:iam::000000000000:role/r" + )