diff --git a/.changelog/05d5c53734ea4a71a637d86016fa174b.json b/.changelog/05d5c53734ea4a71a637d86016fa174b.json new file mode 100644 index 00000000000..cfc99dd885d --- /dev/null +++ b/.changelog/05d5c53734ea4a71a637d86016fa174b.json @@ -0,0 +1,159 @@ +{ + "id": "05d5c537-34ea-4a71-a637-d86016fa174b", + "type": "feature", + "collapse": true, + "description": "Service clients now support custom endpoints that have an initial URI path defined.", + "modules": [ + "internal/protocoltest/awsrestjson", + "internal/protocoltest/ec2query", + "internal/protocoltest/jsonrpc", + "internal/protocoltest/jsonrpc10", + "internal/protocoltest/query", + "internal/protocoltest/restxml", + "internal/protocoltest/restxmlwithnamespace", + "service/acm", + "service/acmpca", + "service/alexaforbusiness", + "service/applicationautoscaling", + "service/applicationdiscoveryservice", + "service/applicationinsights", + "service/apprunner", + "service/appstream", + "service/athena", + "service/autoscaling", + "service/autoscalingplans", + "service/budgets", + "service/cloud9", + "service/cloudcontrol", + "service/cloudformation", + "service/cloudhsm", + "service/cloudhsmv2", + "service/cloudsearch", + "service/cloudtrail", + "service/cloudwatch", + "service/cloudwatchevents", + "service/cloudwatchlogs", + "service/codebuild", + "service/codecommit", + "service/codedeploy", + "service/codepipeline", + "service/codestar", + "service/codestarconnections", + "service/cognitoidentity", + "service/cognitoidentityprovider", + "service/comprehend", + "service/comprehendmedical", + "service/computeoptimizer", + "service/configservice", + "service/costandusagereportservice", + "service/costexplorer", + "service/databasemigrationservice", + "service/datapipeline", + "service/datasync", + "service/dax", + "service/devicefarm", + "service/directconnect", + "service/directoryservice", + "service/docdb", + "service/dynamodb", + "service/dynamodbstreams", + "service/ec2", + "service/ec2instanceconnect", + "service/ecr", + "service/ecrpublic", + "service/ecs", + "service/elasticache", + "service/elasticbeanstalk", + "service/elasticloadbalancing", + "service/elasticloadbalancingv2", + "service/emr", + "service/eventbridge", + "service/firehose", + "service/fms", + "service/forecast", + "service/forecastquery", + "service/frauddetector", + "service/fsx", + "service/gamelift", + "service/glacier", + "service/globalaccelerator", + "service/glue", + "service/health", + "service/healthlake", + "service/iam", + "service/identitystore", + "service/inspector", + "service/iot", + "service/iotsecuretunneling", + "service/iotthingsgraph", + "service/kendra", + "service/kinesis", + "service/kinesisanalytics", + "service/kinesisanalyticsv2", + "service/kms", + "service/lakeformation", + "service/licensemanager", + "service/lightsail", + "service/lookoutequipment", + "service/machinelearning", + "service/macie", + "service/marketplacecommerceanalytics", + "service/marketplaceentitlementservice", + "service/marketplacemetering", + "service/mediastore", + "service/memorydb", + "service/migrationhub", + "service/migrationhubconfig", + "service/mturk", + "service/neptune", + "service/networkfirewall", + "service/opsworks", + "service/opsworkscm", + "service/organizations", + "service/personalize", + "service/pi", + "service/pinpoint", + "service/pricing", + "service/proton", + "service/qldbsession", + "service/rds", + "service/redshift", + "service/redshiftdata", + "service/rekognition", + "service/resourcegroupstaggingapi", + "service/route53domains", + "service/route53recoverycluster", + "service/route53resolver", + "service/sagemaker", + "service/secretsmanager", + "service/servicecatalog", + "service/servicediscovery", + "service/servicequotas", + "service/ses", + "service/sfn", + "service/shield", + "service/sms", + "service/snowball", + "service/sns", + "service/sqs", + "service/ssm", + "service/ssmcontacts", + "service/ssoadmin", + "service/storagegateway", + "service/sts", + "service/support", + "service/swf", + "service/textract", + "service/timestreamquery", + "service/timestreamwrite", + "service/transcribe", + "service/transfer", + "service/translate", + "service/voiceid", + "service/waf", + "service/wafregional", + "service/wafv2", + "service/workmail", + "service/workspaces" + ] +} diff --git a/.changelog/41575353444b40ffbf474f4155544f00.json b/.changelog/41575353444b40ffbf474f4155544f00.json new file mode 100644 index 00000000000..039eb2bf306 --- /dev/null +++ b/.changelog/41575353444b40ffbf474f4155544f00.json @@ -0,0 +1,9 @@ +{ + "id": "41575353-444b-40ff-bf47-4f4155544f00", + "type": "release", + "description": "New AWS service client module", + "modules": [ + "service/chimesdkmeetings", + "service/resiliencehub" + ] +} \ No newline at end of file diff --git a/.changelog/9a51012d895e4d9986a4294d67b469a1.json b/.changelog/546c0660c04c4d20a88b09fcfc95c790.json similarity index 83% rename from .changelog/9a51012d895e4d9986a4294d67b469a1.json rename to .changelog/546c0660c04c4d20a88b09fcfc95c790.json index c33f8fbedda..1c473622560 100644 --- a/.changelog/9a51012d895e4d9986a4294d67b469a1.json +++ b/.changelog/546c0660c04c4d20a88b09fcfc95c790.json @@ -1,7 +1,8 @@ { - "id": "9a51012d-895e-4d99-86a4-294d67b469a1", + "id": "546c0660-c04c-4d20-a88b-09fcfc95c790", "type": "feature", - "description": "Add WaitForOutput waiter helper method to include output of API operation used to check resource state", + "collapse": true, + "description": "Waiters now have a `WaitForOutput` method, which can be used to retrieve the output of the successful wait operation. Thank you to [Andrew Haines](https://github.com/haines) for contributing this feature.", "modules": [ "service/acm", "service/acmpca", @@ -54,4 +55,4 @@ "service/ssm", "service/ssmincidents" ] -} \ No newline at end of file +} diff --git a/.changelog/75b5e53ac23b400f947bf32b56a8e6db.json b/.changelog/75b5e53ac23b400f947bf32b56a8e6db.json new file mode 100644 index 00000000000..76986e1ccd3 --- /dev/null +++ b/.changelog/75b5e53ac23b400f947bf32b56a8e6db.json @@ -0,0 +1,27 @@ +{ + "id": "75b5e53a-c23b-400f-947b-f32b56a8e6db", + "type": "feature", + "description": "Updated service to latest API model.", + "modules": [ + "service/backup", + "service/batch", + "service/computeoptimizer", + "service/connect", + "service/docdb", + "service/ec2", + "service/ecs", + "service/gamelift", + "service/greengrassv2", + "service/identitystore", + "service/iotwireless", + "service/neptune", + "service/rds", + "service/s3control", + "service/sagemaker", + "service/sagemakerruntime", + "service/ssmincidents", + "service/transcribe", + "service/translate", + "service/wafv2" + ] +} \ No newline at end of file diff --git a/.changelog/bee4f2ee4ca0450baa452171ce92aa87.json b/.changelog/bee4f2ee4ca0450baa452171ce92aa87.json new file mode 100644 index 00000000000..45c136d18d1 --- /dev/null +++ b/.changelog/bee4f2ee4ca0450baa452171ce92aa87.json @@ -0,0 +1,10 @@ +{ + "id": "bee4f2ee-4ca0-450b-aa45-2171ce92aa87", + "type": "documentation", + "description": "Updated service to latest API model.", + "modules": [ + "service/dynamodb", + "service/health", + "service/resourcegroupstaggingapi" + ] +} \ No newline at end of file diff --git a/codegen/sdk-codegen/aws-models/backup.2018-11-15.json b/codegen/sdk-codegen/aws-models/backup.2018-11-15.json index 076488fdb96..cb2df7ee1bc 100644 --- a/codegen/sdk-codegen/aws-models/backup.2018-11-15.json +++ b/codegen/sdk-codegen/aws-models/backup.2018-11-15.json @@ -636,6 +636,12 @@ "traits": { "smithy.api#documentation": "

An array of conditions used to specify a set of resources to assign to a backup plan;\n for example, \"StringEquals\": {\"ec2:ResourceTag/Department\": \"accounting\".\n Assigns the backup plan to every resource with at least one matching tag.

" } + }, + "NotResources": { + "target": "com.amazonaws.backup#ResourceArns" + }, + "Conditions": { + "target": "com.amazonaws.backup#Conditions" } }, "traits": { @@ -924,6 +930,23 @@ "com.amazonaws.backup#ConditionKey": { "type": "string" }, + "com.amazonaws.backup#ConditionParameter": { + "type": "structure", + "members": { + "ConditionKey": { + "target": "com.amazonaws.backup#ConditionKey" + }, + "ConditionValue": { + "target": "com.amazonaws.backup#ConditionValue" + } + } + }, + "com.amazonaws.backup#ConditionParameters": { + "type": "list", + "member": { + "target": "com.amazonaws.backup#ConditionParameter" + } + }, "com.amazonaws.backup#ConditionType": { "type": "string", "traits": { @@ -938,6 +961,23 @@ "com.amazonaws.backup#ConditionValue": { "type": "string" }, + "com.amazonaws.backup#Conditions": { + "type": "structure", + "members": { + "StringEquals": { + "target": "com.amazonaws.backup#ConditionParameters" + }, + "StringNotEquals": { + "target": "com.amazonaws.backup#ConditionParameters" + }, + "StringLike": { + "target": "com.amazonaws.backup#ConditionParameters" + }, + "StringNotLike": { + "target": "com.amazonaws.backup#ConditionParameters" + } + } + }, "com.amazonaws.backup#ConflictException": { "type": "structure", "members": { diff --git a/codegen/sdk-codegen/aws-models/batch.2016-08-10.json b/codegen/sdk-codegen/aws-models/batch.2016-08-10.json index d5bbd1da330..2b150ee8af9 100644 --- a/codegen/sdk-codegen/aws-models/batch.2016-08-10.json +++ b/codegen/sdk-codegen/aws-models/batch.2016-08-10.json @@ -31,6 +31,24 @@ "shapes": { "com.amazonaws.batch#AWSBatchV20160810": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Batch", + "arnNamespace": "batch", + "cloudFormationName": "Batch", + "cloudTrailEventSource": "batch.amazonaws.com", + "endpointPrefix": "batch" + }, + "aws.auth#sigv4": { + "name": "batch" + }, + "aws.protocols#restJson1": {}, + "smithy.api#documentation": "Batch\n

Using Batch, you can run batch computing workloads on the Amazon Web Services Cloud. Batch computing is a common means for\n developers, scientists, and engineers to access large amounts of compute resources. Batch uses the advantages of\n this computing workload to remove the undifferentiated heavy lifting of configuring and managing required\n infrastructure. At the same time, it also adopts a familiar batch computing software approach. Given these\n advantages, Batch can help you to efficiently provision resources in response to jobs submitted, thus effectively\n helping you to eliminate capacity constraints, reduce compute costs, and deliver your results more quickly.

\n

As a fully managed service, Batch can run batch computing workloads of any scale. Batch automatically\n provisions compute resources and optimizes workload distribution based on the quantity and scale of your specific\n workloads. With Batch, there's no need to install or manage batch computing software. This means that you can focus\n your time and energy on analyzing results and solving your specific problems.

", + "smithy.api#title": "AWS Batch", + "smithy.api#xmlNamespace": { + "uri": "http://batch.amazonaws.com/doc/2016-08-10/" + } + }, "version": "2016-08-10", "operations": [ { @@ -42,12 +60,18 @@ { "target": "com.amazonaws.batch#CreateJobQueue" }, + { + "target": "com.amazonaws.batch#CreateSchedulingPolicy" + }, { "target": "com.amazonaws.batch#DeleteComputeEnvironment" }, { "target": "com.amazonaws.batch#DeleteJobQueue" }, + { + "target": "com.amazonaws.batch#DeleteSchedulingPolicy" + }, { "target": "com.amazonaws.batch#DeregisterJobDefinition" }, @@ -63,9 +87,15 @@ { "target": "com.amazonaws.batch#DescribeJobs" }, + { + "target": "com.amazonaws.batch#DescribeSchedulingPolicies" + }, { "target": "com.amazonaws.batch#ListJobs" }, + { + "target": "com.amazonaws.batch#ListSchedulingPolicies" + }, { "target": "com.amazonaws.batch#ListTagsForResource" }, @@ -89,26 +119,11 @@ }, { "target": "com.amazonaws.batch#UpdateJobQueue" - } - ], - "traits": { - "aws.api#service": { - "sdkId": "Batch", - "arnNamespace": "batch", - "cloudFormationName": "Batch", - "cloudTrailEventSource": "batch.amazonaws.com", - "endpointPrefix": "batch" - }, - "aws.auth#sigv4": { - "name": "batch" }, - "aws.protocols#restJson1": {}, - "smithy.api#documentation": "Batch\n

Using Batch, you can run batch computing workloads on the Cloud. Batch computing is a common means for\n developers, scientists, and engineers to access large amounts of compute resources. Batch uses the advantages of\n this computing workload to remove the undifferentiated heavy lifting of configuring and managing required\n infrastructure. At the same time, it also adopts a familiar batch computing software approach. Given these\n advantages, Batch can help you to efficiently provision resources in response to jobs submitted, thus effectively\n helping you to eliminate capacity constraints, reduce compute costs, and deliver your results more quickly.

\n

As a fully managed service, Batch can run batch computing workloads of any scale. Batch automatically\n provisions compute resources and optimizes workload distribution based on the quantity and scale of your specific\n workloads. With Batch, there's no need to install or manage batch computing software. This means that you can focus\n your time and energy on analyzing results and solving your specific problems.

", - "smithy.api#title": "AWS Batch", - "smithy.api#xmlNamespace": { - "uri": "http://batch.amazonaws.com/doc/2016-08-10/" + { + "target": "com.amazonaws.batch#UpdateSchedulingPolicy" } - } + ] }, "com.amazonaws.batch#ArrayJobDependency": { "type": "string", @@ -478,6 +493,12 @@ "smithy.api#required": {} } }, + "unmanagedvCpus": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The maximum number of VCPUs expected to be used for an unmanaged compute environment.

" + } + }, "ecsClusterArn": { "target": "com.amazonaws.batch#String", "traits": { @@ -644,7 +665,7 @@ "tags": { "target": "com.amazonaws.batch#TagsMap", "traits": { - "smithy.api#documentation": "

Key-value pair tags to be applied to EC2 resources that are launched in the compute environment. For Batch,\n these take the form of \"String1\": \"String2\", where String1 is the tag key and String2 is the tag value−for\n example, { \"Name\": \"Batch Instance - C4OnDemand\" }. This is helpful for recognizing your Batch instances in the\n Amazon EC2 console. These tags can't be updated or removed after the compute environment is created.Aany changes to these\n tags require that you create a new compute environment and remove the old compute environment. These tags aren't seen\n when using the Batch ListTagsForResource API operation.

\n \n

This parameter isn't applicable to jobs that are running on Fargate resources, and shouldn't be\n specified.

\n
" + "smithy.api#documentation": "

Key-value pair tags to be applied to EC2 resources that are launched in the compute environment. For Batch,\n these take the form of \"String1\": \"String2\", where String1 is the tag key and String2 is the tag value−for\n example, { \"Name\": \"Batch Instance - C4OnDemand\" }. This is helpful for recognizing your Batch\n instances in the Amazon EC2 console. These tags can't be updated or removed after the compute environment is created. Any\n changes to these tags require that you create a new compute environment and remove the old compute environment. These\n tags aren't seen when using the Batch ListTagsForResource API operation.

\n \n

This parameter isn't applicable to jobs that are running on Fargate resources, and shouldn't be\n specified.

\n
" } }, "placementGroup": { @@ -674,7 +695,7 @@ "ec2Configuration": { "target": "com.amazonaws.batch#Ec2ConfigurationList", "traits": { - "smithy.api#documentation": "

Provides information used to select Amazon Machine Images (AMIs) for EC2 instances in the compute environment.\n If Ec2Configuration isn't specified, the default is ECS_AL1.

\n \n

This parameter isn't applicable to jobs that are running on Fargate resources, and shouldn't be\n specified.

\n
" + "smithy.api#documentation": "

Provides information used to select Amazon Machine Images (AMIs) for EC2 instances in the compute environment.\n If Ec2Configuration isn't specified, the default is ECS_AL2.

\n \n

One or two values can be provided.

\n \n \n

This parameter isn't applicable to jobs that are running on Fargate resources, and shouldn't be\n specified.

\n
" } } }, @@ -732,13 +753,13 @@ "vcpus": { "target": "com.amazonaws.batch#Integer", "traits": { - "smithy.api#documentation": "

The number of vCPUs reserved for the container. For jobs that run on EC2 resources, you can specify the vCPU\n requirement for the job using resourceRequirements, but you can't specify the vCPU requirements in both\n the vcpus and resourceRequirement object. This parameter maps to CpuShares in\n the Create a container section of the Docker Remote API and the --cpu-shares option to\n docker run. Each vCPU is equivalent to 1,024 CPU shares. You must\n specify at least one vCPU. This is required but can be specified in several places. It must be specified for each\n node at least once.

\n \n

This parameter isn't applicable to jobs that run on Fargate resources. For jobs that run on Fargate\n resources, you must specify the vCPU requirement for the job using resourceRequirements.

\n
" + "smithy.api#documentation": "

The number of vCPUs reserved for the container. For jobs that run on EC2 resources, you can specify the vCPU\n requirement for the job using resourceRequirements, but you can't specify the vCPU requirements in both\n the vcpus and resourceRequirements object. This parameter maps to CpuShares in\n the Create a container section of the Docker Remote API and the --cpu-shares option to\n docker run. Each vCPU is equivalent to 1,024 CPU shares. You must\n specify at least one vCPU. This is required but can be specified in several places. It must be specified for each\n node at least once.

\n \n

This parameter isn't applicable to jobs that run on Fargate resources. For jobs that run on Fargate\n resources, you must specify the vCPU requirement for the job using resourceRequirements.

\n
" } }, "memory": { "target": "com.amazonaws.batch#Integer", "traits": { - "smithy.api#documentation": "

For jobs run on EC2 resources that didn't specify memory requirements using ResourceRequirement,\n the number of MiB of memory reserved for the job. For other jobs, including all run on Fargate resources, see\n resourceRequirements.

" + "smithy.api#documentation": "

For jobs run on EC2 resources that didn't specify memory requirements using resourceRequirements,\n the number of MiB of memory reserved for the job. For other jobs, including all run on Fargate resources, see\n resourceRequirements.

" } }, "command": { @@ -756,7 +777,7 @@ "executionRoleArn": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the execution role that Batch can assume. For more information, see Batch execution IAM role in the\n Batch User Guide.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the\n execution\n role that Batch can assume. For more information, see Batch execution IAM role in the\n Batch User Guide.

" } }, "volumes": { @@ -893,7 +914,7 @@ "smithy.api#deprecated": { "message": "This field is deprecated, use resourceRequirements instead." }, - "smithy.api#documentation": "

This parameter indicates the number of vCPUs reserved for the container.It overrides the vcpus\n parameter that's set in the job definition, but doesn't override any vCPU requirement specified in the\n resourceRequirement structure in the job definition. To override vCPU requirements that are specified\n in the ResourceRequirement structure in the job definition, ResourceRequirement must be\n specified in the SubmitJob request, with type set to VCPU and\n value set to the new value.

\n

This parameter maps to CpuShares in the Create a container section of the\n Docker Remote API and the --cpu-shares option to docker run.\n Each vCPU is equivalent to 1,024 CPU shares. You must specify at least one vCPU.

\n \n

This parameter is supported for jobs that run on EC2 resources, but isn't supported for jobs that run on\n Fargate resources. For Fargate resources, you can only use resourceRequirement. For EC2 resources,\n you can use either this parameter or resourceRequirement but not both.

\n
" + "smithy.api#documentation": "

This parameter is deprecated, use\n resourceRequirements to override the vcpus parameter that's set in the\n job definition. It's not supported for jobs\n that run on Fargate resources. For jobs run on EC2 resources, it overrides the vcpus parameter set in\n the job definition, but doesn't override any vCPU requirement specified in the\n resourceRequirements structure in the job definition. To override vCPU requirements that are specified\n in the resourceRequirements structure in the job definition, resourceRequirements must be\n specified in the SubmitJob request, with type set to VCPU and\n value set to the new value. For\n more information, see Can't override job definition\n resource requirements in the Batch User Guide.

" } }, "memory": { @@ -902,7 +923,7 @@ "smithy.api#deprecated": { "message": "This field is deprecated, use resourceRequirements instead." }, - "smithy.api#documentation": "

This parameter indicates the amount of memory (in MiB) that's reserved for the job. It overrides the\n memory parameter set in the job definition, but doesn't override any memory requirement specified in\n the ResourceRequirement structure in the job definition. To override memory requirements that are\n specified in the ResourceRequirement structure in the job definition, ResourceRequirement\n must be specified in the SubmitJob request, with type set to MEMORY and\n value set to the new value.

\n

This parameter is supported for jobs that run on EC2 resources, but isn't supported for jobs that run on Fargate\n resources. For these resources, use resourceRequirement instead.

" + "smithy.api#documentation": "

This parameter is deprecated, use\n resourceRequirements to override the memory requirements specified in the job definition. It's not\n supported for jobs that run on Fargate resources. For jobs run on EC2 resources, it overrides the\n memory parameter set in the job definition, but doesn't override any memory requirement specified in\n the resourceRequirements structure in the job definition. To override memory requirements that are\n specified in the resourceRequirements structure in the job definition, resourceRequirements\n must be specified in the SubmitJob request, with type set to MEMORY and\n value set to the new value. For more information, see Can't override job definition\n resource requirements in the Batch User Guide.

" } }, "command": { @@ -949,7 +970,7 @@ "smithy.api#deprecated": { "message": "This field is deprecated, use resourceRequirements instead." }, - "smithy.api#documentation": "

The number of vCPUs reserved for the job. Each vCPU is equivalent to 1,024 CPU shares. This parameter maps to\n CpuShares in the Create a container section of the Docker Remote API and the\n --cpu-shares option to docker run. The number of vCPUs must\n be specified but can be specified in several places. You must specify it at least once for each node.

\n

This parameter is supported on EC2 resources but isn't supported for jobs that run on Fargate resources. For\n these resources, use resourceRequirement instead. You can use this parameter or\n resourceRequirements structure but not both.

\n \n

This parameter isn't applicable to jobs that are running on Fargate resources and shouldn't be provided. For\n jobs that run on Fargate resources, you must specify the vCPU requirement for the job using\n resourceRequirements.

\n
" + "smithy.api#documentation": "

This parameter is deprecated, use resourceRequirements to specify the vCPU requirements for the job\n definition. It's not supported for jobs that run on Fargate resources. For jobs run on EC2 resources, it specifies\n the number of vCPUs reserved for the job.

\n \n

Each vCPU is equivalent to 1,024 CPU shares. This parameter maps to CpuShares in the\n Create a container section of the Docker Remote API and the --cpu-shares option to\n docker run. The number of vCPUs must be specified but can be specified\n in several places. You must specify it at least once for each node.

" } }, "memory": { @@ -958,7 +979,7 @@ "smithy.api#deprecated": { "message": "This field is deprecated, use resourceRequirements instead." }, - "smithy.api#documentation": "

This parameter indicates the memory hard limit (in MiB) for a container. If your container attempts to exceed\n the specified number, it's terminated. You must specify at least 4 MiB of memory for a job using this parameter. The\n memory hard limit can be specified in several places. It must be specified for each node at least once.

\n

This parameter maps to Memory in the Create a container section of the\n Docker Remote API and the --memory option to docker\n run.

\n

This parameter is supported on EC2 resources but isn't supported on Fargate resources. For Fargate\n resources, you should specify the memory requirement using resourceRequirement. You can also do this for\n EC2 resources.

\n \n

If you're trying to maximize your resource utilization by providing your jobs as much memory as possible for a\n particular instance type, see Memory\n Management in the Batch User Guide.

\n
" + "smithy.api#documentation": "

This parameter is deprecated, use\n resourceRequirements to specify the memory requirements for the job definition. It's not supported for\n jobs that run on Fargate resources. For jobs run on EC2 resources, it specifies the memory hard\n limit (in MiB) for a container. If your container attempts to exceed the specified number, it's terminated. You must\n specify at least 4 MiB of memory for a job using this parameter. The memory hard limit can be specified in several\n places. It must be specified for each node at least once.

" } }, "command": { @@ -1105,7 +1126,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates an Batch compute environment. You can create MANAGED or UNMANAGED compute\n environments. MANAGED compute environments can use Amazon EC2 or Fargate resources.\n UNMANAGED compute environments can only use EC2 resources.

\n

In a managed compute environment, Batch manages the capacity and instance types of the compute resources\n within the environment. This is based on the compute resource specification that you define or the launch template that you\n specify when you create the compute environment. Either, you can choose to use EC2 On-Demand Instances and EC2 Spot\n Instances. Or, you can use Fargate and Fargate Spot capacity in your managed compute environment. You can\n optionally set a maximum price so that Spot Instances only launch when the Spot Instance price is less than a\n specified percentage of the On-Demand price.

\n \n

Multi-node parallel jobs aren't supported on Spot Instances.

\n
\n

In an unmanaged compute environment, you can manage your own EC2 compute resources and have a lot of flexibility\n with how you configure your compute resources. For example, you can use custom AMIs. However, you must verify that\n each of your AMIs meet the Amazon ECS container instance AMI specification. For more information, see container instance\n AMIs in the Amazon Elastic Container Service Developer Guide. After you created your unmanaged compute environment, you\n can use the DescribeComputeEnvironments operation to find the Amazon ECS cluster that's associated with\n it. Then, launch your container instances into that Amazon ECS cluster. For more information, see Launching an Amazon ECS\n container instance in the Amazon Elastic Container Service Developer Guide.

\n \n

Batch doesn't upgrade the AMIs in a compute environment after the environment is created. For example, it\n doesn't update the AMIs when a newer version of the Amazon ECS optimized AMI is available. Therefore, you're responsible\n for managing the guest operating system (including its updates and security patches) and any additional application\n software or utilities that you install on the compute resources. To use a new AMI for your Batch jobs, complete\n these steps:

\n
    \n
  1. \n

    Create a new compute environment with the new AMI.

    \n
  2. \n
  3. \n

    Add the compute environment to an existing job queue.

    \n
  4. \n
  5. \n

    Remove the earlier compute environment from your job queue.

    \n
  6. \n
  7. \n

    Delete the earlier compute environment.

    \n
  8. \n
\n
", + "smithy.api#documentation": "

Creates an Batch compute environment. You can create MANAGED or UNMANAGED compute\n environments. MANAGED compute environments can use Amazon EC2 or Fargate resources.\n UNMANAGED compute environments can only use EC2 resources.

\n

In a managed compute environment, Batch manages the capacity and instance types of the compute resources\n within the environment. This is based on the compute resource specification that you define or the launch template that you\n specify when you create the compute environment. Either, you can choose to use EC2 On-Demand Instances and EC2 Spot\n Instances. Or, you can use Fargate and Fargate Spot capacity in your managed compute environment. You can\n optionally set a maximum price so that Spot Instances only launch\n when\n the Spot Instance price is less than a specified percentage of the On-Demand price.

\n \n

Multi-node parallel jobs aren't supported on Spot Instances.

\n
\n

In an unmanaged compute environment, you can manage your own EC2 compute resources and have a lot of flexibility\n with how you configure your compute resources. For example, you can use custom AMIs. However, you must verify that\n each of your AMIs meet the Amazon ECS container instance AMI specification. For more information, see container instance AMIs in the\n Amazon Elastic Container Service Developer Guide. After you created your unmanaged compute environment, you can use the DescribeComputeEnvironments operation to find the Amazon ECS cluster that's associated with it. Then, launch\n your container instances into that Amazon ECS cluster. For more information, see Launching an Amazon ECS container instance in the\n Amazon Elastic Container Service Developer Guide.

\n \n

Batch doesn't upgrade the AMIs in a compute environment after the environment is created. For example, it\n doesn't update the AMIs when a newer version of the Amazon ECS optimized AMI is available. Therefore, you're responsible\n for managing the guest operating system (including its updates and security patches) and any additional application\n software or utilities that you install on the compute resources. To use a new AMI for your Batch jobs, complete\n these steps:

\n
    \n
  1. \n

    Create a new compute environment with the new AMI.

    \n
  2. \n
  3. \n

    Add the compute environment to an existing job queue.

    \n
  4. \n
  5. \n

    Remove the earlier compute environment from your job queue.

    \n
  6. \n
  7. \n

    Delete the earlier compute environment.

    \n
  8. \n
\n
", "smithy.api#http": { "method": "POST", "uri": "/v1/createcomputeenvironment", @@ -1136,6 +1157,12 @@ "smithy.api#documentation": "

The state of the compute environment. If the state is ENABLED, then the compute environment accepts\n jobs from a queue and can scale out automatically based on queues.

\n

If the state is ENABLED, then the Batch scheduler can attempt to place jobs from an associated\n job queue on the compute resources within the environment. If the compute environment is managed, then it can scale\n its instances out or in automatically, based on the job queue demand.

\n

If the state is DISABLED, then the Batch scheduler doesn't attempt to place jobs within the\n environment. Jobs in a STARTING or RUNNING state continue to progress normally. Managed\n compute environments in the DISABLED state don't scale out. However, they scale in to\n minvCpus value after instances become idle.

" } }, + "unmanagedvCpus": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The maximum number of vCPUs for an\n unmanaged compute environment. This parameter is only used for fair share scheduling to reserve vCPU capacity for new\n share identifiers. If this parameter is not provided for a fair share job queue, no vCPU capacity will be\n reserved.

\n \n \n

This parameter is only supported when the type parameter is set to UNMANAGED/

\n
" + } + }, "computeResources": { "target": "com.amazonaws.batch#ComputeResource", "traits": { @@ -1151,7 +1178,7 @@ "tags": { "target": "com.amazonaws.batch#TagrisTagsMap", "traits": { - "smithy.api#documentation": "

The tags that you apply to the compute environment to help you categorize and organize your resources. Each tag\n consists of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

\n

These tags can be updated or removed using the TagResource and UntagResource API operations. These tags don't\n propagate to the underlying compute resources.

" + "smithy.api#documentation": "

The tags that you apply to the compute environment to help you categorize and organize your resources. Each tag\n consists of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

\n

These tags can be updated or removed using the TagResource and UntagResource API operations. These tags don't\n propagate to the underlying compute resources.

" } } }, @@ -1217,6 +1244,12 @@ "smithy.api#documentation": "

The state of the job queue. If the job queue state is ENABLED, it is able to accept jobs. If the\n job queue state is DISABLED, new jobs can't be added to the queue, but jobs already in the queue can\n finish.

" } }, + "schedulingPolicyArn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

Amazon Resource Name (ARN) of the fair share scheduling\n policy. If this parameter is specified, the job queue will use a fair share scheduling policy. If this parameter is\n not specified, the job queue will use a first in, first out (FIFO) scheduling policy. Once a job queue is created,\n the fair share scheduling policy can be replaced but not removed. The format is\n aws:Partition:batch:Region:Account:scheduling-policy/Name\n .\n For example,\n aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy.

" + } + }, "priority": { "target": "com.amazonaws.batch#Integer", "traits": { @@ -1261,6 +1294,74 @@ } } }, + "com.amazonaws.batch#CreateSchedulingPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.batch#CreateSchedulingPolicyRequest" + }, + "output": { + "target": "com.amazonaws.batch#CreateSchedulingPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.batch#ClientException" + }, + { + "target": "com.amazonaws.batch#ServerException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates an Batch scheduling\n policy.

", + "smithy.api#http": { + "method": "POST", + "uri": "/v1/createschedulingpolicy", + "code": 200 + } + } + }, + "com.amazonaws.batch#CreateSchedulingPolicyRequest": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The name of the scheduling\n policy. Up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.

", + "smithy.api#required": {} + } + }, + "fairsharePolicy": { + "target": "com.amazonaws.batch#FairsharePolicy", + "traits": { + "smithy.api#documentation": "

The fair share policy of the scheduling\n policy.

" + } + }, + "tags": { + "target": "com.amazonaws.batch#TagrisTagsMap", + "traits": { + "smithy.api#documentation": "

The tags that you apply to the scheduling policy to help you categorize and organize your resources. Each tag\n consists of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

\n

These tags can be updated or removed using the TagResource and UntagResource API operations.

" + } + } + } + }, + "com.amazonaws.batch#CreateSchedulingPolicyResponse": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The name of the scheduling\n policy.

", + "smithy.api#required": {} + } + }, + "arn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the scheduling policy.\n The format is\n aws:Partition:batch:Region:Account:scheduling-policy/Name\n .\n For example,\n aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy.

", + "smithy.api#required": {} + } + } + } + }, "com.amazonaws.batch#DeleteComputeEnvironment": { "type": "operation", "input": { @@ -1349,6 +1450,47 @@ "type": "structure", "members": {} }, + "com.amazonaws.batch#DeleteSchedulingPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.batch#DeleteSchedulingPolicyRequest" + }, + "output": { + "target": "com.amazonaws.batch#DeleteSchedulingPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.batch#ClientException" + }, + { + "target": "com.amazonaws.batch#ServerException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes the specified scheduling\n policy.

\n

You can't delete a scheduling policy that is used in any job queues.

", + "smithy.api#http": { + "method": "POST", + "uri": "/v1/deleteschedulingpolicy", + "code": 200 + } + } + }, + "com.amazonaws.batch#DeleteSchedulingPolicyRequest": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the scheduling policy to\n delete.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.batch#DeleteSchedulingPolicyResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.batch#DeregisterJobDefinition": { "type": "operation", "input": { @@ -1458,7 +1600,7 @@ "nextToken": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The nextToken value to include in a future DescribeComputeEnvironments request. When\n the results of a DescribeJobDefinitions request exceed maxResults, this value can be used\n to retrieve the next page of results. This value is null when there are no more results to\n return.

" + "smithy.api#documentation": "

The nextToken value to include in a future DescribeComputeEnvironments request. When\n the results of a DescribeComputeEnvironments request exceed maxResults, this value can be\n used to retrieve the next page of results. This value is null when there are no more results to\n return.

" } } } @@ -1672,6 +1814,54 @@ } } }, + "com.amazonaws.batch#DescribeSchedulingPolicies": { + "type": "operation", + "input": { + "target": "com.amazonaws.batch#DescribeSchedulingPoliciesRequest" + }, + "output": { + "target": "com.amazonaws.batch#DescribeSchedulingPoliciesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.batch#ClientException" + }, + { + "target": "com.amazonaws.batch#ServerException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes one or more of your scheduling\n policies.

", + "smithy.api#http": { + "method": "POST", + "uri": "/v1/describeschedulingpolicies", + "code": 200 + } + } + }, + "com.amazonaws.batch#DescribeSchedulingPoliciesRequest": { + "type": "structure", + "members": { + "arns": { + "target": "com.amazonaws.batch#StringList", + "traits": { + "smithy.api#documentation": "

A list of up to 100 scheduling policy\n Amazon Resource Name (ARN) entries.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.batch#DescribeSchedulingPoliciesResponse": { + "type": "structure", + "members": { + "schedulingPolicies": { + "target": "com.amazonaws.batch#SchedulingPolicyDetailList", + "traits": { + "smithy.api#documentation": "

The list of scheduling\n policies.

" + } + } + } + }, "com.amazonaws.batch#Device": { "type": "structure", "members": { @@ -1742,7 +1932,7 @@ "iam": { "target": "com.amazonaws.batch#EFSAuthorizationConfigIAM", "traits": { - "smithy.api#documentation": "

Whether or not to use the Batch job IAM role defined in a job definition when mounting the Amazon EFS file system.\n If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. If this\n parameter is omitted, the default value of DISABLED is used. For more information, see Using Amazon EFS Access Points in\n the Batch User Guide. EFS IAM authorization requires that TransitEncryption be\n ENABLED and that a JobRoleArn is specified.

" + "smithy.api#documentation": "

Whether or not to use the Batch job IAM role defined in a job definition when mounting the Amazon EFS file system.\n If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. If this parameter is\n omitted, the default value of DISABLED is used. For more information, see Using Amazon EFS Access Points in the\n Batch User Guide. EFS IAM authorization requires that TransitEncryption be\n ENABLED and that a JobRoleArn is specified.

" } } }, @@ -1825,7 +2015,7 @@ "imageType": { "target": "com.amazonaws.batch#ImageType", "traits": { - "smithy.api#documentation": "

The image type to match with the instance type to select an AMI. If the imageIdOverride parameter\n isn't specified, then a recent Amazon ECS-optimized AMI (ECS_AL1) is\n used. Starting on March 31, 2021, this default will be changing to ECS_AL2 (Amazon Linux 2).

\n
\n
ECS_AL2
\n
\n

\n Amazon Linux\n 2− Default for all Amazon Web Services Graviton-based instance families (for example, C6g,\n M6g, R6g, and T4g) and can be used for all non-GPU instance types.

\n
\n
ECS_AL2_NVIDIA
\n
\n

\n Amazon Linux\n 2 (GPU)−Default for all GPU instance families (for example P4 and G4) and\n can be used for all non Amazon Web Services Graviton-based instance types.

\n
\n
ECS_AL1
\n
\n

\n Amazon\n Linux−Default for all non-GPU, non Amazon Web Services Graviton instance families. Amazon Linux is reaching the\n end-of-life of standard support. For more information, see Amazon\n Linux AMI.

\n
\n
", + "smithy.api#documentation": "

The image type to match with the instance type to select an AMI. If the imageIdOverride parameter\n isn't specified, then a recent Amazon ECS-optimized Amazon Linux 2 AMI\n (ECS_AL2) is used.

\n
\n
ECS_AL2
\n
\n

\n Amazon Linux\n 2− Default for all non-GPU instance families.

\n
\n
ECS_AL2_NVIDIA
\n
\n

\n Amazon Linux\n 2 (GPU)−Default for all GPU instance families (for example P4 and G4) and\n can be used for all non Amazon Web Services Graviton-based instance types.

\n
\n
ECS_AL1
\n
\n

\n Amazon Linux.\n Amazon Linux is reaching the end-of-life of standard support. For more information, see Amazon Linux AMI.

\n
\n
", "smithy.api#required": {} } }, @@ -1837,7 +2027,7 @@ } }, "traits": { - "smithy.api#documentation": "

Provides information used to select Amazon Machine Images (AMIs) for instances in the compute environment. If\n Ec2Configuration isn't specified, the default is currently ECS_AL1 (Amazon Linux) for\n non-GPU, non AWSGraviton instances. Starting on March 31, 2021, this default will be changing to ECS_AL2\n (Amazon Linux\n 2).

\n \n

This object isn't applicable to jobs that are running on Fargate resources.

\n
" + "smithy.api#documentation": "

Provides information used to select Amazon Machine Images (AMIs) for instances in the compute environment. If\n Ec2Configuration isn't specified, the default is ECS_AL2 (Amazon Linux 2).

\n \n

This object isn't applicable to jobs that are running on Fargate resources.

\n
" } }, "com.amazonaws.batch#Ec2ConfigurationList": { @@ -1858,19 +2048,19 @@ "onStatusReason": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

Contains a glob pattern to match against the StatusReason returned for a job. The pattern can be up\n to 512 characters in length. It can contain letters, numbers, periods (.), colons (:), and white space (including\n spaces or tabs). It can optionally end with an asterisk (*) so that only the start of the string needs to be an exact\n match.

" + "smithy.api#documentation": "

Contains a glob pattern to match against the StatusReason returned for a job. The pattern can be up\n to 512 characters in length. It can contain letters, numbers, periods (.), colons (:), and white space (including\n spaces or tabs).\n It can optionally end with an\n asterisk (*) so that only the start of the string needs to be an exact match.

\n \n

The string can be between 1 and 512 characters in length.

" } }, "onReason": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

Contains a glob pattern to match against the Reason returned for a job. The pattern can be up to\n 512 characters in length. It can contain letters, numbers, periods (.), colons (:), and white space (including spaces\n and tabs). It can optionally end with an asterisk (*) so that only the start of the string needs to be an exact\n match.

" + "smithy.api#documentation": "

Contains a glob pattern to match against the Reason returned for a job. The pattern can be up to\n 512 characters in length. It can contain letters, numbers, periods (.), colons (:), and white space (including spaces\n and tabs). It can optionally end with an asterisk (*) so that only the start of the string needs to be an exact\n match.

\n \n

The string can be between 1 and 512 characters in length.

" } }, "onExitCode": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

Contains a glob pattern to match against the decimal representation of the ExitCode returned for a\n job. The pattern can be up to 512 characters in length. It can contain only numbers, and can optionally end with an\n asterisk (*) so that only the start of the string needs to be an exact match.

" + "smithy.api#documentation": "

Contains a glob pattern to match against the decimal representation of the ExitCode returned for a\n job. The pattern can be up to 512 characters in length. It can contain only numbers, and can optionally end with an\n asterisk (*) so that only the start of the string needs to be an exact match.

\n \n

The string can be between 1 and 512 characters in length.

" } }, "action": { @@ -1891,6 +2081,32 @@ "target": "com.amazonaws.batch#EvaluateOnExit" } }, + "com.amazonaws.batch#FairsharePolicy": { + "type": "structure", + "members": { + "shareDecaySeconds": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The time period to use to calculate a\n fair share percentage for each fair share identifier in use, in seconds. A value of zero (0) indicates that only\n current usage should be measured; if there are four evenly weighted fair share identifiers then each can only use up\n to 25% of the available CPU resources, even if some of the fair share identifiers have no currently running jobs. The\n decay allows for more recently run jobs to have more weight than jobs that ran earlier. The maximum supported value\n is 604800 (1 week).

" + } + }, + "computeReservation": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

A value used to reserve some of the\n available maximum vCPU for fair share identifiers that have not yet been used.

\n

The reserved ratio is\n (computeReservation/100)^ActiveFairShares\n where\n \n ActiveFairShares\n is the number of active fair share identifiers.

\n

For example, a computeReservation value of 50 indicates that Batch should reserve 50% of the\n maximum available vCPU if there is only one fair share identifier, 25% if there are two fair share identifiers, and\n 12.5% if there are three fair share identifiers. A computeReservation value of 25 indicates that Batch\n should reserve 25% of the maximum available vCPU if there is only one fair share identifier, 6.25% if there are two\n fair share identifiers, and 1.56% if there are three fair share identifiers.

\n \n

The minimum value is 0 and the maximum value is 99.

" + } + }, + "shareDistribution": { + "target": "com.amazonaws.batch#ShareAttributesList", + "traits": { + "smithy.api#documentation": "

Array of SharedIdentifier\n objects that contain the weights for the fair\n share identifiers for the fair share policy.\n Fair share identifiers that\n are not included have a default weight of 1.0.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The fair share policy for a scheduling\n policy.

" + } + }, "com.amazonaws.batch#FargatePlatformConfiguration": { "type": "structure", "members": { @@ -1905,6 +2121,9 @@ "smithy.api#documentation": "

The platform configuration for jobs that are running on Fargate resources. Jobs that run on EC2 resources must\n not specify this parameter.

" } }, + "com.amazonaws.batch#Float": { + "type": "float" + }, "com.amazonaws.batch#Host": { "type": "structure", "members": { @@ -2019,10 +2238,16 @@ "type": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The type of job definition. If the job is run on Fargate resources, then multinode isn't\n supported. For more information about multi-node parallel jobs, see Creating a multi-node parallel job definition in the\n Batch User Guide.

", + "smithy.api#documentation": "

The type of job definition, either\n container or multinode. If the job is run on Fargate resources, then\n multinode isn't supported. For more information about multi-node parallel jobs, see Creating a multi-node parallel job definition\n in the Batch User Guide.

", "smithy.api#required": {} } }, + "schedulingPriority": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The scheduling priority of the job\n definition. This will only affect jobs in job queues with a fair share policy. Jobs with a higher scheduling priority\n will be scheduled before jobs with a lower scheduling priority.

" + } + }, "parameters": { "target": "com.amazonaws.batch#ParametersMap", "traits": { @@ -2160,6 +2385,18 @@ "smithy.api#required": {} } }, + "shareIdentifier": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The share identifier for the job.

" + } + }, + "schedulingPriority": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The scheduling policy of the job definition. This will only affect jobs in job queues with a fair share policy.\n Jobs with a higher scheduling priority will be scheduled before jobs with a lower scheduling priority.

" + } + }, "attempts": { "target": "com.amazonaws.batch#AttemptDetails", "traits": { @@ -2299,6 +2536,12 @@ "smithy.api#required": {} } }, + "schedulingPolicyArn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

Amazon Resource Name (ARN) of the scheduling policy. The format is\n aws:Partition:batch:Region:Account:scheduling-policy/Name\n .\n For example,\n aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy.

" + } + }, "status": { "target": "com.amazonaws.batch#JQStatus", "traits": { @@ -2693,6 +2936,70 @@ } } }, + "com.amazonaws.batch#ListSchedulingPolicies": { + "type": "operation", + "input": { + "target": "com.amazonaws.batch#ListSchedulingPoliciesRequest" + }, + "output": { + "target": "com.amazonaws.batch#ListSchedulingPoliciesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.batch#ClientException" + }, + { + "target": "com.amazonaws.batch#ServerException" + } + ], + "traits": { + "smithy.api#documentation": "

Returns a list of Batch scheduling\n policies.

", + "smithy.api#http": { + "method": "POST", + "uri": "/v1/listschedulingpolicies", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "pageSize": "maxResults" + } + } + }, + "com.amazonaws.batch#ListSchedulingPoliciesRequest": { + "type": "structure", + "members": { + "maxResults": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The maximum number of results returned by ListSchedulingPolicies in paginated output. When this\n parameter is used, ListSchedulingPolicies only returns maxResults results in a single page\n and a nextToken response element. The remaining results of the initial request can be seen by sending\n another ListSchedulingPolicies request with the returned nextToken value. This value can be\n between 1 and 100. If this parameter isn't used, then\n ListSchedulingPolicies returns up to 100 results and a nextToken value\n if applicable.

" + } + }, + "nextToken": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The nextToken value returned from a previous paginated ListSchedulingPolicies request\n where maxResults was used and the results exceeded the value of that parameter. Pagination continues\n from the end of the previous results that returned the nextToken value. This value is null\n when there are no more results to return.

\n \n

This token should be treated as an opaque identifier that's only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + } + } + } + }, + "com.amazonaws.batch#ListSchedulingPoliciesResponse": { + "type": "structure", + "members": { + "schedulingPolicies": { + "target": "com.amazonaws.batch#SchedulingPolicyListingDetailList", + "traits": { + "smithy.api#documentation": "

A list of scheduling policies that match\n the request.

" + } + }, + "nextToken": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The nextToken value to include in a future ListSchedulingPolicies request. When the\n results of a ListSchedulingPolicies request exceed maxResults, this value can be used to\n retrieve the next page of results. This value is null when there are no more results to return.

" + } + } + } + }, "com.amazonaws.batch#ListTagsForResource": { "type": "operation", "input": { @@ -2710,7 +3017,7 @@ } ], "traits": { - "smithy.api#documentation": "

Lists the tags for an Batch resource. Batch resources that support tags are compute environments, jobs, job definitions, and job\n queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", + "smithy.api#documentation": "

Lists the tags for an Batch resource. Batch resources that support tags are compute environments, jobs, job definitions, job queues,\n and scheduling policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", "smithy.api#http": { "method": "GET", "uri": "/v1/tags/{resourceArn}", @@ -2724,7 +3031,7 @@ "resourceArn": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) that identifies the resource that tags are listed for. Batch resources that support tags are compute environments, jobs, job definitions, and job\n queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) that identifies the resource that tags are listed for. Batch resources that support tags are compute environments, jobs, job definitions, job queues,\n and scheduling policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3121,6 +3428,12 @@ "smithy.api#documentation": "

Default parameter substitution placeholders to set in the job definition. Parameters are specified as a\n key-value pair mapping. Parameters in a SubmitJob request override any corresponding parameter defaults\n from the job definition.

" } }, + "schedulingPriority": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The scheduling priority for jobs that are\n submitted with this job definition. This will only affect jobs in job queues with a fair share policy. Jobs with a\n higher scheduling priority will be scheduled before jobs with a lower scheduling priority.

\n \n

The minimum supported value is 0 and the maximum supported value is 9999.

" + } + }, "containerProperties": { "target": "com.amazonaws.batch#ContainerProperties", "traits": { @@ -3200,7 +3513,7 @@ "value": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The quantity of the specified resource to reserve for the container. The values vary based on the\n type specified.

\n
\n
type=\"GPU\"
\n
\n

The number of physical GPUs to reserve for the container. The number of GPUs reserved for all containers in a\n job shouldn't exceed the number of available GPUs on the compute resource that the job is launched on.

\n \n

GPUs are not available for jobs that are running on Fargate resources.

\n
\n
\n
type=\"MEMORY\"
\n
\n

The memory hard limit (in MiB) present to the container. This parameter is supported for jobs that are\n running on EC2 resources. If your container attempts to exceed the memory specified, the container is terminated.\n This parameter maps to Memory in the Create a container section of the\n Docker Remote API and the --memory option to docker run.\n You must specify at least 4 MiB of memory for a job. This is required but can be specified in several places for\n multi-node parallel (MNP) jobs. It must be specified for each node at least once. This parameter maps to\n Memory in the Create a container section of the Docker Remote API and the\n --memory option to docker run.

\n \n

If you're trying to maximize your resource utilization by providing your jobs as much memory as possible for\n a particular instance type, see Memory\n Management in the Batch User Guide.

\n
\n

For jobs that are running on Fargate resources, then value is the hard limit (in MiB), and\n must match one of the supported values and the VCPU values must be one of the values supported for\n that memory value.

\n
\n
value = 512
\n
\n

\n VCPU = 0.25

\n
\n
value = 1024
\n
\n

\n VCPU = 0.25 or 0.5

\n
\n
value = 2048
\n
\n

\n VCPU = 0.25, 0.5, or 1

\n
\n
value = 3072
\n
\n

\n VCPU = 0.5, or 1

\n
\n
value = 4096
\n
\n

\n VCPU = 0.5, 1, or 2

\n
\n
value = 5120, 6144, or 7168
\n
\n

\n VCPU = 1 or 2

\n
\n
value = 8192
\n
\n

\n VCPU = 1, 2, or 4

\n
\n
value = 9216, 10240, 11264, 12288, 13312, 14336, 15360, or 16384
\n
\n

\n VCPU = 2 or 4

\n
\n
value = 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, 25600, 26624, 27648, 28672, 29696, or 30720
\n
\n

\n VCPU = 4

\n
\n
\n
\n
type=\"VCPU\"
\n
\n

The number of vCPUs reserved for the container. This parameter maps to CpuShares in the\n Create a container section of the Docker Remote API and the --cpu-shares option to\n docker run. Each vCPU is equivalent to 1,024 CPU shares. For EC2\n resources, you must specify at least one vCPU. This is required but can be specified in several places; it must be\n specified for each node at least once.

\n

For jobs that are running on Fargate resources, then value must match one of the supported\n values and the MEMORY values must be one of the values supported for that VCPU value. The supported\n values are 0.25, 0.5, 1, 2, and 4

\n
\n
value = 0.25
\n
\n

\n MEMORY = 512, 1024, or 2048

\n
\n
value = 0.5
\n
\n

\n MEMORY = 1024, 2048, 3072, or 4096

\n
\n
value = 1
\n
\n

\n MEMORY = 2048, 3072, 4096, 5120, 6144, 7168, or 8192

\n
\n
value = 2
\n
\n

\n MEMORY = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, or 16384

\n
\n
value = 4
\n
\n

\n MEMORY = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456,\n 20480, 21504, 22528, 23552, 24576, 25600, 26624, 27648, 28672, 29696, or 30720

\n
\n
\n
\n
", + "smithy.api#documentation": "

The quantity of the specified resource to reserve for the container. The values vary based on the\n type specified.

\n
\n
type=\"GPU\"
\n
\n

The number of physical GPUs to reserve for the container. The number of GPUs reserved for all containers in a\n job shouldn't exceed the number of available GPUs on the compute resource that the job is launched on.

\n \n

GPUs are not available for jobs that are running on Fargate resources.

\n
\n
\n
type=\"MEMORY\"
\n
\n

The memory hard limit (in MiB) present to the container. This parameter is supported for jobs that are\n running on EC2 resources. If your container attempts to exceed the memory specified, the container is terminated.\n This parameter maps to Memory in the Create a container section of the\n Docker Remote API and the --memory option to docker run.\n You must specify at least 4 MiB of memory for a job. This is required but can be specified in several places for\n multi-node parallel (MNP) jobs. It must be specified for each node at least once. This parameter maps to\n Memory in the Create a container section of the Docker Remote API and the\n --memory option to docker run.

\n \n

If you're trying to maximize your resource utilization by providing your jobs as much memory as possible for\n a particular instance type, see Memory\n Management in the Batch User Guide.

\n
\n

For jobs that are running on Fargate resources, then value is the hard limit (in MiB), and\n must match one of the supported values and the VCPU values must be one of the values supported for\n that memory value.

\n
\n
value = 512
\n
\n

\n VCPU = 0.25

\n
\n
value = 1024
\n
\n

\n VCPU = 0.25 or 0.5

\n
\n
value = 2048
\n
\n

\n VCPU = 0.25, 0.5, or 1

\n
\n
value = 3072
\n
\n

\n VCPU = 0.5, or 1

\n
\n
value = 4096
\n
\n

\n VCPU = 0.5, 1, or 2

\n
\n
value = 5120, 6144, or 7168
\n
\n

\n VCPU = 1 or 2

\n
\n
value = 8192
\n
\n

\n VCPU = 1, 2, or 4

\n
\n
value = 9216, 10240, 11264, 12288, 13312, 14336, 15360, or 16384
\n
\n

\n VCPU = 2 or 4

\n
\n
value = 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, 25600, 26624, 27648, 28672, 29696, or 30720
\n
\n

\n VCPU = 4

\n
\n
\n
\n
type=\"VCPU\"
\n
\n

The number of vCPUs reserved for the container. This parameter maps to CpuShares in the\n Create a container section of the Docker Remote API and the --cpu-shares option to\n docker run. Each vCPU is equivalent to 1,024 CPU shares. For EC2\n resources, you must specify at least one vCPU. This is required but can be specified in several places; it must be\n specified for each node at least once.

\n

For jobs that are running on Fargate resources, then value must match one of the supported\n values and the MEMORY values must be one of the values supported for that\n VCPU\n value. The supported values are 0.25, 0.5, 1, 2, and 4

\n
\n
value = 0.25
\n
\n

\n MEMORY = 512, 1024, or 2048

\n
\n
value = 0.5
\n
\n

\n MEMORY = 1024, 2048, 3072, or 4096

\n
\n
value = 1
\n
\n

\n MEMORY = 2048, 3072, 4096, 5120, 6144, 7168, or 8192

\n
\n
value = 2
\n
\n

\n MEMORY = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, or 16384

\n
\n
value = 4
\n
\n

\n MEMORY = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, 16384, 17408, 18432, 19456,\n 20480, 21504, 22528, 23552, 24576, 25600, 26624, 27648, 28672, 29696, or 30720

\n
\n
\n
\n
", "smithy.api#required": {} } }, @@ -3276,6 +3589,67 @@ "smithy.api#documentation": "

The retry strategy associated with a job. For more information, see Automated job retries in the Batch User Guide.

" } }, + "com.amazonaws.batch#SchedulingPolicyDetail": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The name of the scheduling\n policy.

", + "smithy.api#required": {} + } + }, + "arn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

Amazon Resource Name (ARN) of the scheduling policy. An example would be\n arn:aws:batch:us-east-1:123456789012:scheduling-policy/HighPriority\n \n

", + "smithy.api#required": {} + } + }, + "fairsharePolicy": { + "target": "com.amazonaws.batch#FairsharePolicy", + "traits": { + "smithy.api#documentation": "

The fair share policy for the scheduling\n policy.

" + } + }, + "tags": { + "target": "com.amazonaws.batch#TagrisTagsMap", + "traits": { + "smithy.api#documentation": "

The tags that you apply to the scheduling policy to help you categorize and organize your resources. Each tag\n consists of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

An object representing a scheduling\n policy.

" + } + }, + "com.amazonaws.batch#SchedulingPolicyDetailList": { + "type": "list", + "member": { + "target": "com.amazonaws.batch#SchedulingPolicyDetail" + } + }, + "com.amazonaws.batch#SchedulingPolicyListingDetail": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

Amazon Resource Name (ARN) of the scheduling policy.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

An object containing the details of a scheduling policy returned in a ListSchedulingPolicy\n action.

" + } + }, + "com.amazonaws.batch#SchedulingPolicyListingDetailList": { + "type": "list", + "member": { + "target": "com.amazonaws.batch#SchedulingPolicyListingDetail" + } + }, "com.amazonaws.batch#Secret": { "type": "structure", "members": { @@ -3317,6 +3691,33 @@ "smithy.api#httpError": 500 } }, + "com.amazonaws.batch#ShareAttributes": { + "type": "structure", + "members": { + "shareIdentifier": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

A fair share identifier or fair share identifier prefix. If the string ends with '*' then this entry specifies\n the weight factor to use for fair share identifiers that begin with that prefix. The list of fair share identifiers\n in a fair share policy cannot overlap. For example you cannot have one that specifies a shareIdentifier\n of UserA* and another that specifies a shareIdentifier of UserA-1.

\n

There can be no more than 500 fair share identifiers active in a job queue.

\n

The string is limited to 255 alphanumeric characters, optionally followed by '*'.

", + "smithy.api#required": {} + } + }, + "weightFactor": { + "target": "com.amazonaws.batch#Float", + "traits": { + "smithy.api#documentation": "

The weight factor for the fair share\n identifier. The default value is 1.0. A lower value has a higher priority for compute resources. For example, jobs\n using a share identifier with a weight factor of 0.125 (1/8) will get 8 times the compute resources of jobs using a\n share identifier with a weight factor of 1.

\n

The smallest supported value is 0.0001 and the largest supported value is 999.9999.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Specifies the weights for the fair share identifiers for the fair share policy. Fair share identifiers that are\n not included have a default weight of 1.0.

" + } + }, + "com.amazonaws.batch#ShareAttributesList": { + "type": "list", + "member": { + "target": "com.amazonaws.batch#ShareAttributes" + } + }, "com.amazonaws.batch#String": { "type": "string" }, @@ -3343,7 +3744,7 @@ } ], "traits": { - "smithy.api#documentation": "

Submits an Batch job from a job definition. Parameters that are specified during SubmitJob\n override parameters defined in the job definition. vCPU and memory requirements that are specified in the\n ResourceRequirements objects in the job definition are the exception. They can't be overridden this way\n using the memory and vcpus parameters. Rather, you must specify updates to job definition\n parameters in a ResourceRequirements object that's included in the containerOverrides\n parameter.

\n \n

Jobs that run on Fargate resources can't be guaranteed to run for more than 14 days. This is because, after 14\n days, Fargate resources might become unavailable and job might be terminated.

\n
", + "smithy.api#documentation": "

Submits an Batch job from a job definition. Parameters that are specified during SubmitJob\n override parameters defined in the job definition. vCPU and memory requirements that are specified in the\n resourceRequirements objects in the job definition are the exception. They can't be overridden this way\n using the memory and vcpus parameters. Rather, you must specify updates to job definition\n parameters in a ResourceRequirements object that's included in the containerOverrides\n parameter.

\n \n \n

Job queues with a scheduling policy are limited to 500 active fair share identifiers at a time.

\n
\n \n \n

Jobs that run on Fargate resources can't be guaranteed to run for more than 14 days. This is because, after 14\n days, Fargate resources might become unavailable and job might be terminated.

\n
", "smithy.api#http": { "method": "POST", "uri": "/v1/submitjob", @@ -3368,6 +3769,18 @@ "smithy.api#required": {} } }, + "shareIdentifier": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The share identifier for the\n job.

" + } + }, + "schedulingPriorityOverride": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The scheduling priority for the job. This\n will only affect jobs in job queues with a fair share policy. Jobs with a higher scheduling priority will be\n scheduled before jobs with a lower scheduling priority. This will override any scheduling priority in the job\n definition.

\n \n

The minimum supported value is 0 and the maximum supported value is 9999.

" + } + }, "arrayProperties": { "target": "com.amazonaws.batch#ArrayProperties", "traits": { @@ -3426,7 +3839,7 @@ "tags": { "target": "com.amazonaws.batch#TagrisTagsMap", "traits": { - "smithy.api#documentation": "

The tags that you apply to the job request to help you categorize and organize your resources. Each tag consists\n of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

" + "smithy.api#documentation": "

The tags that you apply to the job request to help you categorize and organize your resources. Each tag consists\n of a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

" } } }, @@ -3497,7 +3910,7 @@ } ], "traits": { - "smithy.api#documentation": "

Associates the specified tags to a resource with the specified resourceArn. If existing tags on a\n resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags that\n are associated with that resource are deleted as well. Batch resources that support tags are compute environments, jobs, job definitions, and job\n queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", + "smithy.api#documentation": "

Associates the specified tags to a resource with the specified resourceArn. If existing tags on a\n resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags that\n are associated with that resource are deleted as well. Batch resources that support tags are compute environments, jobs, job definitions, job queues,\n and scheduling policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", "smithy.api#http": { "method": "POST", "uri": "/v1/tags/{resourceArn}", @@ -3511,7 +3924,7 @@ "resourceArn": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource that tags are added to. Batch resources that support tags are compute environments, jobs, job definitions, and job\n queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource that tags are added to. Batch resources that support tags are compute environments, jobs, job definitions, job queues,\n and scheduling policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3519,7 +3932,7 @@ "tags": { "target": "com.amazonaws.batch#TagrisTagsMap", "traits": { - "smithy.api#documentation": "

The tags that you apply to the resource to help you categorize and organize your resources. Each tag consists of\n a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

", + "smithy.api#documentation": "

The tags that you apply to the resource to help you categorize and organize your resources. Each tag consists of\n a key and an optional value. For more information, see Tagging Amazon Web Services Resources in Amazon Web Services General\n Reference.

", "smithy.api#required": {} } } @@ -3713,7 +4126,7 @@ "resourceArn": { "target": "com.amazonaws.batch#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource from which to delete tags. Batch resources that support tags are compute environments, jobs, job definitions, and job\n queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource from which to delete tags. Batch resources that support tags are compute environments, jobs, job definitions, job queues,\n and scheduling policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are not supported.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3773,6 +4186,12 @@ "smithy.api#documentation": "

The state of the compute environment. Compute environments in the ENABLED state can accept jobs\n from a queue and scale in or out automatically based on the workload demand of its associated queues.

\n

If the state is ENABLED, then the Batch scheduler can attempt to place jobs from an associated\n job queue on the compute resources within the environment. If the compute environment is managed, then it can scale\n its instances out or in automatically, based on the job queue demand.

\n

If the state is DISABLED, then the Batch scheduler doesn't attempt to place jobs within the\n environment. Jobs in a STARTING or RUNNING state continue to progress normally. Managed\n compute environments in the DISABLED state don't scale out. However, they scale in to\n minvCpus value after instances become idle.

" } }, + "unmanagedvCpus": { + "target": "com.amazonaws.batch#Integer", + "traits": { + "smithy.api#documentation": "

The maximum number of vCPUs expected to\n be used for an unmanaged compute environment. This parameter should not be specified for a managed compute\n environment. This parameter is only used for fair share scheduling to reserve vCPU capacity for new share\n identifiers. If this parameter is not provided for a fair share job queue, no vCPU capacity will be\n reserved.

" + } + }, "computeResources": { "target": "com.amazonaws.batch#ComputeResourceUpdate", "traits": { @@ -3848,6 +4267,12 @@ "smithy.api#documentation": "

Describes the queue's ability to accept new jobs. If the job queue state is ENABLED, it can accept\n jobs. If the job queue state is DISABLED, new jobs can't be added to the queue, but jobs already in the\n queue can finish.

" } }, + "schedulingPolicyArn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

Amazon Resource Name (ARN) of the fair share scheduling policy. Once a job queue is created, the fair share scheduling policy can\n be replaced but not removed. The format is\n aws:Partition:batch:Region:Account:scheduling-policy/Name\n .\n For example,\n aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy.

" + } + }, "priority": { "target": "com.amazonaws.batch#Integer", "traits": { @@ -3882,6 +4307,53 @@ } } }, + "com.amazonaws.batch#UpdateSchedulingPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.batch#UpdateSchedulingPolicyRequest" + }, + "output": { + "target": "com.amazonaws.batch#UpdateSchedulingPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.batch#ClientException" + }, + { + "target": "com.amazonaws.batch#ServerException" + } + ], + "traits": { + "smithy.api#documentation": "

Updates a scheduling\n policy.

", + "smithy.api#http": { + "method": "POST", + "uri": "/v1/updateschedulingpolicy", + "code": 200 + } + } + }, + "com.amazonaws.batch#UpdateSchedulingPolicyRequest": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.batch#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the scheduling policy to update.

", + "smithy.api#required": {} + } + }, + "fairsharePolicy": { + "target": "com.amazonaws.batch#FairsharePolicy", + "traits": { + "smithy.api#documentation": "

The fair share\n policy.

" + } + } + } + }, + "com.amazonaws.batch#UpdateSchedulingPolicyResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.batch#Volume": { "type": "structure", "members": { diff --git a/codegen/sdk-codegen/aws-models/chimesdkmeetings.2021-07-15.json b/codegen/sdk-codegen/aws-models/chimesdkmeetings.2021-07-15.json new file mode 100644 index 00000000000..95b7ad3cb53 --- /dev/null +++ b/codegen/sdk-codegen/aws-models/chimesdkmeetings.2021-07-15.json @@ -0,0 +1,1578 @@ +{ + "smithy": "1.0", + "metadata": { + "suppressions": [ + { + "id": "HttpMethodSemantics", + "namespace": "*" + }, + { + "id": "HttpResponseCodeSemantics", + "namespace": "*" + }, + { + "id": "PaginatedTrait", + "namespace": "*" + }, + { + "id": "HttpHeaderTrait", + "namespace": "*" + }, + { + "id": "HttpUriConflict", + "namespace": "*" + }, + { + "id": "Service", + "namespace": "*" + } + ] + }, + "shapes": { + "com.amazonaws.chimesdkmeetings#Arn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 1024 + }, + "smithy.api#pattern": "^arn[\\/\\:\\-\\_\\.a-zA-Z0-9]+$", + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.chimesdkmeetings#Attendee": { + "type": "structure", + "members": { + "ExternalUserId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK external user ID. An idempotency token. Links the attendee to an identity managed by a builder application.

" + } + }, + "AttendeeId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee ID.

" + } + }, + "JoinToken": { + "target": "com.amazonaws.chimesdkmeetings#JoinTokenString", + "traits": { + "smithy.api#documentation": "

The join token used by the Amazon Chime SDK attendee.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

An Amazon Chime SDK meeting attendee. Includes a unique \n AttendeeId and JoinToken. The \n JoinToken\n allows a client to authenticate and join as the specified attendee. The \n JoinToken\n expires when the meeting ends, or when \n DeleteAttendee\n is called. After that, the attendee is unable to join the meeting.\n

\n \n

We recommend securely transferring each JoinToken from your server application\n to the client so that no other client has access to the token except for the one\n authorized to represent the attendee.

" + } + }, + "com.amazonaws.chimesdkmeetings#AttendeeList": { + "type": "list", + "member": { + "target": "com.amazonaws.chimesdkmeetings#Attendee" + } + }, + "com.amazonaws.chimesdkmeetings#BadRequestException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The input parameters don't match the service's restrictions.

", + "smithy.api#error": "client", + "smithy.api#httpError": 400 + } + }, + "com.amazonaws.chimesdkmeetings#BatchCreateAttendee": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#LimitExceededException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a group of meeting attendees.

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings/{MeetingId}/attendees?operation=batch-create", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeErrorList": { + "type": "list", + "member": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeError" + } + }, + "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK ID of the meeting to which you're adding attendees.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "Attendees": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeRequestItemList", + "traits": { + "smithy.api#documentation": "

The attendee information, including attendees' IDs and join tokens.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeResponse": { + "type": "structure", + "members": { + "Attendees": { + "target": "com.amazonaws.chimesdkmeetings#AttendeeList", + "traits": { + "smithy.api#documentation": "

The attendee information, including attendees' IDs and join tokens.

" + } + }, + "Errors": { + "target": "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeErrorList", + "traits": { + "smithy.api#documentation": "

If the action fails for one or more of the attendees in the request, a list of the attendees is returned, along with error codes and error messages.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#ChimeMeetingsSDKService": { + "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Chime SDK Meetings", + "arnNamespace": "chime", + "cloudFormationName": "ChimeSDKMeetings", + "cloudTrailEventSource": "chimesdkmeetings.amazonaws.com", + "endpointPrefix": "meetings-chime" + }, + "aws.auth#sigv4": { + "name": "chime" + }, + "aws.protocols#restJson1": {}, + "smithy.api#documentation": "

The Amazon Chime SDK meetings APIs in this section allow software developers to create Amazon Chime SDK meetings, set the AWS Regions for meetings, create and manage users, and send and \n receive meeting notifications. For more information \n about the meeting APIs, see Amazon Chime SDK meetings.

", + "smithy.api#title": "Amazon Chime SDK Meetings" + }, + "version": "2021-07-15", + "operations": [ + { + "target": "com.amazonaws.chimesdkmeetings#BatchCreateAttendee" + }, + { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendee" + }, + { + "target": "com.amazonaws.chimesdkmeetings#CreateMeeting" + }, + { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendees" + }, + { + "target": "com.amazonaws.chimesdkmeetings#DeleteAttendee" + }, + { + "target": "com.amazonaws.chimesdkmeetings#DeleteMeeting" + }, + { + "target": "com.amazonaws.chimesdkmeetings#GetAttendee" + }, + { + "target": "com.amazonaws.chimesdkmeetings#GetMeeting" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ListAttendees" + }, + { + "target": "com.amazonaws.chimesdkmeetings#StartMeetingTranscription" + }, + { + "target": "com.amazonaws.chimesdkmeetings#StopMeetingTranscription" + } + ] + }, + "com.amazonaws.chimesdkmeetings#ClientRequestToken": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 2, + "max": 64 + }, + "smithy.api#pattern": "^[-_a-zA-Z0-9]*$", + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendee": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#LimitExceededException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnprocessableEntityException" + } + ], + "traits": { + "smithy.api#documentation": "

\n Creates a new attendee for an active Amazon Chime SDK meeting. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the \n Amazon Chime Developer Guide.\n

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings/{MeetingId}/attendees", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendeeError": { + "type": "structure", + "members": { + "ExternalUserId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK external user ID. An idempotency token. Links the attendee to an identity managed by a builder application.

" + } + }, + "ErrorCode": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The error code.

" + } + }, + "ErrorMessage": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The error message.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The list of errors returned when errors are encountered during the BatchCreateAttendee and CreateAttendee actions. This includes external user IDs, error codes, and error messages.

" + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendeeRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The unique ID of the meeting.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ExternalUserId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK external user ID. An idempotency token. Links the attendee to an identity managed by a builder application.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendeeRequestItem": { + "type": "structure", + "members": { + "ExternalUserId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK external user ID. An idempotency token. Links the attendee to an identity managed by a builder application.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee fields to create, used with the BatchCreateAttendee action.

" + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendeeRequestItemList": { + "type": "list", + "member": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeRequestItem" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 100 + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateAttendeeResponse": { + "type": "structure", + "members": { + "Attendee": { + "target": "com.amazonaws.chimesdkmeetings#Attendee", + "traits": { + "smithy.api#documentation": "

The attendee information, including attendee ID and join token.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeeting": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#LimitExceededException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a new Amazon Chime SDK meeting in the specified media Region with no initial attendees. For more information about specifying media Regions, see \n Amazon Chime SDK Media Regions\n in the Amazon Chime Developer Guide. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the \n Amazon Chime Developer Guide.\n

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingRequest": { + "type": "structure", + "members": { + "ClientRequestToken": { + "target": "com.amazonaws.chimesdkmeetings#ClientRequestToken", + "traits": { + "smithy.api#documentation": "

The unique identifier for the client request. Use a different token for different meetings.

", + "smithy.api#idempotencyToken": {}, + "smithy.api#required": {} + } + }, + "MediaRegion": { + "target": "com.amazonaws.chimesdkmeetings#MediaRegion", + "traits": { + "smithy.api#documentation": "

The Region in which to create the meeting.

\n \n

\n Available values: \n af-south-1\n , \n ap-northeast-1\n , \n ap-northeast-2\n , \n ap-south-1\n , \n ap-southeast-1\n , \n ap-southeast-2\n , \n ca-central-1\n , \n eu-central-1\n , \n eu-north-1\n , \n eu-south-1\n , \n eu-west-1\n , \n eu-west-2\n , \n eu-west-3\n , \n sa-east-1\n , \n us-east-1\n , \n us-east-2\n , \n us-west-1\n , \n us-west-2\n .\n

", + "smithy.api#required": {} + } + }, + "MeetingHostId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

Reserved.

" + } + }, + "ExternalMeetingId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalMeetingId", + "traits": { + "smithy.api#documentation": "

The external meeting ID.

", + "smithy.api#required": {} + } + }, + "NotificationsConfiguration": { + "target": "com.amazonaws.chimesdkmeetings#NotificationsConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for resource targets to receive notifications when meeting and attendee events occur.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingResponse": { + "type": "structure", + "members": { + "Meeting": { + "target": "com.amazonaws.chimesdkmeetings#Meeting", + "traits": { + "smithy.api#documentation": "

The meeting information, including the meeting ID and \n MediaPlacement.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendees": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#LimitExceededException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + } + ], + "traits": { + "smithy.api#documentation": "

\n Creates a new Amazon Chime SDK meeting in the specified media Region, with attendees. For more information about specifying media Regions, see \n Amazon Chime SDK Media Regions\n in the Amazon Chime Developer Guide. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the Amazon Chime Developer Guide.\n

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings?operation=create-attendees", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesRequest": { + "type": "structure", + "members": { + "ClientRequestToken": { + "target": "com.amazonaws.chimesdkmeetings#ClientRequestToken", + "traits": { + "smithy.api#documentation": "

The unique identifier for the client request. Use a different token for different meetings.

", + "smithy.api#idempotencyToken": {}, + "smithy.api#required": {} + } + }, + "MediaRegion": { + "target": "com.amazonaws.chimesdkmeetings#MediaRegion", + "traits": { + "smithy.api#documentation": "

The Region in which to create the meeting.

", + "smithy.api#required": {} + } + }, + "MeetingHostId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

Reserved.

" + } + }, + "ExternalMeetingId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalMeetingId", + "traits": { + "smithy.api#documentation": "

The external meeting ID.

", + "smithy.api#required": {} + } + }, + "NotificationsConfiguration": { + "target": "com.amazonaws.chimesdkmeetings#NotificationsConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for resource targets to receive notifications when meeting and attendee events occur.

" + } + }, + "Attendees": { + "target": "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesRequestItemList", + "traits": { + "smithy.api#documentation": "

The attendee information, including attendees' IDs and join tokens.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesRequestItemList": { + "type": "list", + "member": { + "target": "com.amazonaws.chimesdkmeetings#CreateAttendeeRequestItem" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 20 + } + } + }, + "com.amazonaws.chimesdkmeetings#CreateMeetingWithAttendeesResponse": { + "type": "structure", + "members": { + "Meeting": { + "target": "com.amazonaws.chimesdkmeetings#Meeting", + "traits": { + "smithy.api#documentation": "

The meeting information, including the meeting ID and \n MediaPlacement.

" + } + }, + "Attendees": { + "target": "com.amazonaws.chimesdkmeetings#AttendeeList", + "traits": { + "smithy.api#documentation": "

The attendee information, including attendees' IDs and join tokens.

" + } + }, + "Errors": { + "target": "com.amazonaws.chimesdkmeetings#BatchCreateAttendeeErrorList", + "traits": { + "smithy.api#documentation": "

If the action fails for one or more of the attendees in the request, a list of the attendees is returned, along with error codes and error messages.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#DeleteAttendee": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#DeleteAttendeeRequest" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes an attendee from the specified Amazon Chime SDK meeting and deletes their \n JoinToken. Attendees are automatically deleted when a Amazon Chime SDK meeting is deleted. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the Amazon Chime Developer Guide.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/meetings/{MeetingId}/attendees/{AttendeeId}", + "code": 204 + } + } + }, + "com.amazonaws.chimesdkmeetings#DeleteAttendeeRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "AttendeeId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#DeleteMeeting": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#DeleteMeetingRequest" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes the specified Amazon Chime SDK meeting. The operation deletes all attendees, disconnects all clients, and prevents new clients from \n joining the meeting. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK in the \n Amazon Chime Developer Guide.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/meetings/{MeetingId}", + "code": 204 + } + } + }, + "com.amazonaws.chimesdkmeetings#DeleteMeetingRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#EngineTranscribeMedicalSettings": { + "type": "structure", + "members": { + "LanguageCode": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeMedicalLanguageCode", + "traits": { + "smithy.api#documentation": "

The language code specified for the Amazon Transcribe Medical engine.

", + "smithy.api#required": {} + } + }, + "Specialty": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeMedicalSpecialty", + "traits": { + "smithy.api#documentation": "

The specialty specified for the Amazon Transcribe Medical engine.

", + "smithy.api#required": {} + } + }, + "Type": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeMedicalType", + "traits": { + "smithy.api#documentation": "

The type of transcription.

", + "smithy.api#required": {} + } + }, + "VocabularyName": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The name of the vocabulary passed to Amazon Transcribe Medical.

" + } + }, + "Region": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeMedicalRegion", + "traits": { + "smithy.api#documentation": "

The AWS Region passed to Amazon Transcribe Medical. If you don't specify a Region, Amazon Chime uses the meeting's Region.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Settings specific to the Amazon Transcribe Medical engine.

" + } + }, + "com.amazonaws.chimesdkmeetings#EngineTranscribeSettings": { + "type": "structure", + "members": { + "LanguageCode": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeLanguageCode", + "traits": { + "smithy.api#documentation": "

The language code specified for the Amazon Transcribe engine.

", + "smithy.api#required": {} + } + }, + "VocabularyFilterMethod": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeVocabularyFilterMethod", + "traits": { + "smithy.api#documentation": "

The filtering method passed to Amazon Transcribe.

" + } + }, + "VocabularyFilterName": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The name of the vocabulary filter passed to Amazon Transcribe.

" + } + }, + "VocabularyName": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The name of the vocabulary passed to Amazon Transcribe.

" + } + }, + "Region": { + "target": "com.amazonaws.chimesdkmeetings#TranscribeRegion", + "traits": { + "smithy.api#documentation": "

The AWS Region passed to Amazon Transcribe. If you don't specify a Region, Amazon Chime uses the meeting's Region.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Settings specific to the Amazon Transcribe engine.

" + } + }, + "com.amazonaws.chimesdkmeetings#ExternalMeetingId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 2, + "max": 64 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.chimesdkmeetings#ExternalUserId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 2, + "max": 64 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.chimesdkmeetings#ForbiddenException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The client is permanently forbidden from making the request.

", + "smithy.api#error": "client", + "smithy.api#httpError": 403 + } + }, + "com.amazonaws.chimesdkmeetings#GetAttendee": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#GetAttendeeRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#GetAttendeeResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "

\n Gets the Amazon Chime SDK attendee details for a specified meeting ID and attendee ID. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the Amazon Chime Developer Guide.\n

", + "smithy.api#http": { + "method": "GET", + "uri": "/meetings/{MeetingId}/attendees/{AttendeeId}", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#GetAttendeeRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "AttendeeId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#GetAttendeeResponse": { + "type": "structure", + "members": { + "Attendee": { + "target": "com.amazonaws.chimesdkmeetings#Attendee", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee information.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#GetMeeting": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#GetMeetingRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#GetMeetingResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets the Amazon Chime SDK meeting details for the specified meeting ID. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the Amazon Chime Developer Guide.

", + "smithy.api#http": { + "method": "GET", + "uri": "/meetings/{MeetingId}", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#GetMeetingRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#GetMeetingResponse": { + "type": "structure", + "members": { + "Meeting": { + "target": "com.amazonaws.chimesdkmeetings#Meeting", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting information.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#GuidString": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$" + } + }, + "com.amazonaws.chimesdkmeetings#JoinTokenString": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 2, + "max": 2048 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.chimesdkmeetings#LimitExceededException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The request exceeds the resource limit.

", + "smithy.api#error": "client", + "smithy.api#httpError": 400 + } + }, + "com.amazonaws.chimesdkmeetings#ListAttendees": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#ListAttendeesRequest" + }, + "output": { + "target": "com.amazonaws.chimesdkmeetings#ListAttendeesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "

\n Lists the attendees for the specified Amazon Chime SDK meeting. For more information about the Amazon Chime SDK, see \n Using the Amazon Chime SDK\n in the Amazon Chime Developer Guide.\n

", + "smithy.api#http": { + "method": "GET", + "uri": "/meetings/{MeetingId}/attendees", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.chimesdkmeetings#ListAttendeesRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "NextToken": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The token to use to retrieve the next page of results.

", + "smithy.api#httpQuery": "next-token" + } + }, + "MaxResults": { + "target": "com.amazonaws.chimesdkmeetings#ResultMax", + "traits": { + "smithy.api#documentation": "

The maximum number of results to return in a single call.

", + "smithy.api#httpQuery": "max-results" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#ListAttendeesResponse": { + "type": "structure", + "members": { + "Attendees": { + "target": "com.amazonaws.chimesdkmeetings#AttendeeList", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK attendee information.

" + } + }, + "NextToken": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The token to use to retrieve the next page of results.

" + } + } + } + }, + "com.amazonaws.chimesdkmeetings#MediaPlacement": { + "type": "structure", + "members": { + "AudioHostUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The audio host URL.

" + } + }, + "AudioFallbackUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The audio fallback URL.

" + } + }, + "SignalingUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The signaling URL.

" + } + }, + "TurnControlUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The turn control URL.

" + } + }, + "ScreenDataUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The screen data URL.

" + } + }, + "ScreenViewingUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The screen viewing URL.

" + } + }, + "ScreenSharingUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The screen sharing URL.

" + } + }, + "EventIngestionUrl": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The event ingestion URL.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

A set of endpoints used by clients to connect to the media service group for an Amazon Chime SDK meeting.

" + } + }, + "com.amazonaws.chimesdkmeetings#MediaRegion": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 2, + "max": 64 + } + } + }, + "com.amazonaws.chimesdkmeetings#Meeting": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The Amazon Chime SDK meeting ID.

" + } + }, + "MeetingHostId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalUserId", + "traits": { + "smithy.api#documentation": "

Reserved.

" + } + }, + "ExternalMeetingId": { + "target": "com.amazonaws.chimesdkmeetings#ExternalMeetingId", + "traits": { + "smithy.api#documentation": "

The external meeting ID.

" + } + }, + "MediaRegion": { + "target": "com.amazonaws.chimesdkmeetings#MediaRegion", + "traits": { + "smithy.api#documentation": "

The Region in which you create the meeting. Available values: af-south-1, ap-northeast-1, \n ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, \n eu-central-1, eu-north-1, eu-south-1,\n eu-west-1, eu-west-2, eu-west-3,\n sa-east-1, us-east-1, us-east-2,\n us-west-1, us-west-2.

" + } + }, + "MediaPlacement": { + "target": "com.amazonaws.chimesdkmeetings#MediaPlacement", + "traits": { + "smithy.api#documentation": "

The media placement for the meeting.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

A meeting created using the Amazon Chime SDK.

" + } + }, + "com.amazonaws.chimesdkmeetings#NotFoundException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

One or more of the resources in the request does not exist in the system.

", + "smithy.api#error": "client", + "smithy.api#httpError": 404 + } + }, + "com.amazonaws.chimesdkmeetings#NotificationsConfiguration": { + "type": "structure", + "members": { + "LambdaFunctionArn": { + "target": "com.amazonaws.chimesdkmeetings#Arn", + "traits": { + "smithy.api#documentation": "

The ARN of the AWS Lambda function in the notifications configuration.

" + } + }, + "SnsTopicArn": { + "target": "com.amazonaws.chimesdkmeetings#Arn", + "traits": { + "smithy.api#documentation": "

The ARN of the SNS topic.

" + } + }, + "SqsQueueArn": { + "target": "com.amazonaws.chimesdkmeetings#Arn", + "traits": { + "smithy.api#documentation": "

The ARN of the SQS queue.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The configuration for resource targets to receive notifications when meeting and attendee events occur.

" + } + }, + "com.amazonaws.chimesdkmeetings#ResultMax": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#range": { + "min": 1, + "max": 100 + } + } + }, + "com.amazonaws.chimesdkmeetings#RetryAfterSeconds": { + "type": "string" + }, + "com.amazonaws.chimesdkmeetings#ServiceUnavailableException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + }, + "RetryAfterSeconds": { + "target": "com.amazonaws.chimesdkmeetings#RetryAfterSeconds", + "traits": { + "smithy.api#documentation": "

The number of seconds the caller should wait before retrying.

", + "smithy.api#httpHeader": "Retry-After" + } + } + }, + "traits": { + "smithy.api#documentation": "

The service is currently unavailable.

", + "smithy.api#error": "server", + "smithy.api#httpError": 503 + } + }, + "com.amazonaws.chimesdkmeetings#StartMeetingTranscription": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#StartMeetingTranscriptionRequest" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#LimitExceededException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnprocessableEntityException" + } + ], + "traits": { + "smithy.api#documentation": "

Starts transcription for the specified meetingId.

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings/{MeetingId}/transcription?operation=start", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#StartMeetingTranscriptionRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The unique ID of the meeting being transcribed.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "TranscriptionConfiguration": { + "target": "com.amazonaws.chimesdkmeetings#TranscriptionConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for the current transcription operation. Must contain EngineTranscribeSettings or \n EngineTranscribeMedicalSettings.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#StopMeetingTranscription": { + "type": "operation", + "input": { + "target": "com.amazonaws.chimesdkmeetings#StopMeetingTranscriptionRequest" + }, + "errors": [ + { + "target": "com.amazonaws.chimesdkmeetings#BadRequestException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ForbiddenException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#NotFoundException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnauthorizedException" + }, + { + "target": "com.amazonaws.chimesdkmeetings#UnprocessableEntityException" + } + ], + "traits": { + "smithy.api#documentation": "

Stops transcription for the specified meetingId.

", + "smithy.api#http": { + "method": "POST", + "uri": "/meetings/{MeetingId}/transcription?operation=stop", + "code": 200 + } + } + }, + "com.amazonaws.chimesdkmeetings#StopMeetingTranscriptionRequest": { + "type": "structure", + "members": { + "MeetingId": { + "target": "com.amazonaws.chimesdkmeetings#GuidString", + "traits": { + "smithy.api#documentation": "

The unique ID of the meeting for which you stop transcription.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.chimesdkmeetings#String": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 4096 + } + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeLanguageCode": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "en-US", + "name": "EN_US" + }, + { + "value": "en-GB", + "name": "EN_GB" + }, + { + "value": "es-US", + "name": "ES_US" + }, + { + "value": "fr-CA", + "name": "FR_CA" + }, + { + "value": "fr-FR", + "name": "FR_FR" + }, + { + "value": "en-AU", + "name": "EN_AU" + }, + { + "value": "it-IT", + "name": "IT_IT" + }, + { + "value": "de-DE", + "name": "DE_DE" + }, + { + "value": "pt-BR", + "name": "PT_BR" + }, + { + "value": "ja-JP", + "name": "JA_JP" + }, + { + "value": "ko-KR", + "name": "KO_KR" + }, + { + "value": "zh-CN", + "name": "ZH_CN" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeMedicalLanguageCode": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "en-US", + "name": "EN_US" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeMedicalRegion": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "us-east-1", + "name": "US_EAST_1" + }, + { + "value": "us-east-2", + "name": "US_EAST_2" + }, + { + "value": "us-west-2", + "name": "US_WEST_2" + }, + { + "value": "ap-southeast-2", + "name": "AP_SOUTHEAST_2" + }, + { + "value": "ca-central-1", + "name": "CA_CENTRAL_1" + }, + { + "value": "eu-west-1", + "name": "EU_WEST_1" + }, + { + "value": "auto", + "name": "AUTO" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeMedicalSpecialty": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "PRIMARYCARE", + "name": "PRIMARYCARE" + }, + { + "value": "CARDIOLOGY", + "name": "CARDIOLOGY" + }, + { + "value": "NEUROLOGY", + "name": "NEUROLOGY" + }, + { + "value": "ONCOLOGY", + "name": "ONCOLOGY" + }, + { + "value": "RADIOLOGY", + "name": "RADIOLOGY" + }, + { + "value": "UROLOGY", + "name": "UROLOGY" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeMedicalType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "CONVERSATION", + "name": "CONVERSATION" + }, + { + "value": "DICTATION", + "name": "DICTATION" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeRegion": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "us-east-2", + "name": "US_EAST_2" + }, + { + "value": "us-east-1", + "name": "US_EAST_1" + }, + { + "value": "us-west-2", + "name": "US_WEST_2" + }, + { + "value": "ap-northeast-2", + "name": "AP_NORTHEAST_2" + }, + { + "value": "ap-southeast-2", + "name": "AP_SOUTHEAST_2" + }, + { + "value": "ap-northeast-1", + "name": "AP_NORTHEAST_1" + }, + { + "value": "ca-central-1", + "name": "CA_CENTRAL_1" + }, + { + "value": "eu-central-1", + "name": "EU_CENTRAL_1" + }, + { + "value": "eu-west-1", + "name": "EU_WEST_1" + }, + { + "value": "eu-west-2", + "name": "EU_WEST_2" + }, + { + "value": "sa-east-1", + "name": "SA_EAST_1" + }, + { + "value": "auto", + "name": "AUTO" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscribeVocabularyFilterMethod": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "remove", + "name": "REMOVE" + }, + { + "value": "mask", + "name": "MASK" + }, + { + "value": "tag", + "name": "TAG" + } + ] + } + }, + "com.amazonaws.chimesdkmeetings#TranscriptionConfiguration": { + "type": "structure", + "members": { + "EngineTranscribeSettings": { + "target": "com.amazonaws.chimesdkmeetings#EngineTranscribeSettings", + "traits": { + "smithy.api#documentation": "

The transcription configuration settings passed to Amazon Transcribe.

" + } + }, + "EngineTranscribeMedicalSettings": { + "target": "com.amazonaws.chimesdkmeetings#EngineTranscribeMedicalSettings", + "traits": { + "smithy.api#documentation": "

The transcription configuration settings passed to Amazon Transcribe Medical.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The configuration for the current transcription operation. Must contain EngineTranscribeSettings or EngineTranscribeMedicalSettings.

" + } + }, + "com.amazonaws.chimesdkmeetings#UnauthorizedException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The user isn't authorized to request a resource.

", + "smithy.api#error": "client", + "smithy.api#httpError": 401 + } + }, + "com.amazonaws.chimesdkmeetings#UnprocessableEntityException": { + "type": "structure", + "members": { + "Code": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "Message": { + "target": "com.amazonaws.chimesdkmeetings#String" + }, + "RequestId": { + "target": "com.amazonaws.chimesdkmeetings#String", + "traits": { + "smithy.api#documentation": "

The request id associated with the call responsible for the exception.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The request was well-formed but was unable to be followed due to semantic errors.

", + "smithy.api#error": "client", + "smithy.api#httpError": 422 + } + } + } +} diff --git a/codegen/sdk-codegen/aws-models/connect.2017-08-08.json b/codegen/sdk-codegen/aws-models/connect.2017-08-08.json index f19ca45cdbd..4876e873b66 100644 --- a/codegen/sdk-codegen/aws-models/connect.2017-08-08.json +++ b/codegen/sdk-codegen/aws-models/connect.2017-08-08.json @@ -32,6 +32,23 @@ "com.amazonaws.connect#ARN": { "type": "string" }, + "com.amazonaws.connect#AccessDeniedException": { + "type": "structure", + "members": { + "Message": { + "target": "com.amazonaws.connect#Message" + } + }, + "traits": { + "aws.protocols#awsQueryError": { + "code": "AccessDeniedException", + "httpResponseCode": 403 + }, + "smithy.api#documentation": "

You do not have sufficient access to perform this action.

", + "smithy.api#error": "client", + "smithy.api#httpError": 403 + } + }, "com.amazonaws.connect#AfterContactWorkTimeLimit": { "type": "integer", "traits": { @@ -106,7 +123,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } }, @@ -261,7 +278,7 @@ "name": "connect" }, "aws.protocols#restJson1": {}, - "smithy.api#documentation": "

Amazon Connect is a cloud-based contact center solution that you use to set up and manage a customer\n contact center and provide reliable customer engagement at any scale.

\n

Amazon Connect provides metrics and real-time reporting that enable you to optimize contact routing.\n You can also resolve customer issues more efficiently by getting customers in touch with the\n appropriate agents.

\n

There are limits to the number of Amazon Connect resources that you can create. There are also limits\n to the number of requests that you can make per second. For more information, see Amazon Connect\n Service Quotas in the Amazon Connect Administrator Guide.

\n

You can\n connect\n programmatically to an AWS service by using an endpoint. For a list of Amazon Connect endpoints, see\n Amazon Connect\n Endpoints.

\n \n

Working with contact flows? Check out the Amazon Connect Flow language.

\n
", + "smithy.api#documentation": "

Amazon Connect is a cloud-based contact center solution that you use to set up and manage a customer\n contact center and provide reliable customer engagement at any scale.

\n

Amazon Connect provides metrics and real-time reporting that enable you to optimize contact routing.\n You can also resolve customer issues more efficiently by getting customers in touch with the\n appropriate agents.

\n

There are limits to the number of Amazon Connect resources that you can create. There are also limits\n to the number of requests that you can make per second. For more information, see Amazon Connect\n Service Quotas in the Amazon Connect Administrator Guide.

\n

You can\n connect\n programmatically to an Amazon Web Services service by using an endpoint. For a list of Amazon Connect endpoints, see\n Amazon Connect\n Endpoints.

\n \n

Working with contact flows? Check out the Amazon Connect Flow language.

\n
", "smithy.api#title": "Amazon Connect Service" }, "version": "2017-08-08", @@ -314,6 +331,9 @@ { "target": "com.amazonaws.connect#CreateRoutingProfile" }, + { + "target": "com.amazonaws.connect#CreateSecurityProfile" + }, { "target": "com.amazonaws.connect#CreateUseCase" }, @@ -335,6 +355,9 @@ { "target": "com.amazonaws.connect#DeleteQuickConnect" }, + { + "target": "com.amazonaws.connect#DeleteSecurityProfile" + }, { "target": "com.amazonaws.connect#DeleteUseCase" }, @@ -371,6 +394,9 @@ { "target": "com.amazonaws.connect#DescribeRoutingProfile" }, + { + "target": "com.amazonaws.connect#DescribeSecurityProfile" + }, { "target": "com.amazonaws.connect#DescribeUser" }, @@ -473,6 +499,9 @@ { "target": "com.amazonaws.connect#ListSecurityKeys" }, + { + "target": "com.amazonaws.connect#ListSecurityProfilePermissions" + }, { "target": "com.amazonaws.connect#ListSecurityProfiles" }, @@ -578,6 +607,9 @@ { "target": "com.amazonaws.connect#UpdateRoutingProfileQueues" }, + { + "target": "com.amazonaws.connect#UpdateSecurityProfile" + }, { "target": "com.amazonaws.connect#UpdateUserHierarchy" }, @@ -1644,7 +1676,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -1853,7 +1885,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -1996,7 +2028,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates an AWS resource association with an Amazon Connect instance.

", + "smithy.api#documentation": "

Creates an Amazon Web Services resource association with an Amazon Connect instance.

", "smithy.api#http": { "method": "PUT", "uri": "/instance/{InstanceId}/integration-associations", @@ -2050,7 +2082,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -2165,7 +2197,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -2261,7 +2293,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -2278,7 +2310,7 @@ "QuickConnectId": { "target": "com.amazonaws.connect#QuickConnectId", "traits": { - "smithy.api#documentation": "

The identifier for the quick connect.

" + "smithy.api#documentation": "

The identifier for the quick connect. \n

" } } } @@ -2393,6 +2425,101 @@ } } }, + "com.amazonaws.connect#CreateSecurityProfile": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#CreateSecurityProfileRequest" + }, + "output": { + "target": "com.amazonaws.connect#CreateSecurityProfileResponse" + }, + "errors": [ + { + "target": "com.amazonaws.connect#DuplicateResourceException" + }, + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#LimitExceededException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Creates a security profile.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/security-profiles/{InstanceId}", + "code": 200 + } + } + }, + "com.amazonaws.connect#CreateSecurityProfileRequest": { + "type": "structure", + "members": { + "SecurityProfileName": { + "target": "com.amazonaws.connect#SecurityProfileName", + "traits": { + "smithy.api#documentation": "

The name of the security profile.

", + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.connect#SecurityProfileDescription", + "traits": { + "smithy.api#documentation": "

The description of the security profile.

" + } + }, + "Permissions": { + "target": "com.amazonaws.connect#PermissionsList", + "traits": { + "smithy.api#documentation": "

Permissions assigned to the security profile.

" + } + }, + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "Tags": { + "target": "com.amazonaws.connect#TagMap", + "traits": { + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" + } + } + } + }, + "com.amazonaws.connect#CreateSecurityProfileResponse": { + "type": "structure", + "members": { + "SecurityProfileId": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profle.

" + } + }, + "SecurityProfileArn": { + "target": "com.amazonaws.connect#ARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for the security profile.

" + } + } + } + }, "com.amazonaws.connect#CreateUseCase": { "type": "operation", "input": { @@ -2456,7 +2583,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } } @@ -2979,7 +3106,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes an AWS resource association from an Amazon Connect instance. The association must not have\n any use cases associated with it.

", + "smithy.api#documentation": "

Deletes an Amazon Web Services resource association from an Amazon Connect instance. The association must not have\n any use cases associated with it.

", "smithy.api#http": { "method": "DELETE", "uri": "/instance/{InstanceId}/integration-associations/{IntegrationAssociationId}", @@ -3060,6 +3187,64 @@ } } }, + "com.amazonaws.connect#DeleteSecurityProfile": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#DeleteSecurityProfileRequest" + }, + "errors": [ + { + "target": "com.amazonaws.connect#AccessDeniedException" + }, + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#ResourceInUseException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Deletes a security profile.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/security-profiles/{InstanceId}/{SecurityProfileId}", + "code": 200 + } + } + }, + "com.amazonaws.connect#DeleteSecurityProfileRequest": { + "type": "structure", + "members": { + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "SecurityProfileId": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profle.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, "com.amazonaws.connect#DeleteUseCase": { "type": "operation", "input": { @@ -3815,6 +4000,72 @@ } } }, + "com.amazonaws.connect#DescribeSecurityProfile": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#DescribeSecurityProfileRequest" + }, + "output": { + "target": "com.amazonaws.connect#DescribeSecurityProfileResponse" + }, + "errors": [ + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Gets basic information about the security profle.

", + "smithy.api#http": { + "method": "GET", + "uri": "/security-profiles/{InstanceId}/{SecurityProfileId}", + "code": 200 + } + } + }, + "com.amazonaws.connect#DescribeSecurityProfileRequest": { + "type": "structure", + "members": { + "SecurityProfileId": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profle.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.connect#DescribeSecurityProfileResponse": { + "type": "structure", + "members": { + "SecurityProfile": { + "target": "com.amazonaws.connect#SecurityProfile", + "traits": { + "smithy.api#documentation": "

The security profile.

" + } + } + } + }, "com.amazonaws.connect#DescribeUser": { "type": "operation", "input": { @@ -4760,7 +5011,7 @@ "CurrentMetrics": { "target": "com.amazonaws.connect#CurrentMetrics", "traits": { - "smithy.api#documentation": "

The metrics to retrieve. Specify the name and unit for each metric. The following metrics\n are available. For a description of all the metrics, see Real-time Metrics\n Definitions in the Amazon Connect Administrator Guide.

\n
\n
AGENTS_AFTER_CONTACT_WORK
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: ACW\n

\n\n
\n
AGENTS_AVAILABLE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Available\n

\n
\n
AGENTS_ERROR
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Error\n

\n
\n
AGENTS_NON_PRODUCTIVE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: NPT (Non-Productive Time)\n

\n
\n
AGENTS_ON_CALL
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: On\n contact\n

\n
\n
AGENTS_ON_CONTACT
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: On\n contact\n

\n
\n
AGENTS_ONLINE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Online\n

\n
\n
AGENTS_STAFFED
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Staffed\n

\n
\n
CONTACTS_IN_QUEUE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: In\n queue\n

\n
\n
CONTACTS_SCHEDULED
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Scheduled\n

\n
\n
OLDEST_CONTACT_AGE
\n
\n

Unit: SECONDS

\n

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

\n

When you do not use groupings, Unit says SECONDS but the Value is returned in\n MILLISECONDS. For example, if you get a response like this:

\n

\n { \"Metric\": { \"Name\": \"OLDEST_CONTACT_AGE\", \"Unit\": \"SECONDS\" }, \"Value\": 24113.0\n }

\n

The actual OLDEST_CONTACT_AGE is 24 seconds.

\n\n

Name in real-time metrics report: Oldest\n

\n
\n
SLOTS_ACTIVE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Active\n

\n
\n
SLOTS_AVAILABLE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Availability\n

\n
\n
", + "smithy.api#documentation": "

The metrics to retrieve. Specify the name and unit for each metric. The following metrics\n are available. For a description of all the metrics, see Real-time Metrics\n Definitions in the Amazon Connect Administrator Guide.

\n
\n
AGENTS_AFTER_CONTACT_WORK
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: ACW\n

\n\n
\n
AGENTS_AVAILABLE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Available\n

\n
\n
AGENTS_ERROR
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Error\n

\n
\n
AGENTS_NON_PRODUCTIVE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: NPT (Non-Productive Time)\n

\n
\n
AGENTS_ON_CALL
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: On\n contact\n

\n
\n
AGENTS_ON_CONTACT
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: On\n contact\n

\n
\n
AGENTS_ONLINE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Online\n

\n
\n
AGENTS_STAFFED
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Staffed\n

\n
\n
CONTACTS_IN_QUEUE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: In\n queue\n

\n
\n
CONTACTS_SCHEDULED
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Scheduled\n

\n
\n
OLDEST_CONTACT_AGE
\n
\n

Unit: SECONDS

\n

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

\n

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For\n example, if you get a response like this:

\n

\n { \"Metric\": { \"Name\": \"OLDEST_CONTACT_AGE\", \"Unit\": \"SECONDS\" }, \"Value\": 24113.0\n }

\n

The actual OLDEST_CONTACT_AGE is 24 seconds.

\n\n

Name in real-time metrics report: Oldest\n

\n
\n
SLOTS_ACTIVE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Active\n

\n
\n
SLOTS_AVAILABLE
\n
\n

Unit: COUNT

\n

Name in real-time metrics report: Availability\n

\n
\n
", "smithy.api#required": {} } }, @@ -5502,7 +5753,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } }, @@ -6504,7 +6755,7 @@ } ], "traits": { - "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

For the specified version of Amazon Lex, returns a paginated list of all the Amazon Lex bots currently\n associated with the instance.

", + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

For the specified version of Amazon Lex, returns a paginated list of all the Amazon Lex bots currently associated with the\n instance.

", "smithy.api#http": { "method": "GET", "uri": "/instance/{InstanceId}/bots", @@ -7015,7 +7266,7 @@ } ], "traits": { - "smithy.api#documentation": "

Provides summary information about the AWS resource associations for the specified Amazon Connect\n instance.

", + "smithy.api#documentation": "

Provides summary information about the Amazon Web Services resource associations for the specified Amazon Connect\n instance.

", "smithy.api#http": { "method": "GET", "uri": "/instance/{InstanceId}/integration-associations", @@ -7043,7 +7294,7 @@ "IntegrationType": { "target": "com.amazonaws.connect#IntegrationType", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

The type of integration.

", "smithy.api#httpQuery": "integrationType" } }, @@ -7155,7 +7406,7 @@ "LambdaFunctions": { "target": "com.amazonaws.connect#FunctionArnsList", "traits": { - "smithy.api#documentation": "

The Lambdafunction ARNs associated with the specified instance.

" + "smithy.api#documentation": "

The Lambda function ARNs associated with the specified instance.

" } }, "NextToken": { @@ -7228,7 +7479,7 @@ "target": "com.amazonaws.connect#MaxResult25", "traits": { "smithy.api#box": {}, - "smithy.api#documentation": "

The maximum number of results to return per page. If no value is specified, the default is 10.\n

", + "smithy.api#documentation": "

The maximum number of results to return per page. If no value is specified, the default is 10.

", "smithy.api#httpQuery": "maxResults" } } @@ -7973,6 +8224,99 @@ } } }, + "com.amazonaws.connect#ListSecurityProfilePermissions": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#ListSecurityProfilePermissionsRequest" + }, + "output": { + "target": "com.amazonaws.connect#ListSecurityProfilePermissionsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Lists the permissions granted to a security profile.

", + "smithy.api#http": { + "method": "GET", + "uri": "/security-profiles-permissions/{InstanceId}/{SecurityProfileId}", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "items": "Permissions", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.connect#ListSecurityProfilePermissionsRequest": { + "type": "structure", + "members": { + "SecurityProfileId": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profle.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "NextToken": { + "target": "com.amazonaws.connect#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results. Use the value returned in the previous \nresponse in the next request to retrieve the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "MaxResults": { + "target": "com.amazonaws.connect#MaxResult1000", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

The maximum number of results to return per page.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.connect#ListSecurityProfilePermissionsResponse": { + "type": "structure", + "members": { + "Permissions": { + "target": "com.amazonaws.connect#PermissionsList", + "traits": { + "smithy.api#documentation": "

The permissions granted to the security profile.

" + } + }, + "NextToken": { + "target": "com.amazonaws.connect#NextToken", + "traits": { + "smithy.api#documentation": "

If there are additional results, this is the token for the next set of results.

" + } + } + } + }, "com.amazonaws.connect#ListSecurityProfiles": { "type": "operation", "input": { @@ -7999,7 +8343,7 @@ } ], "traits": { - "smithy.api#documentation": "

Provides summary information about the security profiles for the specified Amazon Connect\n instance.

\n

For more information about security profiles, see Security Profiles in the\n Amazon Connect Administrator Guide.

", + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Provides summary information about the security profiles for the specified Amazon Connect\n instance.

\n

For more information about security profiles, see Security Profiles in the\n Amazon Connect Administrator Guide.

", "smithy.api#http": { "method": "GET", "uri": "/security-profiles-summary/{InstanceId}", @@ -8609,6 +8953,18 @@ "smithy.api#pattern": "^/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d\\S]{8,64}$/$" } }, + "com.amazonaws.connect#PermissionsList": { + "type": "list", + "member": { + "target": "com.amazonaws.connect#SecurityProfilePermission" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 500 + } + } + }, "com.amazonaws.connect#PhoneNumber": { "type": "string" }, @@ -9841,7 +10197,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } }, @@ -10048,7 +10404,7 @@ "Tags": { "target": "com.amazonaws.connect#TagMap", "traits": { - "smithy.api#documentation": "

One or more tags.

" + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" } } }, @@ -10685,6 +11041,59 @@ "target": "com.amazonaws.connect#SecurityKey" } }, + "com.amazonaws.connect#SecurityProfile": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profile.

" + } + }, + "OrganizationResourceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The organization resource identifier for the security profile.

" + } + }, + "Arn": { + "target": "com.amazonaws.connect#ARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for the secruity profile.

" + } + }, + "SecurityProfileName": { + "target": "com.amazonaws.connect#SecurityProfileName", + "traits": { + "smithy.api#documentation": "

The name for the security profile.

" + } + }, + "Description": { + "target": "com.amazonaws.connect#SecurityProfileDescription", + "traits": { + "smithy.api#documentation": "

The description of the security profile.

" + } + }, + "Tags": { + "target": "com.amazonaws.connect#TagMap", + "traits": { + "smithy.api#documentation": "

The tags used to organize, track, or control access for this resource.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Contains information about a security profile.

" + } + }, + "com.amazonaws.connect#SecurityProfileDescription": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 250 + } + } + }, "com.amazonaws.connect#SecurityProfileId": { "type": "string" }, @@ -10703,6 +11112,15 @@ "com.amazonaws.connect#SecurityProfileName": { "type": "string" }, + "com.amazonaws.connect#SecurityProfilePermission": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + } + } + }, "com.amazonaws.connect#SecurityProfileSummary": { "type": "structure", "members": { @@ -10975,7 +11393,7 @@ } ], "traits": { - "smithy.api#documentation": "

Initiates real-time message streaming for a new chat contact.

\n

For more information about message streaming, see Enable real-time chat message\n streaming in the Amazon Connect Administrator Guide.

", + "smithy.api#documentation": "

Initiates real-time message streaming for a new chat contact.

\n

For more information about message streaming, see Enable real-time chat message\n streaming in the Amazon Connect Administrator Guide.

", "smithy.api#http": { "method": "POST", "uri": "/contact/start-streaming", @@ -11061,7 +11479,7 @@ } ], "traits": { - "smithy.api#documentation": "

Places an outbound call to a contact, and then initiates the contact flow. It performs the\n actions in the contact flow that's specified (in ContactFlowId).

\n\n

Agents do not initiate the outbound API, which means that they do not dial the contact. If\n the contact flow places an outbound call to a contact, and then puts the contact in queue, the\n call is then routed to the agent, like any other inbound case.

\n\n

There is a 60-second dialing timeout for this operation. If the call is not connected after\n 60 seconds, it fails.

\n \n

UK numbers with a 447 prefix are not allowed by default. Before you can dial these UK\n mobile numbers, you must submit a service quota increase request. For more information, see\n Amazon Connect Service Quotas in the Amazon Connect Administrator Guide.

\n
\n \n

Campaign calls are not allowed by default. Before you can make a call with\n TrafficType = CAMPAIGN, you must submit a service quota increase\n request. For more information, see Amazon Connect Service Quotas\n in the Amazon Connect Administrator Guide.

\n
", + "smithy.api#documentation": "

Places an outbound call to a contact, and then initiates the contact flow. It performs the\n actions in the contact flow that's specified (in ContactFlowId).

\n \n

Agents do not initiate the outbound API, which means that they do not dial the contact. If\n the contact flow places an outbound call to a contact, and then puts the contact in queue, the\n call is then routed to the agent, like any other inbound case.

\n\n

There is a 60-second dialing timeout for this operation. If the call is not connected after\n 60 seconds, it fails.

\n \n

UK numbers with a 447 prefix are not allowed by default. Before you can dial these UK\n mobile numbers, you must submit a service quota increase request. For more information, see\n Amazon Connect Service Quotas in the Amazon Connect Administrator Guide.

\n
\n \n

Campaign calls are not allowed by default. Before you can make a call with \n TrafficType = CAMPAIGN, you must submit a service quota increase request. For more information, see \n Amazon Connect Service Quotas in the Amazon Connect Administrator Guide.

\n
", "smithy.api#http": { "method": "PUT", "uri": "/contact/outbound-voice", @@ -11133,7 +11551,7 @@ "TrafficType": { "target": "com.amazonaws.connect#TrafficType", "traits": { - "smithy.api#documentation": "

Denotes the class of traffic. Calls with different traffic types are handled differently by\n Amazon Connect. The default value is GENERAL. Use CAMPAIGN if\n EnableAnswerMachineDetection is set to true. For all other cases, use\n GENERAL.

" + "smithy.api#documentation": "

Denotes the class of traffic. Calls with different traffic types are handled differently by\n Amazon Connect. The default value is GENERAL. Use CAMPAIGN if\n EnableAnswerMachineDetection is set to true. For all other cases, use\n GENERAL.

" } } } @@ -11602,7 +12020,7 @@ } ], "traits": { - "smithy.api#documentation": "

Adds the specified tags to the specified resource.

\n

The supported resource types are users, routing profiles, queues, quick connects, contact\n flows, agent status, and hours of operation.

\n

For sample policies that use tags, see Amazon Connect Identity-Based\n Policy Examples in the Amazon Connect Administrator Guide.

", + "smithy.api#documentation": "

Adds the specified tags to the specified resource.

\n

The supported resource types are users, routing profiles, queues, quick connects, \n contact flows, agent status, and hours of operation.

\n

For sample policies that use tags, see Amazon Connect Identity-Based\n Policy Examples in the Amazon Connect Administrator Guide.

", "smithy.api#http": { "method": "POST", "uri": "/tags/{resourceArn}", @@ -12205,7 +12623,7 @@ "AttributeType": { "target": "com.amazonaws.connect#InstanceAttributeType", "traits": { - "smithy.api#documentation": "

The type of attribute.

\n \n

Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this feature,\n contact AWS Support for allowlisting.

\n
", + "smithy.api#documentation": "

The type of attribute.

\n \n

Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this feature, contact Amazon Web Services Support for allowlisting.

\n
", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -12964,6 +13382,70 @@ } } }, + "com.amazonaws.connect#UpdateSecurityProfile": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#UpdateSecurityProfileRequest" + }, + "errors": [ + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

This API is in preview release for Amazon Connect and is subject to change.

\n

Updates a security profile.

", + "smithy.api#http": { + "method": "POST", + "uri": "/security-profiles/{InstanceId}/{SecurityProfileId}", + "code": 200 + } + } + }, + "com.amazonaws.connect#UpdateSecurityProfileRequest": { + "type": "structure", + "members": { + "Description": { + "target": "com.amazonaws.connect#SecurityProfileDescription", + "traits": { + "smithy.api#documentation": "

The description of the security profile.

" + } + }, + "Permissions": { + "target": "com.amazonaws.connect#PermissionsList", + "traits": { + "smithy.api#documentation": "

The permissions granted to a security profile.

" + } + }, + "SecurityProfileId": { + "target": "com.amazonaws.connect#SecurityProfileId", + "traits": { + "smithy.api#documentation": "

The identifier for the security profle.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, "com.amazonaws.connect#UpdateUserHierarchy": { "type": "operation", "input": { diff --git a/codegen/sdk-codegen/aws-models/dynamodb.2012-08-10.json b/codegen/sdk-codegen/aws-models/dynamodb.2012-08-10.json index 693f9de60ca..010f40951d5 100644 --- a/codegen/sdk-codegen/aws-models/dynamodb.2012-08-10.json +++ b/codegen/sdk-codegen/aws-models/dynamodb.2012-08-10.json @@ -38,19 +38,19 @@ "ArchivalDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

The date and time when table archival was initiated by DynamoDB,\n in UNIX epoch time format.

" + "smithy.api#documentation": "

The date and time when table archival was initiated by DynamoDB, in UNIX epoch time\n format.

" } }, "ArchivalReason": { "target": "com.amazonaws.dynamodb#ArchivalReason", "traits": { - "smithy.api#documentation": "

The reason DynamoDB archived the table. Currently, the only\n possible value is:

\n\n " + "smithy.api#documentation": "

The reason DynamoDB archived the table. Currently, the only possible value is:

\n\n " } }, "ArchivalBackupArn": { "target": "com.amazonaws.dynamodb#BackupArn", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the backup the table was archived\n to, when applicable in the archival reason. If you wish to restore this\n backup to the same table name, you will need to delete the original\n table.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the backup the table was archived to, when\n applicable in the archival reason. If you wish to restore this backup to the same table\n name, you will need to delete the original table.

" } } }, @@ -90,13 +90,13 @@ "AttributeType": { "target": "com.amazonaws.dynamodb#ScalarAttributeType", "traits": { - "smithy.api#documentation": "

The data type for the attribute, where:

\n ", + "smithy.api#documentation": "

The data type for the attribute, where:

\n ", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents an attribute for describing the key schema for the table and indexes.

" + "smithy.api#documentation": "

Represents an attribute for describing the key schema for the table and\n indexes.

" } }, "com.amazonaws.dynamodb#AttributeDefinitions": { @@ -149,66 +149,66 @@ "S": { "target": "com.amazonaws.dynamodb#StringAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type String. For example:

\n

\n \"S\": \"Hello\"\n

" + "smithy.api#documentation": "

An attribute of type String. For example:

\n

\n \"S\": \"Hello\"\n

" } }, "N": { "target": "com.amazonaws.dynamodb#NumberAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Number. For example:

\n

\n \"N\": \"123.45\"\n

\n

Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations.

" + "smithy.api#documentation": "

An attribute of type Number. For example:

\n

\n \"N\": \"123.45\"\n

\n

Numbers are sent across the network to DynamoDB as strings, to maximize compatibility\n across languages and libraries. However, DynamoDB treats them as number type attributes\n for mathematical operations.

" } }, "B": { "target": "com.amazonaws.dynamodb#BinaryAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Binary. For example:

\n

\n \"B\": \"dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk\"\n

" + "smithy.api#documentation": "

An attribute of type Binary. For example:

\n

\n \"B\": \"dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk\"\n

" } }, "SS": { "target": "com.amazonaws.dynamodb#StringSetAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type String Set. For example:

\n

\n \"SS\": [\"Giraffe\", \"Hippo\" ,\"Zebra\"]\n

" + "smithy.api#documentation": "

An attribute of type String Set. For example:

\n

\n \"SS\": [\"Giraffe\", \"Hippo\" ,\"Zebra\"]\n

" } }, "NS": { "target": "com.amazonaws.dynamodb#NumberSetAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Number Set. For example:

\n

\n \"NS\": [\"42.2\", \"-19\", \"7.5\", \"3.14\"]\n

\n

Numbers are sent across the network to DynamoDB as strings, to maximize compatibility across languages and libraries. However, DynamoDB treats them as number type attributes for mathematical operations.

" + "smithy.api#documentation": "

An attribute of type Number Set. For example:

\n

\n \"NS\": [\"42.2\", \"-19\", \"7.5\", \"3.14\"]\n

\n

Numbers are sent across the network to DynamoDB as strings, to maximize compatibility\n across languages and libraries. However, DynamoDB treats them as number type attributes\n for mathematical operations.

" } }, "BS": { "target": "com.amazonaws.dynamodb#BinarySetAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Binary Set. For example:

\n

\n \"BS\": [\"U3Vubnk=\", \"UmFpbnk=\", \"U25vd3k=\"]\n

" + "smithy.api#documentation": "

An attribute of type Binary Set. For example:

\n

\n \"BS\": [\"U3Vubnk=\", \"UmFpbnk=\", \"U25vd3k=\"]\n

" } }, "M": { "target": "com.amazonaws.dynamodb#MapAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Map. For example:

\n

\n \"M\": {\"Name\": {\"S\": \"Joe\"}, \"Age\": {\"N\": \"35\"}}\n

" + "smithy.api#documentation": "

An attribute of type Map. For example:

\n

\n \"M\": {\"Name\": {\"S\": \"Joe\"}, \"Age\": {\"N\": \"35\"}}\n

" } }, "L": { "target": "com.amazonaws.dynamodb#ListAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type List. For example:

\n

\n \"L\": [ {\"S\": \"Cookies\"} , {\"S\": \"Coffee\"}, {\"N\", \"3.14159\"}]\n

" + "smithy.api#documentation": "

An attribute of type List. For example:

\n

\n \"L\": [ {\"S\": \"Cookies\"} , {\"S\": \"Coffee\"}, {\"N\", \"3.14159\"}]\n

" } }, "NULL": { "target": "com.amazonaws.dynamodb#NullAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Null. For example:

\n

\n \"NULL\": true\n

" + "smithy.api#documentation": "

An attribute of type Null. For example:

\n

\n \"NULL\": true\n

" } }, "BOOL": { "target": "com.amazonaws.dynamodb#BooleanAttributeValue", "traits": { - "smithy.api#documentation": "

An attribute of type Boolean. For example:

\n

\n \"BOOL\": true\n

" + "smithy.api#documentation": "

An attribute of type Boolean. For example:

\n

\n \"BOOL\": true\n

" } } }, "traits": { - "smithy.api#documentation": "

Represents the data for an attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and the value is the data itself.

\n

For more information, see Data Types in the\n Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the data for an attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and\n the value is the data itself.

\n

For more information, see Data Types in the Amazon DynamoDB Developer\n Guide.

" } }, "com.amazonaws.dynamodb#AttributeValueList": { @@ -223,18 +223,18 @@ "Value": { "target": "com.amazonaws.dynamodb#AttributeValue", "traits": { - "smithy.api#documentation": "

Represents the data for an attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and the value is the data itself.

\n

For more information, see Data Types in the Amazon DynamoDB Developer Guide.\n

" + "smithy.api#documentation": "

Represents the data for an attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and\n the value is the data itself.

\n

For more information, see Data Types in the Amazon DynamoDB Developer Guide.\n

" } }, "Action": { "target": "com.amazonaws.dynamodb#AttributeAction", "traits": { - "smithy.api#documentation": "

Specifies how to perform the update. Valid values are PUT (default), DELETE,\n and ADD. The behavior depends on whether the specified primary key already exists\n in the table.

\n\n

\n If an item with the specified Key is found in the table:\n

\n\n \n\n

\n If no item with the specified Key is found:\n

\n\n " + "smithy.api#documentation": "

Specifies how to perform the update. Valid values are PUT (default),\n DELETE, and ADD. The behavior depends on whether the\n specified primary key already exists in the table.

\n\n

\n If an item with the specified Key is found in\n the table:\n

\n\n \n\n

\n If no item with the specified Key is\n found:\n

\n\n " } } }, "traits": { - "smithy.api#documentation": "

For the UpdateItem operation, represents the attributes to be modified, the action to\n perform on each, and the new value for each.

\n \n

You cannot use UpdateItem to update any primary key attributes. Instead, you will\n need to delete the item, and then use PutItem to create a new item with new\n attributes.

\n
\n

Attribute values cannot be null; string and binary type attributes must have lengths greater\n than zero; and set type attributes must not be empty. Requests with empty values will be\n rejected with a ValidationException exception.

" + "smithy.api#documentation": "

For the UpdateItem operation, represents the attributes to be modified,\n the action to perform on each, and the new value for each.

\n \n

You cannot use UpdateItem to update any primary key attributes.\n Instead, you will need to delete the item, and then use PutItem to\n create a new item with new attributes.

\n
\n

Attribute values cannot be null; string and binary type attributes must have lengths\n greater than zero; and set type attributes must not be empty. Requests with empty values\n will be rejected with a ValidationException exception.

" } }, "com.amazonaws.dynamodb#AutoScalingPolicyDescription": { @@ -310,13 +310,13 @@ "MinimumUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The minimum capacity units that a global table or global secondary index should be scaled down to.

" + "smithy.api#documentation": "

The minimum capacity units that a global table or global secondary index should be\n scaled down to.

" } }, "MaximumUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum capacity units that a global table or global secondary index should be scaled up to.

" + "smithy.api#documentation": "

The maximum capacity units that a global table or global secondary index should be\n scaled up to.

" } }, "AutoScalingDisabled": { @@ -339,7 +339,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings for a global table or global secondary\n index.

" + "smithy.api#documentation": "

Represents the auto scaling settings for a global table or global secondary\n index.

" } }, "com.amazonaws.dynamodb#AutoScalingSettingsUpdate": { @@ -348,13 +348,13 @@ "MinimumUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The minimum capacity units that a global table or global secondary index should be scaled down to.

" + "smithy.api#documentation": "

The minimum capacity units that a global table or global secondary index should be\n scaled down to.

" } }, "MaximumUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum capacity units that a global table or global secondary index should be scaled up to.

" + "smithy.api#documentation": "

The maximum capacity units that a global table or global secondary index should be\n scaled up to.

" } }, "AutoScalingDisabled": { @@ -372,12 +372,12 @@ "ScalingPolicyUpdate": { "target": "com.amazonaws.dynamodb#AutoScalingPolicyUpdate", "traits": { - "smithy.api#documentation": "

The scaling policy to apply for scaling target global table or global secondary index capacity units.

" + "smithy.api#documentation": "

The scaling policy to apply for scaling target global table or global secondary index\n capacity units.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings to be modified for a global table or global\n secondary index.

" + "smithy.api#documentation": "

Represents the auto scaling settings to be modified for a global table or global\n secondary index.

" } }, "com.amazonaws.dynamodb#AutoScalingTargetTrackingScalingPolicyConfigurationDescription": { @@ -386,25 +386,25 @@ "DisableScaleIn": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Indicates whether scale in by the target tracking policy is disabled. If the value is true,\n scale in is disabled and the target tracking policy won't remove capacity from the scalable resource.\n Otherwise, scale in is enabled and the target tracking policy can remove capacity from the scalable resource.\n The default value is false.

" + "smithy.api#documentation": "

Indicates whether scale in by the target tracking policy is disabled. If the value is\n true, scale in is disabled and the target tracking policy won't remove capacity from the\n scalable resource. Otherwise, scale in is enabled and the target tracking policy can\n remove capacity from the scalable resource. The default value is false.

" } }, "ScaleInCooldown": { "target": "com.amazonaws.dynamodb#IntegerObject", "traits": { - "smithy.api#documentation": "

The amount of time, in seconds, after a scale in activity completes before another scale\n in activity can start. The cooldown period is used to block subsequent scale in requests\n until it has expired. You should scale in conservatively to protect your application's\n availability. However, if another alarm triggers a scale out policy during the cooldown\n period after a scale-in, application auto scaling scales out your scalable target\n immediately.

" + "smithy.api#documentation": "

The amount of time, in seconds, after a scale in activity completes before another\n scale in activity can start. The cooldown period is used to block subsequent scale in\n requests until it has expired. You should scale in conservatively to protect your\n application's availability. However, if another alarm triggers a scale out policy during\n the cooldown period after a scale-in, application auto scaling scales out your scalable\n target immediately.

" } }, "ScaleOutCooldown": { "target": "com.amazonaws.dynamodb#IntegerObject", "traits": { - "smithy.api#documentation": "

The amount of time, in seconds, after a scale out activity completes before another scale out\n activity can start. While the cooldown period is in effect, the capacity that has been added\n by the previous scale out event that initiated the cooldown is calculated as part of the\n desired capacity for the next scale out. You should continuously (but not excessively)\n scale out.

" + "smithy.api#documentation": "

The amount of time, in seconds, after a scale out activity completes before another\n scale out activity can start. While the cooldown period is in effect, the capacity that\n has been added by the previous scale out event that initiated the cooldown is calculated\n as part of the desired capacity for the next scale out. You should continuously (but not\n excessively) scale out.

" } }, "TargetValue": { "target": "com.amazonaws.dynamodb#Double", "traits": { - "smithy.api#documentation": "

The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2).

", + "smithy.api#documentation": "

The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 (Base 10)\n or 2e-360 to 2e360 (Base 2).

", "smithy.api#required": {} } } @@ -419,31 +419,31 @@ "DisableScaleIn": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Indicates whether scale in by the target tracking policy is disabled. If the value is true,\n scale in is disabled and the target tracking policy won't remove capacity from the scalable resource.\n Otherwise, scale in is enabled and the target tracking policy can remove capacity from the scalable resource.\n The default value is false.

" + "smithy.api#documentation": "

Indicates whether scale in by the target tracking policy is disabled. If the value is\n true, scale in is disabled and the target tracking policy won't remove capacity from the\n scalable resource. Otherwise, scale in is enabled and the target tracking policy can\n remove capacity from the scalable resource. The default value is false.

" } }, "ScaleInCooldown": { "target": "com.amazonaws.dynamodb#IntegerObject", "traits": { - "smithy.api#documentation": "

The amount of time, in seconds, after a scale in activity completes before another scale\n in activity can start. The cooldown period is used to block subsequent scale in requests\n until it has expired. You should scale in conservatively to protect your application's\n availability. However, if another alarm triggers a scale out policy during the cooldown\n period after a scale-in, application auto scaling scales out your scalable target\n immediately.

" + "smithy.api#documentation": "

The amount of time, in seconds, after a scale in activity completes before another\n scale in activity can start. The cooldown period is used to block subsequent scale in\n requests until it has expired. You should scale in conservatively to protect your\n application's availability. However, if another alarm triggers a scale out policy during\n the cooldown period after a scale-in, application auto scaling scales out your scalable\n target immediately.

" } }, "ScaleOutCooldown": { "target": "com.amazonaws.dynamodb#IntegerObject", "traits": { - "smithy.api#documentation": "

The amount of time, in seconds, after a scale out activity completes before another scale out\n activity can start. While the cooldown period is in effect, the capacity that has been added\n by the previous scale out event that initiated the cooldown is calculated as part of the\n desired capacity for the next scale out. You should continuously (but not excessively)\n scale out.

" + "smithy.api#documentation": "

The amount of time, in seconds, after a scale out activity completes before another\n scale out activity can start. While the cooldown period is in effect, the capacity that\n has been added by the previous scale out event that initiated the cooldown is calculated\n as part of the desired capacity for the next scale out. You should continuously (but not\n excessively) scale out.

" } }, "TargetValue": { "target": "com.amazonaws.dynamodb#Double", "traits": { - "smithy.api#documentation": "

The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2).

", + "smithy.api#documentation": "

The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 (Base 10)\n or 2e-360 to 2e360 (Base 2).

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents the settings of a target tracking scaling policy that will be modified.

" + "smithy.api#documentation": "

Represents the settings of a target tracking scaling policy that will be\n modified.

" } }, "com.amazonaws.dynamodb#Backfilling": { @@ -482,7 +482,7 @@ "SourceTableFeatureDetails": { "target": "com.amazonaws.dynamodb#SourceTableFeatureDetails", "traits": { - "smithy.api#documentation": "

Contains the details of the features enabled on the table when the backup was created. For example, LSIs, GSIs, streams, TTL.

" + "smithy.api#documentation": "

Contains the details of the features enabled on the table when the backup was created.\n For example, LSIs, GSIs, streams, TTL.

" } } }, @@ -523,7 +523,7 @@ "BackupType": { "target": "com.amazonaws.dynamodb#BackupType", "traits": { - "smithy.api#documentation": "

BackupType:

\n ", + "smithy.api#documentation": "

BackupType:

\n ", "smithy.api#required": {} } }, @@ -537,7 +537,7 @@ "BackupExpiryDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

Time at which the automatic on-demand backup created by DynamoDB will expire. This SYSTEM\n on-demand backup expires automatically 35 days after its creation.

" + "smithy.api#documentation": "

Time at which the automatic on-demand backup created by DynamoDB will\n expire. This SYSTEM on-demand backup expires automatically 35 days after\n its creation.

" } } }, @@ -553,7 +553,7 @@ } }, "traits": { - "smithy.api#documentation": "

There is another ongoing conflicting backup control plane operation on the table. The backup is either being created, deleted or restored to a table.

", + "smithy.api#documentation": "

There is another ongoing conflicting backup control plane operation on the table.\n The backup is either being created, deleted or restored to a table.

", "smithy.api#error": "client" } }, @@ -655,7 +655,7 @@ "BackupExpiryDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

Time at which the automatic on-demand backup created by DynamoDB will expire. This\n SYSTEM on-demand backup expires automatically 35 days after its\n creation.

" + "smithy.api#documentation": "

Time at which the automatic on-demand backup created by DynamoDB will\n expire. This SYSTEM on-demand backup expires automatically 35 days after\n its creation.

" } }, "BackupStatus": { @@ -667,7 +667,7 @@ "BackupType": { "target": "com.amazonaws.dynamodb#BackupType", "traits": { - "smithy.api#documentation": "

BackupType:

\n " + "smithy.api#documentation": "

BackupType:

\n " } }, "BackupSizeBytes": { @@ -750,7 +750,7 @@ } ], "traits": { - "smithy.api#documentation": "

\nThis operation allows you to perform batch reads and writes on data stored in DynamoDB, using PartiQL.\n

" + "smithy.api#documentation": "

This operation allows you to perform batch reads or writes on data stored in DynamoDB,\n using PartiQL.

\n \n

The entire batch must consist of either read statements or write statements, you\n cannot mix both in one batch.

\n
" } }, "com.amazonaws.dynamodb#BatchExecuteStatementInput": { @@ -759,7 +759,7 @@ "Statements": { "target": "com.amazonaws.dynamodb#PartiQLBatchRequest", "traits": { - "smithy.api#documentation": "

\nThe list of PartiQL statements representing the batch to run.\n

", + "smithy.api#documentation": "

The list of PartiQL statements representing the batch to run.

", "smithy.api#required": {} } } @@ -771,7 +771,7 @@ "Responses": { "target": "com.amazonaws.dynamodb#PartiQLBatchResponse", "traits": { - "smithy.api#documentation": "

\nThe response to each PartiQL statement in the batch.\n

" + "smithy.api#documentation": "

The response to each PartiQL statement in the batch.

" } } } @@ -805,7 +805,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The BatchGetItem operation returns the attributes of one or more items from one or\n more tables. You identify requested items by primary key.

\n

A single operation can retrieve up to 16 MB of data, which can contain as many as 100\n items. BatchGetItem returns a partial result if the response size limit is\n exceeded, the table's provisioned throughput is exceeded, or an internal processing\n failure occurs. If a partial result is returned, the operation returns a value for\n UnprocessedKeys. You can use this value to retry the operation starting\n with the next item to get.

\n \n

If you request more than 100 items, BatchGetItem returns a\n ValidationException with the message \"Too many items requested for\n the BatchGetItem call.\"

\n
\n

For example, if you ask to retrieve 100 items, but each individual item is 300 KB in\n size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns\n an appropriate UnprocessedKeys value so you can get the next page of\n results. If desired, your application can include its own logic to assemble the pages of\n results into one dataset.

\n

If none of the items can be processed due to insufficient\n provisioned throughput on all of the tables in the request, then\n BatchGetItem returns a\n ProvisionedThroughputExceededException. If at least\n one of the items is successfully processed, then\n BatchGetItem completes successfully, while returning the keys of the\n unread items in UnprocessedKeys.

\n \n

If DynamoDB returns any unprocessed items, you should retry the batch operation on those\n items. However, we strongly recommend that you use an exponential backoff algorithm.\n If you retry the batch operation immediately, the underlying read or write requests can\n still fail due to throttling on the individual tables. If you delay the batch operation\n using exponential backoff, the individual requests in the batch are much more likely to\n succeed.

\n

For more information, see Batch\n Operations and Error Handling in the Amazon DynamoDB Developer Guide.

\n
\n

By default, BatchGetItem performs eventually consistent reads on every table in the\n request. If you want strongly consistent reads instead, you can set ConsistentRead to\n true for any or all tables.

\n

In order to minimize response latency, BatchGetItem retrieves items in parallel.

\n

When designing your application, keep in mind that DynamoDB does not return items in any\n particular order. To help parse the response by item, include the primary key values for the\n items in your request in the ProjectionExpression parameter.

\n

If a requested item does not exist, it is not returned in the result. Requests for\n nonexistent items consume the minimum read capacity units according to the type of read.\n For more information, see Working with Tables in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

The BatchGetItem operation returns the attributes of one or more items\n from one or more tables. You identify requested items by primary key.

\n

A single operation can retrieve up to 16 MB of data, which can contain as many as 100\n items. BatchGetItem returns a partial result if the response size limit is\n exceeded, the table's provisioned throughput is exceeded, or an internal processing\n failure occurs. If a partial result is returned, the operation returns a value for\n UnprocessedKeys. You can use this value to retry the operation starting\n with the next item to get.

\n \n

If you request more than 100 items, BatchGetItem returns a\n ValidationException with the message \"Too many items requested for\n the BatchGetItem call.\"

\n
\n

For example, if you ask to retrieve 100 items, but each individual item is 300 KB in\n size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns\n an appropriate UnprocessedKeys value so you can get the next page of\n results. If desired, your application can include its own logic to assemble the pages of\n results into one dataset.

\n

If none of the items can be processed due to insufficient\n provisioned throughput on all of the tables in the request, then\n BatchGetItem returns a\n ProvisionedThroughputExceededException. If at least\n one of the items is successfully processed, then\n BatchGetItem completes successfully, while returning the keys of the\n unread items in UnprocessedKeys.

\n \n

If DynamoDB returns any unprocessed items, you should retry the batch operation on\n those items. However, we strongly recommend that you use an exponential\n backoff algorithm. If you retry the batch operation immediately, the\n underlying read or write requests can still fail due to throttling on the individual\n tables. If you delay the batch operation using exponential backoff, the individual\n requests in the batch are much more likely to succeed.

\n

For more information, see Batch Operations and Error Handling in the Amazon DynamoDB\n Developer Guide.

\n
\n

By default, BatchGetItem performs eventually consistent reads on every\n table in the request. If you want strongly consistent reads instead, you can set\n ConsistentRead to true for any or all tables.

\n

In order to minimize response latency, BatchGetItem retrieves items in\n parallel.

\n

When designing your application, keep in mind that DynamoDB does not return items in\n any particular order. To help parse the response by item, include the primary key values\n for the items in your request in the ProjectionExpression parameter.

\n

If a requested item does not exist, it is not returned in the result. Requests for\n nonexistent items consume the minimum read capacity units according to the type of read.\n For more information, see Working with Tables in the Amazon DynamoDB Developer\n Guide.

" } }, "com.amazonaws.dynamodb#BatchGetItemInput": { @@ -814,7 +814,7 @@ "RequestItems": { "target": "com.amazonaws.dynamodb#BatchGetRequestMap", "traits": { - "smithy.api#documentation": "

A map of one or more table names and, for each table, a map that describes one or more items to retrieve from that table. Each table name can be used only once per BatchGetItem request.

\n

Each element in the map of items to retrieve consists of the following:

\n ", + "smithy.api#documentation": "

A map of one or more table names and, for each table, a map that describes one or more\n items to retrieve from that table. Each table name can be used only once per\n BatchGetItem request.

\n

Each element in the map of items to retrieve consists of the following:

\n ", "smithy.api#required": {} } }, @@ -832,19 +832,19 @@ "Responses": { "target": "com.amazonaws.dynamodb#BatchGetResponseMap", "traits": { - "smithy.api#documentation": "

A map of table name to a list of items. Each object in Responses consists of a table\n name, along with a map of attribute data consisting of the data type and attribute value.

" + "smithy.api#documentation": "

A map of table name to a list of items. Each object in Responses consists\n of a table name, along with a map of attribute data consisting of the data type and\n attribute value.

" } }, "UnprocessedKeys": { "target": "com.amazonaws.dynamodb#BatchGetRequestMap", "traits": { - "smithy.api#documentation": "

A map of tables and their respective keys that were not processed with the current response.\n The UnprocessedKeys value is in the same form as RequestItems, so the value can\n be provided directly to a subsequent BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each element consists of:

\n \n

If there are no unprocessed keys remaining, the response contains an empty\n UnprocessedKeys map.

" + "smithy.api#documentation": "

A map of tables and their respective keys that were not processed with the current\n response. The UnprocessedKeys value is in the same form as\n RequestItems, so the value can be provided directly to a subsequent\n BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each element consists of:

\n \n

If there are no unprocessed keys remaining, the response contains an empty\n UnprocessedKeys map.

" } }, "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacityMultiple", "traits": { - "smithy.api#documentation": "

The read capacity units consumed by the entire BatchGetItem operation.

\n

Each element consists of:

\n " + "smithy.api#documentation": "

The read capacity units consumed by the entire BatchGetItem\n operation.

\n

Each element consists of:

\n " } } }, @@ -882,18 +882,18 @@ "Code": { "target": "com.amazonaws.dynamodb#BatchStatementErrorCodeEnum", "traits": { - "smithy.api#documentation": "

\nThe error code associated with the failed PartiQL batch statement.\n

" + "smithy.api#documentation": "

The error code associated with the failed PartiQL batch statement.

" } }, "Message": { "target": "com.amazonaws.dynamodb#String", "traits": { - "smithy.api#documentation": "

\nThe error message associated with the PartiQL batch resposne.\n

" + "smithy.api#documentation": "

The error message associated with the PartiQL batch resposne.

" } } }, "traits": { - "smithy.api#documentation": "

\nAn error associated with a statement in a PartiQL batch that was run.\n

" + "smithy.api#documentation": "

An error associated with a statement in a PartiQL batch that was run.

" } }, "com.amazonaws.dynamodb#BatchStatementErrorCodeEnum": { @@ -953,25 +953,25 @@ "Statement": { "target": "com.amazonaws.dynamodb#PartiQLStatement", "traits": { - "smithy.api#documentation": "

\nA valid PartiQL statement.\n

", + "smithy.api#documentation": "

A valid PartiQL statement.

", "smithy.api#required": {} } }, "Parameters": { "target": "com.amazonaws.dynamodb#PreparedStatementParameters", "traits": { - "smithy.api#documentation": "

\nThe parameters associated with a PartiQL statement in the batch request.\n

" + "smithy.api#documentation": "

The parameters associated with a PartiQL statement in the batch request.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

\nThe read consistency of the PartiQL batch request. \n

" + "smithy.api#documentation": "

The read consistency of the PartiQL batch request.

" } } }, "traits": { - "smithy.api#documentation": "

\nA PartiQL batch statement request. \n

" + "smithy.api#documentation": "

A PartiQL batch statement request.

" } }, "com.amazonaws.dynamodb#BatchStatementResponse": { @@ -980,24 +980,24 @@ "Error": { "target": "com.amazonaws.dynamodb#BatchStatementError", "traits": { - "smithy.api#documentation": "

\nThe error associated with a failed PartiQL batch statement.\n

" + "smithy.api#documentation": "

The error associated with a failed PartiQL batch statement.

" } }, "TableName": { "target": "com.amazonaws.dynamodb#TableName", "traits": { - "smithy.api#documentation": "

\nThe table name associated with a failed PartiQL batch statement.\n

" + "smithy.api#documentation": "

The table name associated with a failed PartiQL batch statement.

" } }, "Item": { "target": "com.amazonaws.dynamodb#AttributeMap", "traits": { - "smithy.api#documentation": "

\nA DynamoDB item associated with a BatchStatementResponse\n

" + "smithy.api#documentation": "

A DynamoDB item associated with a BatchStatementResponse

" } } }, "traits": { - "smithy.api#documentation": "

\nA PartiQL batch statement response..\n

" + "smithy.api#documentation": "

A PartiQL batch statement response..

" } }, "com.amazonaws.dynamodb#BatchWriteItem": { @@ -1032,7 +1032,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The BatchWriteItem operation puts or deletes multiple items in one or more\n tables. A single call to BatchWriteItem can write up to 16 MB of data,\n which can comprise as many as 25 put or delete requests. Individual items to be written\n can be as large as 400 KB.

\n \n

\n BatchWriteItem cannot update items. To update items, use the UpdateItem\n action.

\n
\n

The individual PutItem and DeleteItem operations specified in\n BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any\n requested operations fail because the table's provisioned throughput is exceeded or an\n internal processing failure occurs, the failed operations are returned in the\n UnprocessedItems response parameter. You can investigate and optionally resend the\n requests. Typically, you would call BatchWriteItem in a loop. Each iteration would\n check for unprocessed items and submit a new BatchWriteItem request with those\n unprocessed items until all items have been processed.

\n

If none of the items can be processed due to insufficient\n provisioned throughput on all of the tables in the request, then\n BatchWriteItem returns a\n ProvisionedThroughputExceededException.

\n \n

If DynamoDB returns any unprocessed items, you should retry the batch operation on those\n items. However, we strongly recommend that you use an exponential backoff algorithm.\n If you retry the batch operation immediately, the underlying read or write requests can\n still fail due to throttling on the individual tables. If you delay the batch operation\n using exponential backoff, the individual requests in the batch are much more likely to\n succeed.

\n

For more information, see Batch Operations and Error Handling in the Amazon DynamoDB\n Developer Guide.

\n
\n\n

With BatchWriteItem, you can efficiently write or delete large amounts of\n data, such as from Amazon EMR, or copy data from another database into DynamoDB. In\n order to improve performance with these large-scale operations,\n BatchWriteItem does not behave in the same way as individual\n PutItem and DeleteItem calls would. For example, you\n cannot specify conditions on individual put and delete requests, and\n BatchWriteItem does not return deleted items in the response.

\n

If you use a programming language that supports concurrency, you can use\n threads to write items in parallel. Your application must include the necessary logic to\n manage the threads. With languages that don't support threading, you must update\n or delete the specified items one at a time. In both situations, BatchWriteItem\n performs the specified put and delete operations in\n parallel, giving you the power of the thread pool approach without having to introduce\n complexity into your application.

\n

Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.

\n

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

\n " + "smithy.api#documentation": "

The BatchWriteItem operation puts or deletes multiple items in one or\n more tables. A single call to BatchWriteItem can write up to 16 MB of data,\n which can comprise as many as 25 put or delete requests. Individual items to be written\n can be as large as 400 KB.

\n \n

\n BatchWriteItem cannot update items. To update items, use the\n UpdateItem action.

\n
\n

The individual PutItem and DeleteItem operations specified\n in BatchWriteItem are atomic; however BatchWriteItem as a\n whole is not. If any requested operations fail because the table's provisioned\n throughput is exceeded or an internal processing failure occurs, the failed operations\n are returned in the UnprocessedItems response parameter. You can\n investigate and optionally resend the requests. Typically, you would call\n BatchWriteItem in a loop. Each iteration would check for unprocessed\n items and submit a new BatchWriteItem request with those unprocessed items\n until all items have been processed.

\n

If none of the items can be processed due to insufficient\n provisioned throughput on all of the tables in the request, then\n BatchWriteItem returns a\n ProvisionedThroughputExceededException.

\n \n

If DynamoDB returns any unprocessed items, you should retry the batch operation on\n those items. However, we strongly recommend that you use an exponential\n backoff algorithm. If you retry the batch operation immediately, the\n underlying read or write requests can still fail due to throttling on the individual\n tables. If you delay the batch operation using exponential backoff, the individual\n requests in the batch are much more likely to succeed.

\n

For more information, see Batch Operations and Error Handling in the Amazon DynamoDB\n Developer Guide.

\n
\n\n

With BatchWriteItem, you can efficiently write or delete large amounts of\n data, such as from Amazon EMR, or copy data from another database into DynamoDB. In\n order to improve performance with these large-scale operations,\n BatchWriteItem does not behave in the same way as individual\n PutItem and DeleteItem calls would. For example, you\n cannot specify conditions on individual put and delete requests, and\n BatchWriteItem does not return deleted items in the response.

\n

If you use a programming language that supports concurrency, you can use threads to\n write items in parallel. Your application must include the necessary logic to manage the\n threads. With languages that don't support threading, you must update or delete the\n specified items one at a time. In both situations, BatchWriteItem performs\n the specified put and delete operations in parallel, giving you the power of the thread\n pool approach without having to introduce complexity into your application.

\n

Parallel processing reduces latency, but each specified put and delete request\n consumes the same number of write capacity units whether it is processed in parallel or\n not. Delete operations on nonexistent items consume one write capacity unit.

\n

If one or more of the following is true, DynamoDB rejects the entire batch write\n operation:

\n " } }, "com.amazonaws.dynamodb#BatchWriteItemInput": { @@ -1041,7 +1041,7 @@ "RequestItems": { "target": "com.amazonaws.dynamodb#BatchWriteItemRequestMap", "traits": { - "smithy.api#documentation": "

A map of one or more table names and, for each table, a list of operations to be performed\n (DeleteRequest or PutRequest). Each element in the map consists of the\n following:

\n ", + "smithy.api#documentation": "

A map of one or more table names and, for each table, a list of operations to be\n performed (DeleteRequest or PutRequest). Each element in the\n map consists of the following:

\n ", "smithy.api#required": {} } }, @@ -1051,7 +1051,7 @@ "ReturnItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ReturnItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE,\n the response includes statistics about item collections, if any, that were modified\n during the operation are returned in the response. If set to NONE (the\n default), no statistics are returned.

" } } }, @@ -1065,19 +1065,19 @@ "UnprocessedItems": { "target": "com.amazonaws.dynamodb#BatchWriteItemRequestMap", "traits": { - "smithy.api#documentation": "

A map of tables and requests against those tables that were not processed. The\n UnprocessedItems value is in the same form as RequestItems, so you can provide\n this value directly to a subsequent BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each UnprocessedItems entry consists of a table name and, for that table, a list of\n operations to perform (DeleteRequest or PutRequest).

\n \n

If there are no unprocessed items remaining, the response contains an empty\n UnprocessedItems map.

" + "smithy.api#documentation": "

A map of tables and requests against those tables that were not processed. The\n UnprocessedItems value is in the same form as\n RequestItems, so you can provide this value directly to a subsequent\n BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each UnprocessedItems entry consists of a table name and, for that table,\n a list of operations to perform (DeleteRequest or\n PutRequest).

\n \n

If there are no unprocessed items remaining, the response contains an empty\n UnprocessedItems map.

" } }, "ItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ItemCollectionMetricsPerTable", "traits": { - "smithy.api#documentation": "

A list of tables that were processed by BatchWriteItem and, for each table,\n information about any item collections that were affected by individual DeleteItem or\n PutItem operations.

\n

Each entry consists of the following subelements:

\n " + "smithy.api#documentation": "

A list of tables that were processed by BatchWriteItem and, for each\n table, information about any item collections that were affected by individual\n DeleteItem or PutItem operations.

\n

Each entry consists of the following subelements:

\n " } }, "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacityMultiple", "traits": { - "smithy.api#documentation": "

The capacity units consumed by the entire BatchWriteItem operation.

\n

Each element consists of:

\n " + "smithy.api#documentation": "

The capacity units consumed by the entire BatchWriteItem\n operation.

\n

Each element consists of:

\n " } } }, @@ -1130,13 +1130,13 @@ "BillingMode": { "target": "com.amazonaws.dynamodb#BillingMode", "traits": { - "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage capacity. This setting can be changed later.

\n " + "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage\n capacity. This setting can be changed later.

\n " } }, "LastUpdateToPayPerRequestDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

Represents the time when PAY_PER_REQUEST was last set as the read/write capacity mode.

" + "smithy.api#documentation": "

Represents the time when PAY_PER_REQUEST was last set as the read/write\n capacity mode.

" } } }, @@ -1188,7 +1188,7 @@ } }, "traits": { - "smithy.api#documentation": "

An ordered list of errors for each item in the request which caused the transaction\n to get cancelled. The values of the list are ordered according to the ordering of the\n TransactWriteItems request parameter. If no error\n occurred for the associated item an error with a Null code and Null message will be present.\n

" + "smithy.api#documentation": "

An ordered list of errors for each item in the request which caused the transaction to\n get cancelled. The values of the list are ordered according to the ordering of the\n TransactWriteItems request parameter. If no error occurred for the\n associated item an error with a Null code and Null message will be present.

" } }, "com.amazonaws.dynamodb#CancellationReasonList": { @@ -1226,7 +1226,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents the amount of provisioned throughput capacity consumed on a table or an index.

" + "smithy.api#documentation": "

Represents the amount of provisioned throughput capacity consumed on a table or an\n index.

" } }, "com.amazonaws.dynamodb#ClientRequestToken": { @@ -1309,19 +1309,19 @@ "AttributeValueList": { "target": "com.amazonaws.dynamodb#AttributeValueList", "traits": { - "smithy.api#documentation": "

One or more values to evaluate against the supplied attribute. The number of values in the\n list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII character\n code values. For example, a is greater than A, and a\n is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values.

" + "smithy.api#documentation": "

One or more values to evaluate against the supplied attribute. The number of values in\n the list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n a is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it\n compares binary values.

" } }, "ComparisonOperator": { "target": "com.amazonaws.dynamodb#ComparisonOperator", "traits": { - "smithy.api#documentation": "

A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

\n

The following comparison operators are available:

\n

\n EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN\n

\n

The following are descriptions of each comparison operator.

\n \n

For usage examples of AttributeValueList and ComparisonOperator, see\n Legacy Conditional Parameters\n in the Amazon DynamoDB Developer Guide.

", + "smithy.api#documentation": "

A comparator for evaluating attributes. For example, equals, greater than, less than,\n etc.

\n

The following comparison operators are available:

\n

\n EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |\n BEGINS_WITH | IN | BETWEEN\n

\n

The following are descriptions of each comparison operator.

\n \n

For usage examples of AttributeValueList and\n ComparisonOperator, see Legacy\n Conditional Parameters in the Amazon DynamoDB Developer\n Guide.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents the selection criteria for a Query or Scan operation:

\n " + "smithy.api#documentation": "

Represents the selection criteria for a Query or Scan\n operation:

\n " } }, "com.amazonaws.dynamodb#ConditionCheck": { @@ -1330,7 +1330,7 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item to be checked. Each element consists of an\n attribute name and a value for that attribute.

", + "smithy.api#documentation": "

The primary key of the item to be checked. Each element consists of an attribute name\n and a value for that attribute.

", "smithy.api#required": {} } }, @@ -1344,7 +1344,7 @@ "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to succeed.

", + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to\n succeed.

", "smithy.api#required": {} } }, @@ -1363,12 +1363,12 @@ "ReturnValuesOnConditionCheckFailure": { "target": "com.amazonaws.dynamodb#ReturnValuesOnConditionCheckFailure", "traits": { - "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to\n get the item attributes if the ConditionCheck condition fails.\n For ReturnValuesOnConditionCheckFailure, the valid\n values are: NONE and ALL_OLD.

" + "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n ConditionCheck condition fails. For\n ReturnValuesOnConditionCheckFailure, the valid values are: NONE and\n ALL_OLD.

" } } }, "traits": { - "smithy.api#documentation": "

Represents a request to perform a check that an item exists or to check the condition of\n specific attributes of the item.

" + "smithy.api#documentation": "

Represents a request to perform a check that an item exists or to check the condition\n of specific attributes of the item.

" } }, "com.amazonaws.dynamodb#ConditionExpression": { @@ -1446,18 +1446,18 @@ "LocalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#SecondaryIndexesCapacityMap", "traits": { - "smithy.api#documentation": "

The amount of throughput consumed on each local index affected by the operation.

" + "smithy.api#documentation": "

The amount of throughput consumed on each local index affected by the\n operation.

" } }, "GlobalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#SecondaryIndexesCapacityMap", "traits": { - "smithy.api#documentation": "

The amount of throughput consumed on each global index affected by the operation.

" + "smithy.api#documentation": "

The amount of throughput consumed on each global index affected by the\n operation.

" } } }, "traits": { - "smithy.api#documentation": "

The capacity units consumed by an operation. The data returned includes the total\n provisioned throughput consumed, along with statistics for the table and any indexes involved\n in the operation. ConsumedCapacity is only returned if the request asked for it.\n For more information, see Provisioned\n Throughput in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The capacity units consumed by an operation. The data returned includes the total\n provisioned throughput consumed, along with statistics for the table and any indexes\n involved in the operation. ConsumedCapacity is only returned if the request\n asked for it. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer\n Guide.

" } }, "com.amazonaws.dynamodb#ConsumedCapacityMultiple": { @@ -1478,7 +1478,7 @@ "ContinuousBackupsStatus": { "target": "com.amazonaws.dynamodb#ContinuousBackupsStatus", "traits": { - "smithy.api#documentation": "

\n ContinuousBackupsStatus can be one of the following states: ENABLED,\n DISABLED

", + "smithy.api#documentation": "

\n ContinuousBackupsStatus can be one of the following states: ENABLED,\n DISABLED

", "smithy.api#required": {} } }, @@ -1490,7 +1490,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the table.

" + "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the\n table.

" } }, "com.amazonaws.dynamodb#ContinuousBackupsStatus": { @@ -1598,7 +1598,7 @@ "ContributorInsightsStatus": { "target": "com.amazonaws.dynamodb#ContributorInsightsStatus", "traits": { - "smithy.api#documentation": "

Describes the current status for contributor insights for the given table and index, if applicable.

" + "smithy.api#documentation": "

Describes the current status for contributor insights for the given table and index,\n if applicable.

" } } }, @@ -1641,7 +1641,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Creates a backup for an existing table.

\n

Each time you create an on-demand backup, the entire table data is backed up. There\n is no limit to the number of on-demand backups that can be taken.

\n

When you create an on-demand backup, a time marker of the request is cataloged, and\n the backup is created asynchronously, by applying all changes until the time of the\n request to the last full table snapshot. Backup requests are processed instantaneously\n and become available for restore within minutes.

\n

You can call CreateBackup at a maximum rate of 50 times per second.

\n

All backups in DynamoDB work without consuming any provisioned throughput on the table.

\n

If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed\n to contain all data committed to the table up to 14:24:00, and data committed after\n 14:26:00 will not be. The backup might contain data modifications made between 14:24:00\n and 14:26:00. On-demand backup does not support causal consistency.

\n

\n Along with data, the following are also included on the backups:\n

\n " + "smithy.api#documentation": "

Creates a backup for an existing table.

\n

Each time you create an on-demand backup, the entire table data is backed up. There\n is no limit to the number of on-demand backups that can be taken.

\n

When you create an on-demand backup, a time marker of the request is cataloged, and\n the backup is created asynchronously, by applying all changes until the time of the\n request to the last full table snapshot. Backup requests are processed instantaneously\n and become available for restore within minutes.

\n

You can call CreateBackup at a maximum rate of 50 times per\n second.

\n

All backups in DynamoDB work without consuming any provisioned throughput on the\n table.

\n

If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed to\n contain all data committed to the table up to 14:24:00, and data committed after\n 14:26:00 will not be. The backup might contain data modifications made between 14:24:00\n and 14:26:00. On-demand backup does not support causal consistency.

\n

Along with data, the following are also included on the backups:

\n " } }, "com.amazonaws.dynamodb#CreateBackupInput": { @@ -1694,14 +1694,14 @@ "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into an index. These\n are in addition to the primary key attributes and index key attributes, which are\n automatically projected.

", + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into an index. These\n are in addition to the primary key attributes and index key attributes, which are\n automatically projected.

", "smithy.api#required": {} } }, "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughput", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary index.

\n

For current minimum and maximum provisioned throughput values, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary\n index.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -1738,7 +1738,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Creates a global table from an existing table. A global table creates a replication\n relationship between two or more DynamoDB tables with the same table name in the\n provided Regions.

\n \n

This operation only applies to Version 2017.11.29 of global tables.

\n
\n\n

If you want to add a new replica table to a global table, each of the following conditions\n must be true:

\n \n

\n If global secondary indexes are specified, then the following conditions must also be met:\n

\n \n

\n If local secondary indexes are specified, then the following conditions must also be met:\n

\n \n\n \n

\n Write capacity settings should be set consistently across your replica tables and\n secondary indexes. DynamoDB strongly recommends enabling auto scaling to manage the write\n capacity settings for all of your global tables replicas and indexes.\n

\n

\n If you prefer to manage write capacity settings manually, you should provision equal\n replicated write capacity units to your replica tables. You should also provision\n equal replicated write capacity units to matching secondary indexes across\n your global table.\n

\n
" + "smithy.api#documentation": "

Creates a global table from an existing table. A global table creates a replication\n relationship between two or more DynamoDB tables with the same table name in the\n provided Regions.

\n \n

This operation only applies to Version\n 2017.11.29 of global tables.

\n
\n\n

If you want to add a new replica table to a global table, each of the following\n conditions must be true:

\n \n

If global secondary indexes are specified, then the following conditions must also be\n met:

\n \n

If local secondary indexes are specified, then the following conditions must also be\n met:

\n \n\n \n

Write capacity settings should be set consistently across your replica tables and\n secondary indexes. DynamoDB strongly recommends enabling auto scaling to manage the\n write capacity settings for all of your global tables replicas and indexes.

\n

If you prefer to manage write capacity settings manually, you should provision\n equal replicated write capacity units to your replica tables. You should also\n provision equal replicated write capacity units to matching secondary indexes across\n your global table.

\n
" } }, "com.amazonaws.dynamodb#CreateGlobalTableInput": { @@ -1799,13 +1799,13 @@ "KMSMasterKeyId": { "target": "com.amazonaws.dynamodb#KMSMasterKeyId", "traits": { - "smithy.api#documentation": "

The AWS KMS customer master key (CMK) that should be used for AWS KMS encryption\n in the new replica. To specify a CMK, use its key ID, Amazon Resource Name (ARN),\n alias name, or alias ARN. Note that you should only provide this parameter if the\n key is different from the default DynamoDB KMS master key alias/aws/dynamodb.

" + "smithy.api#documentation": "

The KMS key that should be used for KMS encryption in\n the new replica. To specify a key, use its key ID, Amazon Resource Name (ARN), alias\n name, or alias ARN. Note that you should only provide this parameter if the key is\n different from the default DynamoDB KMS key\n alias/aws/dynamodb.

" } }, "ProvisionedThroughputOverride": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputOverride", "traits": { - "smithy.api#documentation": "

Replica-specific provisioned throughput. If not specified, uses the source table's\n provisioned throughput settings.

" + "smithy.api#documentation": "

Replica-specific provisioned throughput. If not specified, uses the source table's\n provisioned throughput settings.

" } }, "GlobalSecondaryIndexes": { @@ -1845,7 +1845,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The CreateTable operation adds a new table to your account. In an AWS\n account, table names must be unique within each Region. That is, you can have two tables\n with same name if you create the tables in different Regions.

\n

\n CreateTable is an asynchronous operation. Upon receiving a CreateTable request,\n DynamoDB immediately returns a response with a TableStatus of CREATING. After\n the table is created, DynamoDB sets the TableStatus to ACTIVE. You can\n perform read and write operations only on an ACTIVE table.

\n

You can optionally define secondary indexes on the new table, as part of the CreateTable\n operation. If you want to create multiple tables with secondary indexes on them, you must create the\n tables sequentially. Only one table with secondary indexes can be in the CREATING state at\n any given time.

\n

You can use the DescribeTable action to check the table status.

" + "smithy.api#documentation": "

The CreateTable operation adds a new table to your account. In an Amazon Web Services account, table names must be unique within each Region. That is, you can\n have two tables with same name if you create the tables in different Regions.

\n

\n CreateTable is an asynchronous operation. Upon receiving a\n CreateTable request, DynamoDB immediately returns a response with a\n TableStatus of CREATING. After the table is created,\n DynamoDB sets the TableStatus to ACTIVE. You can perform read\n and write operations only on an ACTIVE table.

\n

You can optionally define secondary indexes on the new table, as part of the\n CreateTable operation. If you want to create multiple tables with\n secondary indexes on them, you must create the tables sequentially. Only one table with\n secondary indexes can be in the CREATING state at any given time.

\n

You can use the DescribeTable action to check the table status.

" } }, "com.amazonaws.dynamodb#CreateTableInput": { @@ -1868,38 +1868,38 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

Specifies the attributes that make up the primary key for a table or an index. The attributes\n in KeySchema must also be defined in the AttributeDefinitions array. For more\n information, see Data Model in the\n Amazon DynamoDB Developer Guide.

\n

Each KeySchemaElement in the array is composed of:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from the DynamoDB usage of\n an internal hash function to evenly distribute data items across partitions, based\n on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
\n\n

For a simple primary key (partition key), you must provide\n exactly one element with a KeyType of HASH.

\n

For a composite primary key (partition key and sort key), you must provide exactly two\n elements, in this order: The first element must have a KeyType of HASH,\n and the second element must have a KeyType of RANGE.

\n

For more information, see Working with Tables in the Amazon DynamoDB Developer\n Guide.

", + "smithy.api#documentation": "

Specifies the attributes that make up the primary key for a table or an index. The\n attributes in KeySchema must also be defined in the\n AttributeDefinitions array. For more information, see Data\n Model in the Amazon DynamoDB Developer Guide.

\n

Each KeySchemaElement in the array is composed of:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from the DynamoDB usage\n of an internal hash function to evenly distribute data items across partitions,\n based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key\n value.

\n
\n\n

For a simple primary key (partition key), you must provide exactly one element with a\n KeyType of HASH.

\n

For a composite primary key (partition key and sort key), you must provide exactly two\n elements, in this order: The first element must have a KeyType of\n HASH, and the second element must have a KeyType of\n RANGE.

\n

For more information, see Working with Tables in the Amazon DynamoDB Developer\n Guide.

", "smithy.api#required": {} } }, "LocalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#LocalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

One or more local secondary indexes (the maximum is 5) to be created on the table. Each index is scoped to a given partition key value. There is a 10 GB size limit per partition key value; otherwise, the size of a local secondary index is unconstrained.

\n

Each local secondary index in the array includes the following:

\n " + "smithy.api#documentation": "

One or more local secondary indexes (the maximum is 5) to be created on the table.\n Each index is scoped to a given partition key value. There is a 10 GB size limit per\n partition key value; otherwise, the size of a local secondary index is\n unconstrained.

\n

Each local secondary index in the array includes the following:

\n " } }, "GlobalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

One or more global secondary indexes (the maximum is 20) to be created on the table. Each global secondary index in the array includes the following:

\n " + "smithy.api#documentation": "

One or more global secondary indexes (the maximum is 20) to be created on the table.\n Each global secondary index in the array includes the following:

\n " } }, "BillingMode": { "target": "com.amazonaws.dynamodb#BillingMode", "traits": { - "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage capacity. This setting can be changed later.

\n " + "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage\n capacity. This setting can be changed later.

\n " } }, "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughput", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for a specified table or index. The\n settings can be modified using the UpdateTable operation.

\n\t\t

If you set BillingMode as PROVISIONED, you must specify this property. If you\n set BillingMode as PAY_PER_REQUEST, you cannot specify this\n property.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for a specified table or index. The\n settings can be modified using the UpdateTable operation.

\n

If you set BillingMode as PROVISIONED, you must specify this property.\n If you set BillingMode as PAY_PER_REQUEST, you cannot specify this\n property.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } }, "StreamSpecification": { "target": "com.amazonaws.dynamodb#StreamSpecification", "traits": { - "smithy.api#documentation": "

The settings for DynamoDB Streams on the table. These settings consist of:

\n " + "smithy.api#documentation": "

The settings for DynamoDB Streams on the table. These settings consist of:

\n " } }, "SSESpecification": { @@ -1911,7 +1911,7 @@ "Tags": { "target": "com.amazonaws.dynamodb#TagList", "traits": { - "smithy.api#documentation": "

A list of key-value pairs to label the table. For more information, see Tagging for DynamoDB.

" + "smithy.api#documentation": "

A list of key-value pairs to label the table. For more information, see Tagging\n for DynamoDB.

" } } }, @@ -1942,7 +1942,7 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item to be deleted. Each element consists of an\n attribute name and a value for that attribute.

", + "smithy.api#documentation": "

The primary key of the item to be deleted. Each element consists of an attribute name\n and a value for that attribute.

", "smithy.api#required": {} } }, @@ -1956,7 +1956,7 @@ "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional delete to succeed.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional delete to\n succeed.

" } }, "ExpressionAttributeNames": { @@ -1974,7 +1974,7 @@ "ReturnValuesOnConditionCheckFailure": { "target": "com.amazonaws.dynamodb#ReturnValuesOnConditionCheckFailure", "traits": { - "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to\n get the item attributes if the Delete condition fails.\n For ReturnValuesOnConditionCheckFailure, the valid\n values are: NONE and ALL_OLD.

" + "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n Delete condition fails. For\n ReturnValuesOnConditionCheckFailure, the valid values are: NONE and\n ALL_OLD.

" } } }, @@ -2011,7 +2011,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Deletes an existing backup of a table.

\n

You can call DeleteBackup at a maximum rate of 10 times per second.

" + "smithy.api#documentation": "

Deletes an existing backup of a table.

\n

You can call DeleteBackup at a maximum rate of 10 times per\n second.

" } }, "com.amazonaws.dynamodb#DeleteBackupInput": { @@ -2090,7 +2090,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

\n

In addition to deleting an item, you can also return the item's attribute values in the same\n operation, using the ReturnValues parameter.

\n

Unless you specify conditions, the DeleteItem is an idempotent operation; running it\n multiple times on the same item or attribute does not result in an error response.

\n

Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

" + "smithy.api#documentation": "

Deletes a single item in a table by primary key. You can perform a conditional delete\n operation that deletes the item if it exists, or if it has an expected attribute\n value.

\n

In addition to deleting an item, you can also return the item's attribute values in\n the same operation, using the ReturnValues parameter.

\n

Unless you specify conditions, the DeleteItem is an idempotent operation;\n running it multiple times on the same item or attribute does not\n result in an error response.

\n

Conditional deletes are useful for deleting items only if specific conditions are met.\n If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not\n deleted.

" } }, "com.amazonaws.dynamodb#DeleteItemInput": { @@ -2106,26 +2106,26 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the primary key of\n the item to delete.

\n

For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.

", + "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the\n primary key of the item to delete.

\n

For the primary key, you must provide all of the attributes. For example, with a\n simple primary key, you only need to provide a value for the partition key. For a\n composite primary key, you must provide values for both the partition key and the sort\n key.

", "smithy.api#required": {} } }, "Expected": { "target": "com.amazonaws.dynamodb#ExpectedAttributeMap", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n Expected in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see Expected in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionalOperator": { "target": "com.amazonaws.dynamodb#ConditionalOperator", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n ConditionalOperator in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see ConditionalOperator in the Amazon DynamoDB Developer\n Guide.

" } }, "ReturnValues": { "target": "com.amazonaws.dynamodb#ReturnValue", "traits": { - "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appeared before they\n were deleted. For DeleteItem, the valid values are:

\n \n \n

The ReturnValues parameter is used by several DynamoDB operations; however,\n DeleteItem does not recognize any values other than NONE or\n ALL_OLD.

\n
" + "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appeared\n before they were deleted. For DeleteItem, the valid values are:

\n \n \n

The ReturnValues parameter is used by several DynamoDB operations;\n however, DeleteItem does not recognize any values other than\n NONE or ALL_OLD.

\n
" } }, "ReturnConsumedCapacity": { @@ -2134,25 +2134,25 @@ "ReturnItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ReturnItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE,\n the response includes statistics about item collections, if any, that were modified\n during the operation are returned in the response. If set to NONE (the\n default), no statistics are returned.

" } }, "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional DeleteItem to\n succeed.

\n

An expression can contain any of the following:

\n \n

For more information about condition expressions, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional DeleteItem\n to succeed.

\n

An expression can contain any of the following:

\n \n

For more information about condition expressions, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeValues": { "target": "com.amazonaws.dynamodb#ExpressionAttributeValueMap", "traits": { - "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as\n follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"},\n \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -2166,7 +2166,7 @@ "Attributes": { "target": "com.amazonaws.dynamodb#AttributeMap", "traits": { - "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the item as it\n appeared before the DeleteItem operation. This map appears in the response only if\n ReturnValues was specified as ALL_OLD in the request.

" + "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the item\n as it appeared before the DeleteItem operation. This map appears in the\n response only if ReturnValues was specified as ALL_OLD in the\n request.

" } }, "ConsumedCapacity": { @@ -2178,7 +2178,7 @@ "ItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n DeleteItem operation.\n ItemCollectionMetrics is only returned if the\n ReturnItemCollectionMetrics parameter was specified. If the\n table does not have any local secondary indexes, this information is not returned in the\n response.

\n

Each ItemCollectionMetrics\n element consists of:

\n " + "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n DeleteItem operation. ItemCollectionMetrics is only\n returned if the ReturnItemCollectionMetrics parameter was specified. If the\n table does not have any local secondary indexes, this information is not returned in the\n response.

\n

Each ItemCollectionMetrics element consists of:

\n " } } }, @@ -2222,7 +2222,7 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key of the item to delete. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema.

", + "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key of the item\n to delete. All of the table's primary key attributes must be specified, and their data\n types must match those of the table's key schema.

", "smithy.api#required": {} } } @@ -2260,7 +2260,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The DeleteTable operation deletes a table and all of its items. After a\n DeleteTable request, the specified table is in the DELETING state until\n DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete\n it. If a table is in CREATING or UPDATING states, then DynamoDB returns\n a ResourceInUseException. If the specified table does not exist, DynamoDB returns a\n ResourceNotFoundException. If table is already in the DELETING state, no\n error is returned.

\n \n

DynamoDB might continue to accept data read and write operations, such as GetItem and\n PutItem, on a table in the DELETING state until the table deletion is\n complete.

\n
\n

When you delete a table, any indexes on that table are also deleted.

\n

If you have DynamoDB Streams enabled on the table, then the corresponding stream on that table goes\n into the DISABLED state, and the stream is automatically deleted after 24 hours.

\n\n

Use the DescribeTable action to check the status of the table.

" + "smithy.api#documentation": "

The DeleteTable operation deletes a table and all of its items. After a\n DeleteTable request, the specified table is in the\n DELETING state until DynamoDB completes the deletion. If the table is\n in the ACTIVE state, you can delete it. If a table is in\n CREATING or UPDATING states, then DynamoDB returns a\n ResourceInUseException. If the specified table does not exist, DynamoDB\n returns a ResourceNotFoundException. If table is already in the\n DELETING state, no error is returned.

\n \n

DynamoDB might continue to accept data read and write operations, such as\n GetItem and PutItem, on a table in the\n DELETING state until the table deletion is complete.

\n
\n

When you delete a table, any indexes on that table are also deleted.

\n

If you have DynamoDB Streams enabled on the table, then the corresponding stream on\n that table goes into the DISABLED state, and the stream is automatically\n deleted after 24 hours.

\n\n

Use the DescribeTable action to check the status of the table.

" } }, "com.amazonaws.dynamodb#DeleteTableInput": { @@ -2315,7 +2315,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Describes an existing backup of a table.

\n

You can call DescribeBackup at a maximum rate of 10 times per second.

" + "smithy.api#documentation": "

Describes an existing backup of a table.

\n

You can call DescribeBackup at a maximum rate of 10 times per\n second.

" } }, "com.amazonaws.dynamodb#DescribeBackupInput": { @@ -2364,7 +2364,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Checks the status of continuous backups and point in time recovery on the specified table.\n Continuous backups are ENABLED on all tables at table creation.\n If point in time recovery is enabled, PointInTimeRecoveryStatus will be set to ENABLED.

\n

After continuous backups and point in time recovery are enabled, you can restore to any\n point in time within EarliestRestorableDateTime and\n LatestRestorableDateTime.

\n

\n LatestRestorableDateTime is typically 5 minutes before the current time. You can restore your table to any point\n in time during the last 35 days.\n

\n

You can call DescribeContinuousBackups at a maximum rate of 10 times per second.

" + "smithy.api#documentation": "

Checks the status of continuous backups and point in time recovery on the specified\n table. Continuous backups are ENABLED on all tables at table creation. If\n point in time recovery is enabled, PointInTimeRecoveryStatus will be set to\n ENABLED.

\n

After continuous backups and point in time recovery are enabled, you can restore to\n any point in time within EarliestRestorableDateTime and\n LatestRestorableDateTime.

\n

\n LatestRestorableDateTime is typically 5 minutes before the current time.\n You can restore your table to any point in time during the last 35 days.

\n

You can call DescribeContinuousBackups at a maximum rate of 10 times per\n second.

" } }, "com.amazonaws.dynamodb#DescribeContinuousBackupsInput": { @@ -2373,7 +2373,7 @@ "TableName": { "target": "com.amazonaws.dynamodb#TableName", "traits": { - "smithy.api#documentation": "

Name of the table for which the customer wants to check the continuous backups and point in time recovery settings.

", + "smithy.api#documentation": "

Name of the table for which the customer wants to check the continuous backups and\n point in time recovery settings.

", "smithy.api#required": {} } } @@ -2385,7 +2385,7 @@ "ContinuousBackupsDescription": { "target": "com.amazonaws.dynamodb#ContinuousBackupsDescription", "traits": { - "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the table.

" + "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the\n table.

" } } } @@ -2407,7 +2407,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns information about contributor insights, for a given table or global secondary index.

" + "smithy.api#documentation": "

Returns information about contributor insights, for a given table or global secondary\n index.

" } }, "com.amazonaws.dynamodb#DescribeContributorInsightsInput": { @@ -2446,13 +2446,13 @@ "ContributorInsightsRuleList": { "target": "com.amazonaws.dynamodb#ContributorInsightsRuleList", "traits": { - "smithy.api#documentation": "

List of names of the associated Alpine rules.

" + "smithy.api#documentation": "

List of names of the associated contributor insights rules.

" } }, "ContributorInsightsStatus": { "target": "com.amazonaws.dynamodb#ContributorInsightsStatus", "traits": { - "smithy.api#documentation": "

Current Status contributor insights.

" + "smithy.api#documentation": "

Current status of contributor insights.

" } }, "LastUpdateDateTime": { @@ -2464,7 +2464,7 @@ "FailureException": { "target": "com.amazonaws.dynamodb#FailureException", "traits": { - "smithy.api#documentation": "

Returns information about the last failure that encountered.

\n

The most common exceptions for a FAILED status are:

\n " + "smithy.api#documentation": "

Returns information about the last failure that was encountered.

\n

The most common exceptions for a FAILED status are:

\n " } } } @@ -2566,7 +2566,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Returns information about the specified global table.

\n \n

This operation only applies to Version 2017.11.29 of global tables.\n If you are using global tables Version 2019.11.21 you can use DescribeTable instead.

\n
" + "smithy.api#documentation": "

Returns information about the specified global table.

\n \n

This operation only applies to Version\n 2017.11.29 of global tables. If you are using global tables Version\n 2019.11.21 you can use DescribeTable instead.

\n
" } }, "com.amazonaws.dynamodb#DescribeGlobalTableInput": { @@ -2615,7 +2615,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Describes Region-specific settings for a global table.

\n \n

This operation only applies to Version 2017.11.29 of global tables.

\n
" + "smithy.api#documentation": "

Describes Region-specific settings for a global table.

\n \n

This operation only applies to Version\n 2017.11.29 of global tables.

\n
" } }, "com.amazonaws.dynamodb#DescribeGlobalTableSettingsInput": { @@ -2722,14 +2722,14 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Returns the current provisioned-capacity quotas for your AWS account in a Region, both\n for the Region as a whole and for any one DynamoDB table that you create there.

\n

When you establish an AWS account, the account has initial quotas on the maximum read\n capacity units and write capacity units that you can provision across all of your\n DynamoDB tables in a given Region. Also, there are per-table quotas that apply when you\n create a table there. For more information, see Service, Account, and Table\n Quotas page in the Amazon DynamoDB Developer\n Guide.

\n\n

Although you can increase these quotas by filing a case at AWS Support Center, obtaining the increase is not\n instantaneous. The DescribeLimits action lets you write code to compare the\n capacity you are currently using to those quotas imposed by your account so that you\n have enough time to apply for an increase before you hit a quota.

\n\n

For example, you could use one of the AWS SDKs to do the following:

\n\n
    \n
  1. \n

    Call DescribeLimits for a particular Region to obtain your current\n account quotas on provisioned capacity there.

    \n
  2. \n
  3. \n

    Create a variable to hold the aggregate read capacity units provisioned for all\n your tables in that Region, and one to hold the aggregate write capacity units.\n Zero them both.

    \n
  4. \n
  5. \n

    Call ListTables to obtain a list of all your DynamoDB tables.

    \n
  6. \n
  7. \n

    For each table name listed by ListTables, do the following:

    \n \n
  8. \n
  9. \n

    Report the account quotas for that Region returned by DescribeLimits, along with\n the total current provisioned capacity levels you have calculated.

    \n
  10. \n
\n\n

This will let you see whether you are getting close to your account-level quotas.

\n

The per-table quotas apply only when you are creating a new table. They restrict the sum\n of the provisioned capacity of the new table itself and all its global secondary\n indexes.

\n

For existing tables and their GSIs, DynamoDB doesn't let you increase provisioned\n capacity extremely rapidly, but the only quota that applies is that the aggregate\n provisioned capacity over all your tables and GSIs cannot exceed either of the\n per-account quotas.

\n \n

\n DescribeLimits should only be called periodically. You can expect throttling\n errors if you call it more than once in a minute.

\n
\n

The DescribeLimits Request element has no content.

" + "smithy.api#documentation": "

Returns the current provisioned-capacity quotas for your Amazon Web Services account in\n a Region, both for the Region as a whole and for any one DynamoDB table that you create\n there.

\n

When you establish an Amazon Web Services account, the account has initial quotas on\n the maximum read capacity units and write capacity units that you can provision across\n all of your DynamoDB tables in a given Region. Also, there are per-table\n quotas that apply when you create a table there. For more information, see Service,\n Account, and Table Quotas page in the Amazon DynamoDB\n Developer Guide.

\n\n

Although you can increase these quotas by filing a case at Amazon Web Services Support Center, obtaining the\n increase is not instantaneous. The DescribeLimits action lets you write\n code to compare the capacity you are currently using to those quotas imposed by your\n account so that you have enough time to apply for an increase before you hit a\n quota.

\n\n

For example, you could use one of the Amazon Web Services SDKs to do the\n following:

\n\n
    \n
  1. \n

    Call DescribeLimits for a particular Region to obtain your\n current account quotas on provisioned capacity there.

    \n
  2. \n
  3. \n

    Create a variable to hold the aggregate read capacity units provisioned for\n all your tables in that Region, and one to hold the aggregate write capacity\n units. Zero them both.

    \n
  4. \n
  5. \n

    Call ListTables to obtain a list of all your DynamoDB\n tables.

    \n
  6. \n
  7. \n

    For each table name listed by ListTables, do the\n following:

    \n \n
  8. \n
  9. \n

    Report the account quotas for that Region returned by\n DescribeLimits, along with the total current provisioned\n capacity levels you have calculated.

    \n
  10. \n
\n\n

This will let you see whether you are getting close to your account-level\n quotas.

\n

The per-table quotas apply only when you are creating a new table. They restrict the\n sum of the provisioned capacity of the new table itself and all its global secondary\n indexes.

\n

For existing tables and their GSIs, DynamoDB doesn't let you increase provisioned\n capacity extremely rapidly, but the only quota that applies is that the aggregate\n provisioned capacity over all your tables and GSIs cannot exceed either of the\n per-account quotas.

\n \n

\n DescribeLimits should only be called periodically. You can expect\n throttling errors if you call it more than once in a minute.

\n
\n

The DescribeLimits Request element has no content.

" } }, "com.amazonaws.dynamodb#DescribeLimitsInput": { "type": "structure", "members": {}, "traits": { - "smithy.api#documentation": "

Represents the input of a DescribeLimits operation. Has no content.

" + "smithy.api#documentation": "

Represents the input of a DescribeLimits operation. Has no\n content.

" } }, "com.amazonaws.dynamodb#DescribeLimitsOutput": { @@ -2744,7 +2744,7 @@ "AccountMaxWriteCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum total write capacity units that your account allows you to provision across\n all of your tables in this Region.

" + "smithy.api#documentation": "

The maximum total write capacity units that your account allows you to provision\n across all of your tables in this Region.

" } }, "TableMaxReadCapacityUnits": { @@ -2787,7 +2787,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table.

\n \n

If you issue a DescribeTable request immediately after a CreateTable request, DynamoDB might\n return a ResourceNotFoundException. This is because DescribeTable uses an eventually\n consistent query, and the metadata for your table might not be available at that moment.\n Wait for a few seconds, and then try the DescribeTable request again.

\n
", + "smithy.api#documentation": "

Returns information about the table, including the current status of the table, when\n it was created, the primary key schema, and any indexes on the table.

\n \n

If you issue a DescribeTable request immediately after a\n CreateTable request, DynamoDB might return a\n ResourceNotFoundException. This is because\n DescribeTable uses an eventually consistent query, and the metadata\n for your table might not be available at that moment. Wait for a few seconds, and\n then try the DescribeTable request again.

\n
", "smithy.waiters#waitable": { "TableExists": { "acceptors": [ @@ -2870,7 +2870,7 @@ } ], "traits": { - "smithy.api#documentation": "

Describes auto scaling settings across replicas of the global table at once.

\n \n

This operation only applies to Version 2019.11.21 of global tables.

\n
" + "smithy.api#documentation": "

Describes auto scaling settings across replicas of the global table at once.

\n \n

This operation only applies to Version\n 2019.11.21 of global tables.

\n
" } }, "com.amazonaws.dynamodb#DescribeTableReplicaAutoScalingInput": { @@ -3018,12 +3018,34 @@ } }, "traits": { - "smithy.api#documentation": "

\nThere was an attempt to insert an item with the same primary key as an item that already exists in the DynamoDB table.\n

", + "smithy.api#documentation": "

There was an attempt to insert an item with the same primary key as an item that\n already exists in the DynamoDB table.

", "smithy.api#error": "client" } }, "com.amazonaws.dynamodb#DynamoDB_20120810": { "type": "service", + "traits": { + "aws.api#clientEndpointDiscovery": { + "operation": "com.amazonaws.dynamodb#DescribeEndpoints", + "error": "com.amazonaws.dynamodb#InvalidEndpointException" + }, + "aws.api#service": { + "sdkId": "DynamoDB", + "arnNamespace": "dynamodb", + "cloudFormationName": "DynamoDB", + "cloudTrailEventSource": "dynamodb.amazonaws.com", + "endpointPrefix": "dynamodb" + }, + "aws.auth#sigv4": { + "name": "dynamodb" + }, + "aws.protocols#awsJson1_0": {}, + "smithy.api#documentation": "Amazon DynamoDB\n\n

Amazon DynamoDB is a fully managed NoSQL database service that provides fast\n and predictable performance with seamless scalability. DynamoDB lets you\n offload the administrative burdens of operating and scaling a distributed database, so\n that you don't have to worry about hardware provisioning, setup and configuration,\n replication, software patching, or cluster scaling.

\n\n

With DynamoDB, you can create database tables that can store and retrieve\n any amount of data, and serve any level of request traffic. You can scale up or scale\n down your tables' throughput capacity without downtime or performance degradation, and\n use the Amazon Web Services Management Console to monitor resource utilization and performance\n metrics.

\n\n

DynamoDB automatically spreads the data and traffic for your tables over\n a sufficient number of servers to handle your throughput and storage requirements, while\n maintaining consistent and fast performance. All of your data is stored on solid state\n disks (SSDs) and automatically replicated across multiple Availability Zones in an\n Amazon Web Services Region, providing built-in high availability and data\n durability.

", + "smithy.api#title": "Amazon DynamoDB", + "smithy.api#xmlNamespace": { + "uri": "http://dynamodb.amazonaws.com/doc/2012-08-10/" + } + }, "version": "2012-08-10", "operations": [ { @@ -3176,29 +3198,7 @@ { "target": "com.amazonaws.dynamodb#UpdateTimeToLive" } - ], - "traits": { - "aws.api#clientEndpointDiscovery": { - "operation": "com.amazonaws.dynamodb#DescribeEndpoints", - "error": "com.amazonaws.dynamodb#InvalidEndpointException" - }, - "aws.api#service": { - "sdkId": "DynamoDB", - "arnNamespace": "dynamodb", - "cloudFormationName": "DynamoDB", - "cloudTrailEventSource": "dynamodb.amazonaws.com", - "endpointPrefix": "dynamodb" - }, - "aws.auth#sigv4": { - "name": "dynamodb" - }, - "aws.protocols#awsJson1_0": {}, - "smithy.api#documentation": "Amazon DynamoDB\n\n\n

Amazon DynamoDB is a fully managed NoSQL database service that provides fast and\n predictable performance with seamless scalability. DynamoDB lets you offload the\n administrative burdens of operating and scaling a distributed database, so that you don't have\n to worry about hardware provisioning, setup and configuration, replication, software patching,\n or cluster scaling.

\n\n

With DynamoDB, you can create database tables that can store and retrieve any amount of\n data, and serve any level of request traffic. You can scale up or scale down your tables'\n throughput capacity without downtime or performance degradation, and use the AWS Management\n Console to monitor resource utilization and performance metrics.

\n\n

DynamoDB automatically spreads the data and traffic for your tables over a sufficient\n number of servers to handle your throughput and storage requirements, while maintaining\n consistent and fast performance. All of your data is stored on solid state disks (SSDs) and\n automatically replicated across multiple Availability Zones in an AWS region, providing\n built-in high availability and data durability.

", - "smithy.api#title": "Amazon DynamoDB", - "smithy.api#xmlNamespace": { - "uri": "http://dynamodb.amazonaws.com/doc/2012-08-10/" - } - } + ] }, "com.amazonaws.dynamodb#EnableKinesisStreamingDestination": { "type": "operation", @@ -3229,7 +3229,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Starts table data replication to the specified Kinesis data stream at a timestamp chosen\n during the enable workflow. If this operation doesn't return results immediately, use\n DescribeKinesisStreamingDestination to check if streaming to the Kinesis data stream is\n ACTIVE.

" + "smithy.api#documentation": "

Starts table data replication to the specified Kinesis data stream at a timestamp\n chosen during the enable workflow. If this operation doesn't return results immediately,\n use DescribeKinesisStreamingDestination to check if streaming to the Kinesis data stream\n is ACTIVE.

" } }, "com.amazonaws.dynamodb#Endpoint": { @@ -3304,7 +3304,7 @@ } ], "traits": { - "smithy.api#documentation": "

\nThis operation allows you to perform reads and singleton writes on data stored in DynamoDB, using PartiQL.\n

" + "smithy.api#documentation": "

This operation allows you to perform reads and singleton writes on data stored in\n DynamoDB, using PartiQL.

" } }, "com.amazonaws.dynamodb#ExecuteStatementInput": { @@ -3313,26 +3313,26 @@ "Statement": { "target": "com.amazonaws.dynamodb#PartiQLStatement", "traits": { - "smithy.api#documentation": "

\nThe PartiQL statement representing the operation to run.\n

", + "smithy.api#documentation": "

The PartiQL statement representing the operation to run.

", "smithy.api#required": {} } }, "Parameters": { "target": "com.amazonaws.dynamodb#PreparedStatementParameters", "traits": { - "smithy.api#documentation": "

\nThe parameters for the PartiQL statement, if any.\n

" + "smithy.api#documentation": "

The parameters for the PartiQL statement, if any.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

\nThe consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used.\n

" + "smithy.api#documentation": "

The consistency of a read operation. If set to true, then a strongly\n consistent read is used; otherwise, an eventually consistent read is used.

" } }, "NextToken": { "target": "com.amazonaws.dynamodb#PartiQLNextToken", "traits": { - "smithy.api#documentation": "

\nSet this value to get remaining results, if NextToken was returned in the statement response.\n

" + "smithy.api#documentation": "

Set this value to get remaining results, if NextToken was returned in the\n statement response.

" } } } @@ -3343,13 +3343,13 @@ "Items": { "target": "com.amazonaws.dynamodb#ItemList", "traits": { - "smithy.api#documentation": "

\nIf a read operation was used, this property will contain the result of the reade operation; a map of attribute names and their values. For the write operations this value will be empty.\n

" + "smithy.api#documentation": "

If a read operation was used, this property will contain the result of the read\n operation; a map of attribute names and their values. For the write operations this\n value will be empty.

" } }, "NextToken": { "target": "com.amazonaws.dynamodb#PartiQLNextToken", "traits": { - "smithy.api#documentation": "

\nIf the response of a read request exceeds the response payload limit DynamoDB will set this value in the response. If set, you can use that this value in the subsequent request to get the remaining results.\n

" + "smithy.api#documentation": "

If the response of a read request exceeds the response payload limit DynamoDB will set\n this value in the response. If set, you can use that this value in the subsequent\n request to get the remaining results.

" } } } @@ -3386,7 +3386,7 @@ } ], "traits": { - "smithy.api#documentation": "

\nThis operation allows you to perform transactional reads or writes on data stored in DynamoDB, using PartiQL.\n

" + "smithy.api#documentation": "

This operation allows you to perform transactional reads or writes on data stored in\n DynamoDB, using PartiQL.

\n \n

The entire transaction must consist of either read statements or write statements,\n you cannot mix both in one transaction. The EXISTS function is an exception and can\n be used to check the condition of specific attributes of the item in a similar\n manner to ConditionCheck in the TransactWriteItems API.

\n
" } }, "com.amazonaws.dynamodb#ExecuteTransactionInput": { @@ -3395,14 +3395,14 @@ "TransactStatements": { "target": "com.amazonaws.dynamodb#ParameterizedStatements", "traits": { - "smithy.api#documentation": "

\nThe list of PartiQL statements representing the transaction to run.\n

", + "smithy.api#documentation": "

The list of PartiQL statements representing the transaction to run.

", "smithy.api#required": {} } }, "ClientRequestToken": { "target": "com.amazonaws.dynamodb#ClientRequestToken", "traits": { - "smithy.api#documentation": "

\nSet this value to get remaining results, if NextToken was returned in the statement response.\n

", + "smithy.api#documentation": "

Set this value to get remaining results, if NextToken was returned in the\n statement response.

", "smithy.api#idempotencyToken": {} } } @@ -3414,7 +3414,7 @@ "Responses": { "target": "com.amazonaws.dynamodb#ItemResponseList", "traits": { - "smithy.api#documentation": "

\nThe response to a PartiQL transaction.\n

" + "smithy.api#documentation": "

The response to a PartiQL transaction.

" } } } @@ -3434,30 +3434,30 @@ "Value": { "target": "com.amazonaws.dynamodb#AttributeValue", "traits": { - "smithy.api#documentation": "

Represents the data for the expected attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and the value is the data itself.

\n

For more information, see Data Types in the\n Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the data for the expected attribute.

\n

Each attribute value is described as a name-value pair. The name is the data type, and\n the value is the data itself.

\n

For more information, see Data Types in the Amazon DynamoDB Developer\n Guide.

" } }, "Exists": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Causes DynamoDB to evaluate the value before attempting a conditional operation:

\n \n

The default setting for Exists is true. If you supply a Value all\n by itself, DynamoDB assumes the attribute exists: You don't have to set Exists to\n true, because it is implied.

\n

DynamoDB returns a ValidationException if:

\n " + "smithy.api#documentation": "

Causes DynamoDB to evaluate the value before attempting a conditional\n operation:

\n \n

The default setting for Exists is true. If you supply a\n Value all by itself, DynamoDB assumes the attribute exists:\n You don't have to set Exists to true, because it is\n implied.

\n

DynamoDB returns a ValidationException if:

\n " } }, "ComparisonOperator": { "target": "com.amazonaws.dynamodb#ComparisonOperator", "traits": { - "smithy.api#documentation": "

A comparator for evaluating attributes in the AttributeValueList. For example, equals,\n greater than, less than, etc.

\n

The following comparison operators are available:

\n

\n EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN\n

\n

The following are descriptions of each comparison operator.

\n " + "smithy.api#documentation": "

A comparator for evaluating attributes in the AttributeValueList. For\n example, equals, greater than, less than, etc.

\n

The following comparison operators are available:

\n

\n EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |\n BEGINS_WITH | IN | BETWEEN\n

\n

The following are descriptions of each comparison operator.

\n " } }, "AttributeValueList": { "target": "com.amazonaws.dynamodb#AttributeValueList", "traits": { - "smithy.api#documentation": "

One or more values to evaluate against the supplied attribute. The number of values in the\n list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII character\n code values. For example, a is greater than A, and a\n is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values.

\n

For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

One or more values to evaluate against the supplied attribute. The number of values in\n the list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n a is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it\n compares binary values.

\n

For information on specifying data types in JSON, see JSON Data Format\n in the Amazon DynamoDB Developer Guide.

" } } }, "traits": { - "smithy.api#documentation": "

Represents a condition to be compared with an attribute value. This condition can be\n used with DeleteItem, PutItem, or UpdateItem\n operations; if the comparison evaluates to true, the operation succeeds; if not, the\n operation fails. You can use ExpectedAttributeValue in one of two different\n ways:

\n \n

\n Value and Exists are incompatible with AttributeValueList and\n ComparisonOperator. Note that if you use both sets of parameters at once, DynamoDB will\n return a ValidationException exception.

" + "smithy.api#documentation": "

Represents a condition to be compared with an attribute value. This condition can be\n used with DeleteItem, PutItem, or UpdateItem\n operations; if the comparison evaluates to true, the operation succeeds; if not, the\n operation fails. You can use ExpectedAttributeValue in one of two different\n ways:

\n \n

\n Value and Exists are incompatible with\n AttributeValueList and ComparisonOperator. Note that if\n you use both sets of parameters at once, DynamoDB will return a\n ValidationException exception.

" } }, "com.amazonaws.dynamodb#ExportArn": { @@ -3493,7 +3493,7 @@ "ExportStatus": { "target": "com.amazonaws.dynamodb#ExportStatus", "traits": { - "smithy.api#documentation": "

Export can be in one of the following states: IN_PROGRESS, COMPLETED, or FAILED.

" + "smithy.api#documentation": "

Export can be in one of the following states: IN_PROGRESS, COMPLETED, or\n FAILED.

" } }, "StartTime": { @@ -3547,7 +3547,7 @@ "S3BucketOwner": { "target": "com.amazonaws.dynamodb#S3BucketOwner", "traits": { - "smithy.api#documentation": "

The ID of the AWS account that owns the bucket containing the export.

" + "smithy.api#documentation": "

The ID of the Amazon Web Services account that owns the bucket containing the\n export.

" } }, "S3Prefix": { @@ -3559,13 +3559,13 @@ "S3SseAlgorithm": { "target": "com.amazonaws.dynamodb#S3SseAlgorithm", "traits": { - "smithy.api#documentation": "

Type of encryption used on the bucket where export data is stored. Valid values\n for S3SseAlgorithm are:

\n " + "smithy.api#documentation": "

Type of encryption used on the bucket where export data is stored. Valid values for\n S3SseAlgorithm are:

\n " } }, "S3SseKmsKeyId": { "target": "com.amazonaws.dynamodb#S3SseKmsKeyId", "traits": { - "smithy.api#documentation": "

The ID of the AWS KMS managed key used to encrypt the S3 bucket where export data is\n stored (if applicable).

" + "smithy.api#documentation": "

The ID of the KMS managed key used to encrypt the S3 bucket where\n export data is stored (if applicable).

" } }, "FailureCode": { @@ -3583,7 +3583,7 @@ "ExportFormat": { "target": "com.amazonaws.dynamodb#ExportFormat", "traits": { - "smithy.api#documentation": "

The format of the exported data. Valid values for ExportFormat are\n DYNAMODB_JSON or ION.

" + "smithy.api#documentation": "

The format of the exported data. Valid values for ExportFormat are\n DYNAMODB_JSON or ION.

" } }, "BilledSizeBytes": { @@ -3679,7 +3679,7 @@ "ExportStatus": { "target": "com.amazonaws.dynamodb#ExportStatus", "traits": { - "smithy.api#documentation": "

Export can be in one of the following states: IN_PROGRESS, COMPLETED, or FAILED.

" + "smithy.api#documentation": "

Export can be in one of the following states: IN_PROGRESS, COMPLETED, or\n FAILED.

" } } }, @@ -3738,7 +3738,7 @@ "ClientToken": { "target": "com.amazonaws.dynamodb#ClientToken", "traits": { - "smithy.api#documentation": "

Providing a ClientToken makes the call to\n ExportTableToPointInTimeInput idempotent, meaning that multiple\n identical calls have the same effect as one single call.

\n

A client token is valid for 8 hours after the first request that uses it is\n completed. After 8 hours, any request with the same client token is treated as a new\n request. Do not resubmit the same request with the same client token for more than 8\n hours, or the result might not be idempotent.

\n

If you submit a request with the same client token but a change in other parameters\n within the 8-hour idempotency window, DynamoDB returns an\n IdempotentParameterMismatch exception.

", + "smithy.api#documentation": "

Providing a ClientToken makes the call to\n ExportTableToPointInTimeInput idempotent, meaning that multiple\n identical calls have the same effect as one single call.

\n

A client token is valid for 8 hours after the first request that uses it is completed.\n After 8 hours, any request with the same client token is treated as a new request. Do\n not resubmit the same request with the same client token for more than 8 hours, or the\n result might not be idempotent.

\n

If you submit a request with the same client token but a change in other parameters\n within the 8-hour idempotency window, DynamoDB returns an\n IdempotentParameterMismatch exception.

", "smithy.api#idempotencyToken": {} } }, @@ -3752,7 +3752,7 @@ "S3BucketOwner": { "target": "com.amazonaws.dynamodb#S3BucketOwner", "traits": { - "smithy.api#documentation": "

The ID of the AWS account that owns the bucket the export will be stored in.

" + "smithy.api#documentation": "

The ID of the Amazon Web Services account that owns the bucket the export will be\n stored in.

" } }, "S3Prefix": { @@ -3764,13 +3764,13 @@ "S3SseAlgorithm": { "target": "com.amazonaws.dynamodb#S3SseAlgorithm", "traits": { - "smithy.api#documentation": "

Type of encryption used on the bucket where export data will be stored. Valid values\n for S3SseAlgorithm are:

\n " + "smithy.api#documentation": "

Type of encryption used on the bucket where export data will be stored. Valid values\n for S3SseAlgorithm are:

\n " } }, "S3SseKmsKeyId": { "target": "com.amazonaws.dynamodb#S3SseKmsKeyId", "traits": { - "smithy.api#documentation": "

The ID of the AWS KMS managed key used to encrypt the S3 bucket where export data will\n be stored (if applicable).

" + "smithy.api#documentation": "

The ID of the KMS managed key used to encrypt the S3 bucket where\n export data will be stored (if applicable).

" } }, "ExportFormat": { @@ -3860,7 +3860,7 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

A map of attribute names to AttributeValue objects that\n specifies the primary key of the item to retrieve.

", + "smithy.api#documentation": "

A map of attribute names to AttributeValue objects that specifies the\n primary key of the item to retrieve.

", "smithy.api#required": {} } }, @@ -3874,18 +3874,18 @@ "ProjectionExpression": { "target": "com.amazonaws.dynamodb#ProjectionExpression", "traits": { - "smithy.api#documentation": "

A string that identifies one or more attributes of the specified item\n to retrieve from the table. The attributes in the expression must be\n separated by commas. If no attribute names are specified, then all\n attributes of the specified item are returned. If any of the requested\n attributes are not found, they do not appear in the result.

" + "smithy.api#documentation": "

A string that identifies one or more attributes of the specified item to retrieve from\n the table. The attributes in the expression must be separated by commas. If no attribute\n names are specified, then all attributes of the specified item are returned. If any of\n the requested attributes are not found, they do not appear in the result.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in the\n ProjectionExpression parameter.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in the ProjectionExpression\n parameter.

" } } }, "traits": { - "smithy.api#documentation": "

Specifies an item and related attribute values to retrieve in a\n TransactGetItem object.

" + "smithy.api#documentation": "

Specifies an item and related attribute values to retrieve in a\n TransactGetItem object.

" } }, "com.amazonaws.dynamodb#GetItem": { @@ -3917,7 +3917,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The GetItem operation returns a set of attributes for the item with the given primary\n key. If there is no matching item, GetItem does not return any data and there will be no Item element in the response.

\n

\n GetItem provides an eventually consistent read by default. If your application\n requires a strongly consistent read, set ConsistentRead to true. Although\n a strongly consistent read might take more time than an eventually consistent read, it always\n returns the last updated value.

" + "smithy.api#documentation": "

The GetItem operation returns a set of attributes for the item with the\n given primary key. If there is no matching item, GetItem does not return\n any data and there will be no Item element in the response.

\n

\n GetItem provides an eventually consistent read by default. If your\n application requires a strongly consistent read, set ConsistentRead to\n true. Although a strongly consistent read might take more time than an\n eventually consistent read, it always returns the last updated value.

" } }, "com.amazonaws.dynamodb#GetItemInput": { @@ -3933,20 +3933,20 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the primary key of\n the item to retrieve.

\n

For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.

", + "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, representing the\n primary key of the item to retrieve.

\n

For the primary key, you must provide all of the attributes. For example, with a\n simple primary key, you only need to provide a value for the partition key. For a\n composite primary key, you must provide values for both the partition key and the sort\n key.

", "smithy.api#required": {} } }, "AttributesToGet": { "target": "com.amazonaws.dynamodb#AttributeNameList", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more information, see\n AttributesToGet in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more\n information, see AttributesToGet in the Amazon DynamoDB Developer\n Guide.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

Determines the read consistency model: If set to true, then the operation uses strongly consistent reads; otherwise, the operation uses eventually consistent reads.

" + "smithy.api#documentation": "

Determines the read consistency model: If set to true, then the operation\n uses strongly consistent reads; otherwise, the operation uses eventually consistent\n reads.

" } }, "ReturnConsumedCapacity": { @@ -3955,13 +3955,13 @@ "ProjectionExpression": { "target": "com.amazonaws.dynamodb#ProjectionExpression", "traits": { - "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes are returned. If any of the\n requested attributes are not found, they do not appear in the result.

\n

For more information, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These\n attributes can include scalars, sets, or elements of a JSON document. The attributes in\n the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes are returned. If any of the\n requested attributes are not found, they do not appear in the result.

\n

For more information, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -3975,7 +3975,7 @@ "Item": { "target": "com.amazonaws.dynamodb#AttributeMap", "traits": { - "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, as specified\n by ProjectionExpression.

" + "smithy.api#documentation": "

A map of attribute names to AttributeValue objects, as specified by\n ProjectionExpression.

" } }, "ConsumedCapacity": { @@ -3995,28 +3995,28 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other indexes on this table.

", + "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other\n indexes on this table.

", "smithy.api#required": {} } }, "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
", + "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more\n pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of\n an internal hash function to evenly distribute data items across partitions, based\n on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key\n value.

\n
", "smithy.api#required": {} } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

", + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

", "smithy.api#required": {} } }, "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughput", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary index.

\n

For current minimum and maximum provisioned throughput values, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary\n index.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -4038,7 +4038,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings of a global secondary index for a global table\n that will be modified.

" + "smithy.api#documentation": "

Represents the auto scaling settings of a global secondary index for a global table\n that will be modified.

" } }, "com.amazonaws.dynamodb#GlobalSecondaryIndexAutoScalingUpdateList": { @@ -4064,43 +4064,43 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
" + "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more\n pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across\n partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with\n the same partition key physically close together, in sorted order by the sort key\n value.

\n
" } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" } }, "IndexStatus": { "target": "com.amazonaws.dynamodb#IndexStatus", "traits": { - "smithy.api#documentation": "

The current state of the global secondary index:

\n " + "smithy.api#documentation": "

The current state of the global secondary index:

\n " } }, "Backfilling": { "target": "com.amazonaws.dynamodb#Backfilling", "traits": { - "smithy.api#documentation": "

Indicates whether the index is currently backfilling. Backfilling is the process of reading items from \n the table and determining whether they can be added to the index. (Not all items will qualify: For example, a partition key \n cannot have any duplicate values.) If an item can be added to the index, DynamoDB will do so. After all items have been processed, \n the backfilling operation is complete and Backfilling is false.

\n

You can delete an index that is being created during the Backfilling phase\n when IndexStatus is set to CREATING and Backfilling is true. You\n can't delete the index that is being created when IndexStatus is set to\n CREATING and Backfilling is false.

\n \n

For indexes that were created during a CreateTable operation, the Backfilling attribute does not appear in the DescribeTable output.

\n
" + "smithy.api#documentation": "

Indicates whether the index is currently backfilling. Backfilling\n is the process of reading items from the table and determining whether they can be added\n to the index. (Not all items will qualify: For example, a partition key cannot have any\n duplicate values.) If an item can be added to the index, DynamoDB will do so. After all\n items have been processed, the backfilling operation is complete and\n Backfilling is false.

\n

You can delete an index that is being created during the Backfilling\n phase when IndexStatus is set to CREATING and Backfilling is\n true. You can't delete the index that is being created when IndexStatus is\n set to CREATING and Backfilling is false.

\n \n

For indexes that were created during a CreateTable operation, the\n Backfilling attribute does not appear in the\n DescribeTable output.

\n
" } }, "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputDescription", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary index.

\n

For current minimum and maximum provisioned throughput values, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary\n index.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } }, "IndexSizeBytes": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The total size of the specified index, in bytes. DynamoDB updates this value\n approximately every six hours. Recent changes might not be reflected in this\n value.

" } }, "ItemCount": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The number of items in the specified index. DynamoDB updates this value approximately\n every six hours. Recent changes might not be reflected in this value.

" } }, "IndexArn": { @@ -4132,24 +4132,24 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
" + "smithy.api#documentation": "

The complete key schema for a global secondary index, which consists of one or more\n pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across\n partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with\n the same partition key physically close together, in sorted order by the sort key\n value.

\n
" } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into\n the global secondary index. These are in addition to the primary\n key attributes and index key attributes, which are automatically\n projected.

" + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" } }, "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughput", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary index.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary\n index.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the properties of a global secondary index for the table\n when the backup was created.

" + "smithy.api#documentation": "

Represents the properties of a global secondary index for the table when the backup\n was created.

" } }, "com.amazonaws.dynamodb#GlobalSecondaryIndexList": { @@ -4164,13 +4164,13 @@ "Update": { "target": "com.amazonaws.dynamodb#UpdateGlobalSecondaryIndexAction", "traits": { - "smithy.api#documentation": "

The name of an existing global secondary index, along with new provisioned throughput settings to be applied to that index.

" + "smithy.api#documentation": "

The name of an existing global secondary index, along with new provisioned throughput\n settings to be applied to that index.

" } }, "Create": { "target": "com.amazonaws.dynamodb#CreateGlobalSecondaryIndexAction", "traits": { - "smithy.api#documentation": "

The parameters required for creating a global secondary index on an existing table:

\n " + "smithy.api#documentation": "

The parameters required for creating a global secondary index on an existing\n table:

\n " } }, "Delete": { @@ -4181,7 +4181,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents one of the following:

\n " + "smithy.api#documentation": "

Represents one of the following:

\n " } }, "com.amazonaws.dynamodb#GlobalSecondaryIndexUpdateList": { @@ -4255,7 +4255,7 @@ "GlobalTableStatus": { "target": "com.amazonaws.dynamodb#GlobalTableStatus", "traits": { - "smithy.api#documentation": "

The current state of the global table:

\n " + "smithy.api#documentation": "

The current state of the global table:

\n " } }, "GlobalTableName": { @@ -4275,25 +4275,25 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other indexes on this table.

", + "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other\n indexes on this table.

", "smithy.api#required": {} } }, "ProvisionedWriteCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.\n

" + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.\n

" } }, "ProvisionedWriteCapacityAutoScalingSettingsUpdate": { "target": "com.amazonaws.dynamodb#AutoScalingSettingsUpdate", "traits": { - "smithy.api#documentation": "

Auto scaling settings for managing a global secondary index's write capacity\n units.

" + "smithy.api#documentation": "

Auto scaling settings for managing a global secondary index's write capacity\n units.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be modified.

" + "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be\n modified.

" } }, "com.amazonaws.dynamodb#GlobalTableGlobalSecondaryIndexSettingsUpdateList": { @@ -4357,7 +4357,7 @@ } }, "traits": { - "smithy.api#documentation": "

DynamoDB rejected the request because you retried a request with a different payload but\n with an idempotent token that was already used.

", + "smithy.api#documentation": "

DynamoDB rejected the request because you retried a request with a\n different payload but with an idempotent token that was already used.

", "smithy.api#error": "client" } }, @@ -4462,7 +4462,7 @@ } }, "traits": { - "smithy.api#documentation": "

An invalid restore time was specified. RestoreDateTime must be between EarliestRestorableDateTime and LatestRestorableDateTime.

", + "smithy.api#documentation": "

An invalid restore time was specified. RestoreDateTime must be between\n EarliestRestorableDateTime and LatestRestorableDateTime.

", "smithy.api#error": "client" } }, @@ -4481,18 +4481,18 @@ "ItemCollectionKey": { "target": "com.amazonaws.dynamodb#ItemCollectionKeyAttributeMap", "traits": { - "smithy.api#documentation": "

The partition key value of the item collection. This value is the same as the partition key value of the item.

" + "smithy.api#documentation": "

The partition key value of the item collection. This value is the same as the\n partition key value of the item.

" } }, "SizeEstimateRangeGB": { "target": "com.amazonaws.dynamodb#ItemCollectionSizeEstimateRange", "traits": { - "smithy.api#documentation": "

An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.

\n

The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" + "smithy.api#documentation": "

An estimate of item collection size, in gigabytes. This value is a two-element array\n containing a lower bound and an upper bound for the estimate. The estimate includes the\n size of all the items in the table, plus the size of all attributes projected into all\n of the local secondary indexes on that table. Use this estimate to measure whether a\n local secondary index is approaching its size limit.

\n

The estimate is subject to change over time; therefore, do not rely on the precision\n or accuracy of the estimate.

" } } }, "traits": { - "smithy.api#documentation": "

Information about item collections, if any, that were affected by the operation.\n ItemCollectionMetrics is only returned if the request asked for it. If the\n table does not have any local secondary indexes, this information is not returned in the response.

" + "smithy.api#documentation": "

Information about item collections, if any, that were affected by the operation.\n ItemCollectionMetrics is only returned if the request asked for it. If\n the table does not have any local secondary indexes, this information is not returned in\n the response.

" } }, "com.amazonaws.dynamodb#ItemCollectionMetricsMultiple": { @@ -4528,12 +4528,12 @@ "message": { "target": "com.amazonaws.dynamodb#ErrorMessage", "traits": { - "smithy.api#documentation": "

The total size of an item collection has exceeded the maximum limit of 10 gigabytes.

" + "smithy.api#documentation": "

The total size of an item collection has exceeded the maximum limit of 10\n gigabytes.

" } } }, "traits": { - "smithy.api#documentation": "

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

", + "smithy.api#documentation": "

An item collection is too large. This exception is only returned for tables that\n have one or more local secondary indexes.

", "smithy.api#error": "client" } }, @@ -4651,13 +4651,13 @@ "KeyType": { "target": "com.amazonaws.dynamodb#KeyType", "traits": { - "smithy.api#documentation": "

The role that this key attribute will assume:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
", + "smithy.api#documentation": "

The role that this key attribute will assume:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across\n partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with\n the same partition key physically close together, in sorted order by the sort key\n value.

\n
", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents a single element of a key schema. A key schema specifies the attributes\n that make up the primary key of a table, or the key attributes of an index.

\n

A KeySchemaElement represents exactly one attribute of the primary key. For example, a\n simple primary key would be represented by one KeySchemaElement (for the partition key). A composite\n primary key would require one KeySchemaElement for the partition key, and another\n KeySchemaElement for the sort key.

\n

A KeySchemaElement must be a scalar, top-level attribute (not a nested attribute). The data type must be one of String, Number, or Binary. The attribute cannot be nested within a List or a Map.

" + "smithy.api#documentation": "

Represents a single element of a key schema. A key schema\n specifies the attributes that make up the primary key of a table, or the key attributes\n of an index.

\n

A KeySchemaElement represents exactly one attribute of the primary key.\n For example, a simple primary key would be represented by one\n KeySchemaElement (for the partition key). A composite primary key would\n require one KeySchemaElement for the partition key, and another\n KeySchemaElement for the sort key.

\n

A KeySchemaElement must be a scalar, top-level attribute (not a nested\n attribute). The data type must be one of String, Number, or Binary. The attribute cannot\n be nested within a List or a Map.

" } }, "com.amazonaws.dynamodb#KeyType": { @@ -4681,37 +4681,37 @@ "Keys": { "target": "com.amazonaws.dynamodb#KeyList", "traits": { - "smithy.api#documentation": "

The primary key attribute values that define the items and the attributes associated with the items.

", + "smithy.api#documentation": "

The primary key attribute values that define the items and the attributes associated\n with the items.

", "smithy.api#required": {} } }, "AttributesToGet": { "target": "com.amazonaws.dynamodb#AttributeNameList", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more information, see\n Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more\n information, see Legacy\n Conditional Parameters in the Amazon DynamoDB Developer\n Guide.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

The consistency of a read operation. If set to true, then a strongly consistent\n read is used; otherwise, an eventually consistent read is used.

" + "smithy.api#documentation": "

The consistency of a read operation. If set to true, then a strongly\n consistent read is used; otherwise, an eventually consistent read is used.

" } }, "ProjectionExpression": { "target": "com.amazonaws.dynamodb#ProjectionExpression", "traits": { - "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars,\n sets, or elements of a JSON document. The attributes in the ProjectionExpression must be separated by\n commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

\n

For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These\n attributes can include scalars, sets, or elements of a JSON document. The attributes in\n the ProjectionExpression must be separated by commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of\n the requested attributes are not found, they will not appear in the result.

\n

For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Accessing Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } } }, "traits": { - "smithy.api#documentation": "

Represents a set of primary keys and, for each key, the attributes to retrieve from the table.

\n

For each primary key, you must provide all of the key attributes. For example, with a\n simple primary key, you only need to provide the partition key. For a composite\n primary key, you must provide both the partition key and the sort key.

" + "smithy.api#documentation": "

Represents a set of primary keys and, for each key, the attributes to retrieve from\n the table.

\n

For each primary key, you must provide all of the key attributes.\n For example, with a simple primary key, you only need to provide the partition key. For\n a composite primary key, you must provide both the partition key\n and the sort key.

" } }, "com.amazonaws.dynamodb#KinesisDataStreamDestination": { @@ -4802,7 +4802,7 @@ } }, "traits": { - "smithy.api#documentation": "

There is no limit to the number of daily on-demand backups that can be taken.

\n

Up to 50 simultaneous table operations are allowed per account. These operations\n include CreateTable, UpdateTable,\n DeleteTable,UpdateTimeToLive,\n RestoreTableFromBackup, and RestoreTableToPointInTime.

\n

The only exception is when you are creating a table with one or more secondary indexes. You can have up to \n 25 such requests running at a time; however, if the table or index specifications are complex, DynamoDB might temporarily \n reduce the number of concurrent operations.

\n

There is a soft account quota of 256 tables.

", + "smithy.api#documentation": "

There is no limit to the number of daily on-demand backups that can be taken.

\n

Up to 50 simultaneous table operations are allowed per account. These operations\n include CreateTable, UpdateTable,\n DeleteTable,UpdateTimeToLive,\n RestoreTableFromBackup, and RestoreTableToPointInTime.

\n

The only exception is when you are creating a table with one or more secondary\n indexes. You can have up to 25 such requests running at a time; however, if the table or\n index specifications are complex, DynamoDB might temporarily reduce the number\n of concurrent operations.

\n

There is a soft account quota of 256 tables.

", "smithy.api#error": "client" } }, @@ -4832,7 +4832,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

List backups associated with an AWS account. To list backups for a given table, specify\n TableName. ListBackups returns a paginated list of results\n with at most 1 MB worth of items in a page. You can also specify a maximum number of\n entries to be returned in a page.

\n

In the request, start time is inclusive, but end time is exclusive. Note that these\n boundaries are for the time at which the original backup was requested.

\n

You can call ListBackups a maximum of five times per second.

" + "smithy.api#documentation": "

List backups associated with an Amazon Web Services account. To list backups for a\n given table, specify TableName. ListBackups returns a\n paginated list of results with at most 1 MB worth of items in a page. You can also\n specify a maximum number of entries to be returned in a page.

\n

In the request, start time is inclusive, but end time is exclusive. Note that these\n boundaries are for the time at which the original backup was requested.

\n

You can call ListBackups a maximum of five times per second.

" } }, "com.amazonaws.dynamodb#ListBackupsInput": { @@ -4853,25 +4853,25 @@ "TimeRangeLowerBound": { "target": "com.amazonaws.dynamodb#TimeRangeLowerBound", "traits": { - "smithy.api#documentation": "

Only backups created after this time are listed. TimeRangeLowerBound is inclusive.

" + "smithy.api#documentation": "

Only backups created after this time are listed. TimeRangeLowerBound is\n inclusive.

" } }, "TimeRangeUpperBound": { "target": "com.amazonaws.dynamodb#TimeRangeUpperBound", "traits": { - "smithy.api#documentation": "

Only backups created before this time are listed. TimeRangeUpperBound is exclusive.

" + "smithy.api#documentation": "

Only backups created before this time are listed. TimeRangeUpperBound is\n exclusive.

" } }, "ExclusiveStartBackupArn": { "target": "com.amazonaws.dynamodb#BackupArn", "traits": { - "smithy.api#documentation": "

\n LastEvaluatedBackupArn is the Amazon Resource Name (ARN) of the backup last\n evaluated when the current page of results was returned, inclusive of the current page\n of results. This value may be specified as the ExclusiveStartBackupArn of a\n new ListBackups operation in order to fetch the next page of results.

" + "smithy.api#documentation": "

\n LastEvaluatedBackupArn is the Amazon Resource Name (ARN) of the backup last\n evaluated when the current page of results was returned, inclusive of the current page\n of results. This value may be specified as the ExclusiveStartBackupArn of a\n new ListBackups operation in order to fetch the next page of results.\n

" } }, "BackupType": { "target": "com.amazonaws.dynamodb#BackupTypeFilter", "traits": { - "smithy.api#documentation": "

The backups from the table specified by BackupType are listed.

\n

Where BackupType can be:

\n " + "smithy.api#documentation": "

The backups from the table specified by BackupType are listed.

\n

Where BackupType can be:

\n " } } } @@ -4888,7 +4888,7 @@ "LastEvaluatedBackupArn": { "target": "com.amazonaws.dynamodb#BackupArn", "traits": { - "smithy.api#documentation": "

\n The ARN of the backup last evaluated when the current page of results was returned,\n inclusive of the current page of results. This value may be specified as the\n ExclusiveStartBackupArn of a new ListBackups operation in order to fetch the next page of results.\n

\n

\n If LastEvaluatedBackupArn is empty, then the last page of results has been processed and there are no\n more results to be retrieved.\n

\n

If LastEvaluatedBackupArn is not empty, this may or may not indicate that\n there is more data to be returned. All results are guaranteed to have been returned if\n and only if no value for LastEvaluatedBackupArn is returned.

" + "smithy.api#documentation": "

The ARN of the backup last evaluated when the current page of results was returned,\n inclusive of the current page of results. This value may be specified as the\n ExclusiveStartBackupArn of a new ListBackups operation in\n order to fetch the next page of results.

\n

If LastEvaluatedBackupArn is empty, then the last page of results has\n been processed and there are no more results to be retrieved.

\n

If LastEvaluatedBackupArn is not empty, this may or may not indicate\n that there is more data to be returned. All results are guaranteed to have been returned\n if and only if no value for LastEvaluatedBackupArn is returned.

" } } } @@ -4910,7 +4910,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of ContributorInsightsSummary for a table and all its global secondary indexes.

", + "smithy.api#documentation": "

Returns a list of ContributorInsightsSummary for a table and all its global secondary\n indexes.

", "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", @@ -5061,7 +5061,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Lists all global tables that have a replica in the specified Region.

\n \n

This operation only applies to Version 2017.11.29 of global tables.

\n
" + "smithy.api#documentation": "

Lists all global tables that have a replica in the specified Region.

\n \n

This operation only applies to Version\n 2017.11.29 of global tables.

\n
" } }, "com.amazonaws.dynamodb#ListGlobalTablesInput": { @@ -5076,7 +5076,7 @@ "Limit": { "target": "com.amazonaws.dynamodb#PositiveIntegerObject", "traits": { - "smithy.api#documentation": "

The maximum number of table names to return, if the parameter is not specified DynamoDB defaults to 100.

\n

If the number of global tables DynamoDB finds reaches this limit, it stops the operation and returns the table names collected up to that point,\n with a table name in the LastEvaluatedGlobalTableName to apply in a subsequent operation to the ExclusiveStartGlobalTableName parameter.

" + "smithy.api#documentation": "

The maximum number of table names to return, if the parameter is not specified\n DynamoDB defaults to 100.

\n

If the number of global tables DynamoDB finds reaches this limit, it stops the\n operation and returns the table names collected up to that point, with a table name in\n the LastEvaluatedGlobalTableName to apply in a subsequent operation to the\n ExclusiveStartGlobalTableName parameter.

" } }, "RegionName": { @@ -5124,7 +5124,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Returns an array of table names associated with the current account and endpoint. The output\n from ListTables is paginated, with each page returning a maximum of 100 table\n names.

", + "smithy.api#documentation": "

Returns an array of table names associated with the current account and endpoint. The\n output from ListTables is paginated, with each page returning a maximum of\n 100 table names.

", "smithy.api#paginated": { "inputToken": "ExclusiveStartTableName", "outputToken": "LastEvaluatedTableName", @@ -5139,13 +5139,13 @@ "ExclusiveStartTableName": { "target": "com.amazonaws.dynamodb#TableName", "traits": { - "smithy.api#documentation": "

The first table name that this operation will evaluate. Use the value that was returned for\n LastEvaluatedTableName in a previous operation, so that you can obtain the next page\n of results.

" + "smithy.api#documentation": "

The first table name that this operation will evaluate. Use the value that was\n returned for LastEvaluatedTableName in a previous operation, so that you\n can obtain the next page of results.

" } }, "Limit": { "target": "com.amazonaws.dynamodb#ListTablesInputLimit", "traits": { - "smithy.api#documentation": "

A maximum number of table names to return. If this parameter is not specified, the limit is 100.

" + "smithy.api#documentation": "

A maximum number of table names to return. If this parameter is not specified, the\n limit is 100.

" } } }, @@ -5169,13 +5169,13 @@ "TableNames": { "target": "com.amazonaws.dynamodb#TableNameList", "traits": { - "smithy.api#documentation": "

The names of the tables associated with the current account at the current endpoint. The maximum size of this array is 100.

\n

If LastEvaluatedTableName also appears in the output, you can use this value as the\n ExclusiveStartTableName parameter in a subsequent ListTables request and\n obtain the next page of results.

" + "smithy.api#documentation": "

The names of the tables associated with the current account at the current endpoint.\n The maximum size of this array is 100.

\n

If LastEvaluatedTableName also appears in the output, you can use this\n value as the ExclusiveStartTableName parameter in a subsequent\n ListTables request and obtain the next page of results.

" } }, "LastEvaluatedTableName": { "target": "com.amazonaws.dynamodb#TableName", "traits": { - "smithy.api#documentation": "

The name of the last table in the current page of results. Use this value as the\n ExclusiveStartTableName in a new request to obtain the next page of results, until\n all the table names are returned.

\n

If you do not receive a LastEvaluatedTableName value in the response, this means that\n there are no more table names to be retrieved.

" + "smithy.api#documentation": "

The name of the last table in the current page of results. Use this value as the\n ExclusiveStartTableName in a new request to obtain the next page of\n results, until all the table names are returned.

\n

If you do not receive a LastEvaluatedTableName value in the response,\n this means that there are no more table names to be retrieved.

" } } }, @@ -5206,7 +5206,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource up to 10 times per second, per account.

\n

For an overview on tagging DynamoDB resources, see\n Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

List all tags on an Amazon DynamoDB resource. You can call ListTagsOfResource up to 10\n times per second, per account.

\n

For an overview on tagging DynamoDB resources, see Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" } }, "com.amazonaws.dynamodb#ListTagsOfResourceInput": { @@ -5215,14 +5215,14 @@ "ResourceArn": { "target": "com.amazonaws.dynamodb#ResourceArnString", "traits": { - "smithy.api#documentation": "

The Amazon DynamoDB resource with tags to be listed. This value is an Amazon Resource Name (ARN).

", + "smithy.api#documentation": "

The Amazon DynamoDB resource with tags to be listed. This value is an Amazon Resource\n Name (ARN).

", "smithy.api#required": {} } }, "NextToken": { "target": "com.amazonaws.dynamodb#NextTokenString", "traits": { - "smithy.api#documentation": "

An optional string that, if supplied, must be copied from the output of a previous\n call to ListTagOfResource. When provided in this manner, this API fetches the next page of results.

" + "smithy.api#documentation": "

An optional string that, if supplied, must be copied from the output of a previous\n call to ListTagOfResource. When provided in this manner, this API fetches the next page\n of results.

" } } } @@ -5239,7 +5239,7 @@ "NextToken": { "target": "com.amazonaws.dynamodb#NextTokenString", "traits": { - "smithy.api#documentation": "

If this value is returned, there are additional results to be displayed. To retrieve them,\n call ListTagsOfResource again, with NextToken set to this value.

" + "smithy.api#documentation": "

If this value is returned, there are additional results to be displayed. To retrieve\n them, call ListTagsOfResource again, with NextToken set to this value.

" } } } @@ -5250,21 +5250,21 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of the local secondary index. The name must be unique among all other indexes on this table.

", + "smithy.api#documentation": "

The name of the local secondary index. The name must be unique among all other indexes\n on this table.

", "smithy.api#required": {} } }, "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
", + "smithy.api#documentation": "

The complete key schema for the local secondary index, consisting of one or more pairs\n of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of\n an internal hash function to evenly distribute data items across partitions, based\n on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key\n value.

\n
", "smithy.api#required": {} } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the local\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

", + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the local\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

", "smithy.api#required": {} } } @@ -5285,25 +5285,25 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
" + "smithy.api#documentation": "

The complete key schema for the local secondary index, consisting of one or more pairs\n of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of\n an internal hash function to evenly distribute data items across partitions, based\n on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key\n value.

\n
" } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" } }, "IndexSizeBytes": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The total size of the specified index, in bytes. DynamoDB updates this value\n approximately every six hours. Recent changes might not be reflected in this\n value.

" } }, "ItemCount": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The number of items in the specified index. DynamoDB updates this value\n approximately every six hours. Recent changes might not be reflected in this\n value.

" } }, "IndexArn": { @@ -5335,18 +5335,18 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The complete key schema for a local secondary index, which consists of one or more pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash attribute. The\n term \"hash attribute\" derives from DynamoDB's usage of an internal hash function to\n evenly distribute data items across partitions, based on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key value.

\n
" + "smithy.api#documentation": "

The complete key schema for a local secondary index, which consists of one or more\n pairs of attribute names and key types:

\n \n \n

The partition key of an item is also known as its hash\n attribute. The term \"hash attribute\" derives from DynamoDB's usage of\n an internal hash function to evenly distribute data items across partitions, based\n on their partition key values.

\n

The sort key of an item is also known as its range attribute.\n The term \"range attribute\" derives from the way DynamoDB stores items with the same\n partition key physically close together, in sorted order by the sort key\n value.

\n
" } }, "Projection": { "target": "com.amazonaws.dynamodb#Projection", "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global secondary index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.

" + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into the global\n secondary index. These are in addition to the primary key attributes and index key\n attributes, which are automatically projected.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the properties of a local secondary index for the table\n when the backup was created.

" + "smithy.api#documentation": "

Represents the properties of a local secondary index for the table when the backup was\n created.

" } }, "com.amazonaws.dynamodb#LocalSecondaryIndexList": { @@ -5427,19 +5427,19 @@ "Statement": { "target": "com.amazonaws.dynamodb#PartiQLStatement", "traits": { - "smithy.api#documentation": "

\nA PartiQL statment that uses parameters.\n

", + "smithy.api#documentation": "

A PartiQL statment that uses parameters.

", "smithy.api#required": {} } }, "Parameters": { "target": "com.amazonaws.dynamodb#PreparedStatementParameters", "traits": { - "smithy.api#documentation": "

\nThe parameter values.\n

" + "smithy.api#documentation": "

The parameter values.

" } } }, "traits": { - "smithy.api#documentation": "

\nRepresents a PartiQL statment that uses parameters.\n

" + "smithy.api#documentation": "

Represents a PartiQL statment that uses parameters.

" } }, "com.amazonaws.dynamodb#ParameterizedStatements": { @@ -5496,19 +5496,19 @@ "PointInTimeRecoveryStatus": { "target": "com.amazonaws.dynamodb#PointInTimeRecoveryStatus", "traits": { - "smithy.api#documentation": "

The current state of point in time recovery:

\n " + "smithy.api#documentation": "

The current state of point in time recovery:

\n " } }, "EarliestRestorableDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

Specifies the earliest point in time you can restore your table to. You can restore your\n table to any point in time during the last 35 days.

" + "smithy.api#documentation": "

Specifies the earliest point in time you can restore your table to. You can restore\n your table to any point in time during the last 35 days.

" } }, "LatestRestorableDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

\n LatestRestorableDateTime is typically 5 minutes before the current time.\n

" + "smithy.api#documentation": "

\n LatestRestorableDateTime is typically 5 minutes before the current time.\n

" } } }, @@ -5522,7 +5522,7 @@ "PointInTimeRecoveryEnabled": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Indicates whether point in time recovery is enabled (true) or disabled (false) on the table.

", + "smithy.api#documentation": "

Indicates whether point in time recovery is enabled (true) or disabled (false) on the\n table.

", "smithy.api#required": {} } } @@ -5593,18 +5593,18 @@ "ProjectionType": { "target": "com.amazonaws.dynamodb#ProjectionType", "traits": { - "smithy.api#documentation": "

The set of attributes that are projected into the index:

\n " + "smithy.api#documentation": "

The set of attributes that are projected into the index:

\n " } }, "NonKeyAttributes": { "target": "com.amazonaws.dynamodb#NonKeyAttributeNameList", "traits": { - "smithy.api#documentation": "

Represents the non-key attribute names which will be projected into the index.

\n

For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes,\n must not exceed 20. If you project the same attribute into two\n different indexes, this counts as two distinct attributes when determining the total.

" + "smithy.api#documentation": "

Represents the non-key attribute names which will be projected into the index.

\n

For local secondary indexes, the total count of NonKeyAttributes summed\n across all of the local secondary indexes, must not exceed 20. If you project the same\n attribute into two different indexes, this counts as two distinct attributes when\n determining the total.

" } } }, "traits": { - "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.

" + "smithy.api#documentation": "

Represents attributes that are copied (projected) from the table into an index. These\n are in addition to the primary key attributes and index key attributes, which are\n automatically projected.

" } }, "com.amazonaws.dynamodb#ProjectionExpression": { @@ -5635,20 +5635,20 @@ "ReadCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.

\n

If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.

", + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB\n Developer Guide.

\n

If read/write capacity mode is PAY_PER_REQUEST the value is set to\n 0.

", "smithy.api#required": {} } }, "WriteCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.

\n

If read/write capacity mode is PAY_PER_REQUEST the value is set to 0.

", + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB\n Developer Guide.

\n

If read/write capacity mode is PAY_PER_REQUEST the value is set to\n 0.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for a specified table or index. The settings\n can be modified using the UpdateTable operation.

\n

For current minimum and maximum provisioned throughput values, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for a specified table or index. The\n settings can be modified using the UpdateTable operation.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } }, "com.amazonaws.dynamodb#ProvisionedThroughputDescription": { @@ -5669,24 +5669,24 @@ "NumberOfDecreasesToday": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The number of provisioned throughput decreases for this table during this UTC calendar day.\n For current maximums on provisioned throughput decreases, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The number of provisioned throughput decreases for this table during this UTC calendar\n day. For current maximums on provisioned throughput decreases, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

" } }, "ReadCapacityUnits": { "target": "com.amazonaws.dynamodb#NonNegativeLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a\n ThrottlingException. Eventually consistent reads require less effort than strongly\n consistent reads, so a setting of 50 ReadCapacityUnits per second provides 100\n eventually consistent ReadCapacityUnits per second.

" + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException. Eventually consistent reads require less\n effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits\n per second provides 100 eventually consistent ReadCapacityUnits per\n second.

" } }, "WriteCapacityUnits": { "target": "com.amazonaws.dynamodb#NonNegativeLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.

" + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" + "smithy.api#documentation": "

Represents the provisioned throughput settings for the table, consisting of read and\n write capacity units, along with data about increases and decreases.

" } }, "com.amazonaws.dynamodb#ProvisionedThroughputExceededException": { @@ -5700,7 +5700,7 @@ } }, "traits": { - "smithy.api#documentation": "

Your request rate is too high. The AWS SDKs for DynamoDB automatically retry requests that\n receive this exception. Your request is eventually successful, unless your retry queue is too\n large to finish. Reduce the frequency of requests and use exponential backoff. For more\n information, go to Error Retries and Exponential\n Backoff in the Amazon DynamoDB Developer Guide.

", + "smithy.api#documentation": "

Your request rate is too high. The Amazon Web Services SDKs for DynamoDB\n automatically retry requests that receive this exception. Your request is eventually\n successful, unless your retry queue is too large to finish. Reduce the frequency of\n requests and use exponential backoff. For more information, go to Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

", "smithy.api#error": "client" } }, @@ -5710,12 +5710,12 @@ "ReadCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

Replica-specific read capacity units. If not specified, uses the source table's\n read capacity settings.

" + "smithy.api#documentation": "

Replica-specific read capacity units. If not specified, uses the source table's read\n capacity settings.

" } } }, "traits": { - "smithy.api#documentation": "

Replica-specific provisioned throughput settings. If not specified, uses the\n source table's provisioned throughput settings.

" + "smithy.api#documentation": "

Replica-specific provisioned throughput settings. If not specified, uses the source\n table's provisioned throughput settings.

" } }, "com.amazonaws.dynamodb#Put": { @@ -5724,7 +5724,7 @@ "Item": { "target": "com.amazonaws.dynamodb#PutItemInputAttributeMap", "traits": { - "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key\n of the item to be written by PutItem. All of the table's primary key\n attributes must be specified, and their data types must match those of the table's\n key schema. If any attributes are present in the item that are part of an index\n key schema for the table, their types must match the index key schema.

", + "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key of the item\n to be written by PutItem. All of the table's primary key attributes must be\n specified, and their data types must match those of the table's key schema. If any\n attributes are present in the item that are part of an index key schema for the table,\n their types must match the index key schema.

", "smithy.api#required": {} } }, @@ -5738,7 +5738,7 @@ "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to succeed.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to\n succeed.

" } }, "ExpressionAttributeNames": { @@ -5756,7 +5756,7 @@ "ReturnValuesOnConditionCheckFailure": { "target": "com.amazonaws.dynamodb#ReturnValuesOnConditionCheckFailure", "traits": { - "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to\n get the item attributes if the Put condition fails.\n For ReturnValuesOnConditionCheckFailure, the valid\n values are: NONE and ALL_OLD.

" + "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n Put condition fails. For\n ReturnValuesOnConditionCheckFailure, the valid values are: NONE and\n ALL_OLD.

" } } }, @@ -5802,7 +5802,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values. You can return the item's attribute values in the same operation, using the ReturnValues parameter.

\n \n

This topic provides general information about the PutItem API.

\n

For information on how to call the PutItem API using the AWS SDK in specific languages, see the following:

\n \n
\n\n

When you add an item, the primary key attributes are the only required attributes.\n Attribute values cannot be null.

\n

Empty String and Binary attribute values are allowed. Attribute values of type String and Binary must have a length greater than zero if the attribute is used as a key attribute for a table or index.\n Set type attributes cannot be empty.

\n

Invalid Requests with empty values will\n be rejected with a ValidationException exception.

\n \n

To prevent a new item from replacing an existing item, use a conditional expression\n that contains the attribute_not_exists function with the name of the\n attribute being used as the partition key for the table. Since every record must contain\n that attribute, the attribute_not_exists function will only succeed if\n no matching item exists.

\n
\n

For more information about PutItem, see Working with Items in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Creates a new item, or replaces an old item with a new item. If an item that has the\n same primary key as the new item already exists in the specified table, the new item\n completely replaces the existing item. You can perform a conditional put operation (add\n a new item if one with the specified primary key doesn't exist), or replace an existing\n item if it has certain attribute values. You can return the item's attribute values in\n the same operation, using the ReturnValues parameter.

\n \n

This topic provides general information about the PutItem API.

\n

For information on how to call the PutItem API using the Amazon Web Services SDK in specific languages, see the following:

\n \n
\n\n

When you add an item, the primary key attributes are the only required attributes.\n Attribute values cannot be null.

\n

Empty String and Binary attribute values are allowed. Attribute values of type String\n and Binary must have a length greater than zero if the attribute is used as a key\n attribute for a table or index. Set type attributes cannot be empty.

\n

Invalid Requests with empty values will be rejected with a\n ValidationException exception.

\n \n

To prevent a new item from replacing an existing item, use a conditional\n expression that contains the attribute_not_exists function with the\n name of the attribute being used as the partition key for the table. Since every\n record must contain that attribute, the attribute_not_exists function\n will only succeed if no matching item exists.

\n
\n

For more information about PutItem, see Working with\n Items in the Amazon DynamoDB Developer Guide.

" } }, "com.amazonaws.dynamodb#PutItemInput": { @@ -5818,20 +5818,20 @@ "Item": { "target": "com.amazonaws.dynamodb#PutItemInputAttributeMap", "traits": { - "smithy.api#documentation": "

A map of attribute name/value pairs, one for each attribute. Only the primary key attributes are required; you can optionally provide other attribute name-value pairs for the item.

\n

You must provide all of the attributes for the primary key. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide both values for both the partition key and the sort key.

\n

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

\n

Empty String and Binary attribute values are allowed. Attribute values of type String and Binary must have a length greater than zero if the attribute is used as a key attribute for a table or index.

\n \n

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer\n Guide.

\n

Each element in the Item map is an AttributeValue object.

", + "smithy.api#documentation": "

A map of attribute name/value pairs, one for each attribute. Only the primary key\n attributes are required; you can optionally provide other attribute name-value pairs for\n the item.

\n

You must provide all of the attributes for the primary key. For example, with a simple\n primary key, you only need to provide a value for the partition key. For a composite\n primary key, you must provide both values for both the partition key and the sort\n key.

\n

If you specify any attributes that are part of an index key, then the data types for\n those attributes must match those of the schema in the table's attribute\n definition.

\n

Empty String and Binary attribute values are allowed. Attribute values of type String\n and Binary must have a length greater than zero if the attribute is used as a key\n attribute for a table or index.

\n\n

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer\n Guide.

\n

Each element in the Item map is an AttributeValue\n object.

", "smithy.api#required": {} } }, "Expected": { "target": "com.amazonaws.dynamodb#ExpectedAttributeMap", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n Expected in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see Expected in the Amazon DynamoDB Developer\n Guide.

" } }, "ReturnValues": { "target": "com.amazonaws.dynamodb#ReturnValue", "traits": { - "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appeared before they\n were updated with the PutItem request. For PutItem, the valid values are:

\n \n \n

The ReturnValues parameter is used by several DynamoDB operations; however,\n PutItem does not recognize any values other than NONE or\n ALL_OLD.

\n
" + "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appeared\n before they were updated with the PutItem request. For\n PutItem, the valid values are:

\n \n

The values returned are strongly consistent.

\n \n

The ReturnValues parameter is used by several DynamoDB operations;\n however, PutItem does not recognize any values other than\n NONE or ALL_OLD.

\n
" } }, "ReturnConsumedCapacity": { @@ -5840,31 +5840,31 @@ "ReturnItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ReturnItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE,\n the response includes statistics about item collections, if any, that were modified\n during the operation are returned in the response. If set to NONE (the\n default), no statistics are returned.

" } }, "ConditionalOperator": { "target": "com.amazonaws.dynamodb#ConditionalOperator", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n ConditionalOperator in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see ConditionalOperator in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional PutItem operation to\n succeed.

\n

An expression can contain any of the following:

\n \n

For more information on condition expressions, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional PutItem\n operation to succeed.

\n

An expression can contain any of the following:

\n \n

For more information on condition expressions, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeValues": { "target": "com.amazonaws.dynamodb#ExpressionAttributeValueMap", "traits": { - "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as\n follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"},\n \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -5887,7 +5887,7 @@ "Attributes": { "target": "com.amazonaws.dynamodb#AttributeMap", "traits": { - "smithy.api#documentation": "

The attribute values as they appeared before the PutItem operation, but only if\n ReturnValues is specified as ALL_OLD in the request. Each element\n consists of an attribute name and an attribute value.

" + "smithy.api#documentation": "

The attribute values as they appeared before the PutItem operation, but\n only if ReturnValues is specified as ALL_OLD in the request.\n Each element consists of an attribute name and an attribute value.

" } }, "ConsumedCapacity": { @@ -5899,7 +5899,7 @@ "ItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n PutItem operation. ItemCollectionMetrics\n is only returned if the ReturnItemCollectionMetrics parameter was specified. If the table does not have any local\n secondary indexes, this information is not returned in the response.

\n

Each ItemCollectionMetrics\n element consists of:

\n " + "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n PutItem operation. ItemCollectionMetrics is only returned\n if the ReturnItemCollectionMetrics parameter was specified. If the table\n does not have any local secondary indexes, this information is not returned in the\n response.

\n

Each ItemCollectionMetrics element consists of:

\n " } } }, @@ -5913,7 +5913,7 @@ "Item": { "target": "com.amazonaws.dynamodb#PutItemInputAttributeMap", "traits": { - "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key of an item to\n be processed by PutItem. All of the table's primary key attributes must be\n specified, and their data types must match those of the table's key schema. If any\n attributes are present in the item that are part of an index key schema for the table,\n their types must match the index key schema.

", + "smithy.api#documentation": "

A map of attribute name to attribute values, representing the primary key of an item\n to be processed by PutItem. All of the table's primary key attributes must\n be specified, and their data types must match those of the table's key schema. If any\n attributes are present in the item that are part of an index key schema for the table,\n their types must match the index key schema.

", "smithy.api#required": {} } } @@ -5951,7 +5951,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The Query operation finds items based on primary key values.\n You can query any table or secondary index that has a composite primary key (a partition\n key and a sort key).\n

\n

Use the KeyConditionExpression parameter to provide a specific value\n for the partition key. The Query operation will return all of the items\n from the table or index with that partition key value. You can optionally narrow the\n scope of the Query operation by specifying a sort key value and a\n comparison operator in KeyConditionExpression. To further refine the Query results,\n you can optionally provide a FilterExpression. A FilterExpression determines which items\n within the results should be returned to you. All of the other results are discarded.\n

\n

\n A Query operation always returns a result set. If no matching items are found,\n the result set will be empty. Queries that do not return results consume the minimum number of\n read capacity units for that type of read operation.\n

\n \n

\n DynamoDB calculates the number of read capacity units consumed based on item size,\n not on the amount of data that is returned to an application. The number of capacity\n units consumed will be the same whether you request all of the attributes (the default behavior)\n or just some of them (using a projection expression). The number will also be the same\n whether or not you use a FilterExpression.\n

\n
\n

\n Query results are always sorted by the sort key value. If the data type of the sort key is Number,\n the results are returned in numeric order; otherwise, the results are returned in order of UTF-8 bytes.\n By default, the sort order is ascending. To reverse the order, set the ScanIndexForward parameter\n to false.\n

\n

A single Query operation will read up to the maximum number of items\n set (if using the Limit parameter) or a maximum of 1 MB of data and then\n apply any filtering to the results using FilterExpression. If\n LastEvaluatedKey is present in the response, you will need to paginate\n the result set. For more information, see Paginating\n the Results in the Amazon DynamoDB Developer Guide.

\n

\n FilterExpression is applied after a Query finishes, but before\n the results are returned.\n A FilterExpression cannot contain partition key or sort key attributes.\n You need to specify those attributes in the KeyConditionExpression.\n

\n \n

\n A Query operation can return an empty result set and a LastEvaluatedKey\n if all the items read for the page of results are filtered out.\n

\n
\n

You can query a table, a local secondary index, or a global secondary index. For a\n query on a table or on a local secondary index, you can set the\n ConsistentRead parameter to true and obtain a\n strongly consistent result. Global secondary indexes support eventually consistent reads\n only, so do not specify ConsistentRead when querying a global\n secondary index.

", + "smithy.api#documentation": "

You must provide the name of the partition key attribute and a single value for that\n attribute. Query returns all items with that partition key value.\n Optionally, you can provide a sort key attribute and use a comparison operator to refine\n the search results.

\n\n

Use the KeyConditionExpression parameter to provide a specific value for\n the partition key. The Query operation will return all of the items from\n the table or index with that partition key value. You can optionally narrow the scope of\n the Query operation by specifying a sort key value and a comparison\n operator in KeyConditionExpression. To further refine the\n Query results, you can optionally provide a\n FilterExpression. A FilterExpression determines which\n items within the results should be returned to you. All of the other results are\n discarded.

\n

A Query operation always returns a result set. If no matching items are\n found, the result set will be empty. Queries that do not return results consume the\n minimum number of read capacity units for that type of read operation.

\n \n

DynamoDB calculates the number of read capacity units consumed based on item\n size, not on the amount of data that is returned to an application. The number of\n capacity units consumed will be the same whether you request all of the attributes\n (the default behavior) or just some of them (using a projection expression). The\n number will also be the same whether or not you use a FilterExpression.\n

\n
\n

\n Query results are always sorted by the sort key value. If the data type of\n the sort key is Number, the results are returned in numeric order; otherwise, the\n results are returned in order of UTF-8 bytes. By default, the sort order is ascending.\n To reverse the order, set the ScanIndexForward parameter to false.

\n

A single Query operation will read up to the maximum number of items set\n (if using the Limit parameter) or a maximum of 1 MB of data and then apply\n any filtering to the results using FilterExpression. If\n LastEvaluatedKey is present in the response, you will need to paginate\n the result set. For more information, see Paginating\n the Results in the Amazon DynamoDB Developer Guide.

\n

\n FilterExpression is applied after a Query finishes, but before\n the results are returned. A FilterExpression cannot contain partition key\n or sort key attributes. You need to specify those attributes in the\n KeyConditionExpression.

\n \n

A Query operation can return an empty result set and a\n LastEvaluatedKey if all the items read for the page of results are\n filtered out.

\n
\n

You can query a table, a local secondary index, or a global secondary index. For a\n query on a table or on a local secondary index, you can set the\n ConsistentRead parameter to true and obtain a strongly\n consistent result. Global secondary indexes support eventually consistent reads only, so\n do not specify ConsistentRead when querying a global secondary\n index.

", "smithy.api#paginated": { "inputToken": "ExclusiveStartKey", "outputToken": "LastEvaluatedKey", @@ -5976,61 +5976,61 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of an index to query. This index can be any local secondary index or global secondary index on the table. Note that\n if you use the IndexName parameter, you must also provide TableName.\n

" + "smithy.api#documentation": "

The name of an index to query. This index can be any local secondary index or global\n secondary index on the table. Note that if you use the IndexName parameter,\n you must also provide TableName.\n

" } }, "Select": { "target": "com.amazonaws.dynamodb#Select", "traits": { - "smithy.api#documentation": "

The attributes to be returned in the\n result. You can retrieve all item attributes, specific item attributes, the count of\n matching items, or in the case of an index, some or all of the attributes projected into\n the index.

\n \n

If neither Select nor AttributesToGet\n are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a\n table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot\n use both Select and AttributesToGet\n together in a single request, unless the value for Select is\n SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying\n AttributesToGet without any value for\n Select.)

\n \n

If you use the ProjectionExpression parameter, then\n the value for Select can only be\n SPECIFIC_ATTRIBUTES. Any other value for\n Select will return an error.

\n
" + "smithy.api#documentation": "

The attributes to be returned in the result. You can retrieve all item attributes,\n specific item attributes, the count of matching items, or in the case of an index, some\n or all of the attributes projected into the index.

\n \n

If neither Select nor AttributesToGet are specified,\n DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and\n ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both\n Select and AttributesToGet together in a single request,\n unless the value for Select is SPECIFIC_ATTRIBUTES. (This\n usage is equivalent to specifying AttributesToGet without any value for\n Select.)

\n \n

If you use the ProjectionExpression parameter, then the value for\n Select can only be SPECIFIC_ATTRIBUTES. Any other\n value for Select will return an error.

\n
" } }, "AttributesToGet": { "target": "com.amazonaws.dynamodb#AttributeNameList", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more information, see\n AttributesToGet in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more\n information, see AttributesToGet in the Amazon DynamoDB Developer\n Guide.

" } }, "Limit": { "target": "com.amazonaws.dynamodb#PositiveIntegerObject", "traits": { - "smithy.api#documentation": "

The maximum number of items to evaluate (not necessarily the number of matching items).\n If DynamoDB processes the number of items up to the limit while processing the results,\n it stops the operation and returns the matching values up to that point, and a key in\n LastEvaluatedKey to apply in a subsequent operation, so that you can\n pick up where you left off. Also, if the processed dataset size exceeds 1 MB before\n DynamoDB reaches this limit, it stops the operation and returns the matching values up\n to the limit, and a key in LastEvaluatedKey to apply in a subsequent\n operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

The maximum number of items to evaluate (not necessarily the number of matching\n items). If DynamoDB processes the number of items up to the limit while processing the\n results, it stops the operation and returns the matching values up to that point, and a\n key in LastEvaluatedKey to apply in a subsequent operation, so that you can\n pick up where you left off. Also, if the processed dataset size exceeds 1 MB before\n DynamoDB reaches this limit, it stops the operation and returns the matching values up\n to the limit, and a key in LastEvaluatedKey to apply in a subsequent\n operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer\n Guide.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

Determines the read consistency model: If set to true, then the operation uses strongly consistent reads; otherwise, the operation uses eventually consistent reads.

\n

Strongly consistent reads\n are not supported on global secondary indexes. If you query a global secondary index with ConsistentRead set to\n true, you will receive a ValidationException.

" + "smithy.api#documentation": "

Determines the read consistency model: If set to true, then the operation\n uses strongly consistent reads; otherwise, the operation uses eventually consistent\n reads.

\n

Strongly consistent reads are not supported on global secondary indexes. If you query\n a global secondary index with ConsistentRead set to true, you\n will receive a ValidationException.

" } }, "KeyConditions": { "target": "com.amazonaws.dynamodb#KeyConditions", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use KeyConditionExpression instead. For more information, see\n KeyConditions in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use KeyConditionExpression instead. For more\n information, see KeyConditions in the Amazon DynamoDB Developer\n Guide.

" } }, "QueryFilter": { "target": "com.amazonaws.dynamodb#FilterConditionMap", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more information, see\n QueryFilter in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more\n information, see QueryFilter in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionalOperator": { "target": "com.amazonaws.dynamodb#ConditionalOperator", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more information, see\n ConditionalOperator in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more\n information, see ConditionalOperator in the Amazon DynamoDB Developer\n Guide.

" } }, "ScanIndexForward": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Specifies the order for index traversal: If true (default), the traversal is performed in ascending order; if false, the traversal is performed in descending order.

\n

Items with the same partition key value are stored in sorted order by sort key. If the sort key data type is Number, the results are stored in numeric order. For type String, the results are stored in order of UTF-8 bytes. For type Binary, DynamoDB treats each byte of the binary data as unsigned.

\n

If ScanIndexForward is true, DynamoDB returns the results in the order in which they are stored (by sort key value). This is the default behavior. If ScanIndexForward is false, DynamoDB reads the results in reverse order by sort key value, and then returns the results to the client.

" + "smithy.api#documentation": "

Specifies the order for index traversal: If true (default), the traversal\n is performed in ascending order; if false, the traversal is performed in\n descending order.

\n

Items with the same partition key value are stored in sorted order by sort key. If the\n sort key data type is Number, the results are stored in numeric order. For type String,\n the results are stored in order of UTF-8 bytes. For type Binary, DynamoDB treats each\n byte of the binary data as unsigned.

\n

If ScanIndexForward is true, DynamoDB returns the results in\n the order in which they are stored (by sort key value). This is the default behavior. If\n ScanIndexForward is false, DynamoDB reads the results in\n reverse order by sort key value, and then returns the results to the client.

" } }, "ExclusiveStartKey": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number, or Binary. No\n set data types are allowed.

" + "smithy.api#documentation": "

The primary key of the first item that this operation will evaluate. Use the value\n that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number, or Binary. No\n set data types are allowed.

" } }, "ReturnConsumedCapacity": { @@ -6039,31 +6039,31 @@ "ProjectionExpression": { "target": "com.amazonaws.dynamodb#ProjectionExpression", "traits": { - "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

\n

For more information, see\n Accessing Item Attributes in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the table. These\n attributes can include scalars, sets, or elements of a JSON document. The attributes in\n the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of\n the requested attributes are not found, they will not appear in the result.

\n

For more information, see Accessing Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "FilterExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A string that contains conditions that DynamoDB applies after the Query operation, but\n before the data is returned to you. Items that do not satisfy the FilterExpression\n criteria are not returned.

\n

A FilterExpression does not allow key attributes. You cannot define a filter expression based on a partition key or a sort key.

\n \n

A FilterExpression is applied after the items have already been read; the process of\n filtering does not consume any additional read capacity units.

\n
\n

For more information, see Filter\n Expressions in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

A string that contains conditions that DynamoDB applies after the Query\n operation, but before the data is returned to you. Items that do not satisfy the\n FilterExpression criteria are not returned.

\n

A FilterExpression does not allow key attributes. You cannot define a\n filter expression based on a partition key or a sort key.

\n \n

A FilterExpression is applied after the items have already been read;\n the process of filtering does not consume any additional read capacity units.

\n
\n

For more information, see Filter\n Expressions in the Amazon DynamoDB Developer\n Guide.

" } }, "KeyConditionExpression": { "target": "com.amazonaws.dynamodb#KeyExpression", "traits": { - "smithy.api#documentation": "

The condition that specifies the key values for items to be retrieved by the\n Query action.

\n\n

The condition must perform an equality test on a single partition key value.

\n

The condition can optionally perform one of several comparison tests on a single\n sort key value. This allows Query to retrieve one item with a given\n partition key value and sort key value, or several items that have the same partition\n key value but different sort key values.

\n\n

The partition key equality test is required, and must be specified in the following format:

\n\n

\n partitionKeyName\n =\n :partitionkeyval\n

\n\n

If you also want to provide a condition for the sort key, it must be combined using AND with the condition\n for the sort key. Following is an example, using the = comparison operator for the sort key:

\n\n

\n partitionKeyName\n =\n :partitionkeyval\n AND\n sortKeyName\n =\n :sortkeyval\n

\n

Valid comparisons for the sort key condition are as follows:

\n \n\n

Use the ExpressionAttributeValues parameter to replace tokens such as\n :partitionval and :sortval with actual values at runtime.

\n\n

You can optionally use the ExpressionAttributeNames parameter to replace the names of\n the partition key and sort key with placeholder tokens. This option might be necessary if an attribute\n name conflicts with a DynamoDB reserved word. For example, the following\n KeyConditionExpression parameter causes an error because Size is a reserved\n word:

\n \n

To work around this, define a placeholder (such a #S) to represent the attribute\n name Size. KeyConditionExpression then is as follows:

\n \n

For a list of reserved words, see Reserved\n Words in the Amazon DynamoDB Developer Guide.

\n\n

For more information on ExpressionAttributeNames and ExpressionAttributeValues,\n see Using Placeholders for Attribute\n Names and Values in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The condition that specifies the key values for items to be retrieved by the\n Query action.

\n\n

The condition must perform an equality test on a single partition key value.

\n

The condition can optionally perform one of several comparison tests on a single sort\n key value. This allows Query to retrieve one item with a given partition\n key value and sort key value, or several items that have the same partition key value\n but different sort key values.

\n\n

The partition key equality test is required, and must be specified in the following\n format:

\n\n

\n partitionKeyName\n =\n :partitionkeyval\n

\n\n

If you also want to provide a condition for the sort key, it must be combined using\n AND with the condition for the sort key. Following is an example, using\n the = comparison operator for the sort key:

\n\n

\n partitionKeyName\n =\n :partitionkeyval\n AND\n sortKeyName\n =\n :sortkeyval\n

\n

Valid comparisons for the sort key condition are as follows:

\n \n\n

Use the ExpressionAttributeValues parameter to replace tokens such as\n :partitionval and :sortval with actual values at\n runtime.

\n\n

You can optionally use the ExpressionAttributeNames parameter to replace\n the names of the partition key and sort key with placeholder tokens. This option might\n be necessary if an attribute name conflicts with a DynamoDB reserved word. For example,\n the following KeyConditionExpression parameter causes an error because\n Size is a reserved word:

\n \n

To work around this, define a placeholder (such a #S) to represent the\n attribute name Size. KeyConditionExpression then is as\n follows:

\n \n

For a list of reserved words, see Reserved Words\n in the Amazon DynamoDB Developer Guide.

\n\n

For more information on ExpressionAttributeNames and\n ExpressionAttributeValues, see Using\n Placeholders for Attribute Names and Values in the Amazon DynamoDB\n Developer Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeValues": { "target": "com.amazonaws.dynamodb#ExpressionAttributeValueMap", "traits": { - "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to dereference an attribute value. For example, suppose that you wanted to check whether the value of the\n ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as\n follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"},\n \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Specifying Conditions in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -6077,25 +6077,25 @@ "Items": { "target": "com.amazonaws.dynamodb#ItemList", "traits": { - "smithy.api#documentation": "

An array of item attributes that match the query criteria. Each element in this array consists of an attribute name and the value for that attribute.

" + "smithy.api#documentation": "

An array of item attributes that match the query criteria. Each element in this array\n consists of an attribute name and the value for that attribute.

" } }, "Count": { "target": "com.amazonaws.dynamodb#Integer", "traits": { - "smithy.api#documentation": "

The number of items in the response.

\n

If you used a QueryFilter in the request, then Count is the number of items\n returned after the filter was applied, and ScannedCount is the number of\n matching items before the filter was applied.

\n

If you did not use a filter in the request, then Count and ScannedCount are the\n same.

" + "smithy.api#documentation": "

The number of items in the response.

\n

If you used a QueryFilter in the request, then Count is the\n number of items returned after the filter was applied, and ScannedCount is\n the number of matching items before the filter was applied.

\n

If you did not use a filter in the request, then Count and\n ScannedCount are the same.

" } }, "ScannedCount": { "target": "com.amazonaws.dynamodb#Integer", "traits": { - "smithy.api#documentation": "

The number of items evaluated, before any QueryFilter is applied. A high\n ScannedCount value with few, or no, Count results indicates an inefficient\n Query operation. For more information, see Count and ScannedCount in the\n Amazon DynamoDB Developer Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same as\n Count.

" + "smithy.api#documentation": "

The number of items evaluated, before any QueryFilter is applied. A high\n ScannedCount value with few, or no, Count results\n indicates an inefficient Query operation. For more information, see Count and\n ScannedCount in the Amazon DynamoDB Developer\n Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same\n as Count.

" } }, "LastEvaluatedKey": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" + "smithy.api#documentation": "

The primary key of the item where the operation stopped, inclusive of the previous\n result set. Use this value to start a new operation, excluding this value in the new\n request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results has been\n processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, it does not necessarily mean that there\n is more data in the result set. The only way to know when you have reached the end of\n the result set is when LastEvaluatedKey is empty.

" } }, "ConsumedCapacity": { @@ -6162,7 +6162,7 @@ "ReplicaStatus": { "target": "com.amazonaws.dynamodb#ReplicaStatus", "traits": { - "smithy.api#documentation": "

The current state of the replica:

\n " + "smithy.api#documentation": "

The current state of the replica:

\n " } } }, @@ -6189,7 +6189,7 @@ "ReplicaGlobalSecondaryIndexUpdates": { "target": "com.amazonaws.dynamodb#ReplicaGlobalSecondaryIndexAutoScalingUpdateList", "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings of global secondary indexes that will\n be modified.

" + "smithy.api#documentation": "

Represents the auto scaling settings of global secondary indexes that will be\n modified.

" } }, "ReplicaProvisionedReadCapacityAutoScalingUpdate": { @@ -6223,7 +6223,7 @@ "ReplicaStatus": { "target": "com.amazonaws.dynamodb#ReplicaStatus", "traits": { - "smithy.api#documentation": "

The current state of the replica:

\n " + "smithy.api#documentation": "

The current state of the replica:

\n " } }, "ReplicaStatusDescription": { @@ -6235,19 +6235,19 @@ "ReplicaStatusPercentProgress": { "target": "com.amazonaws.dynamodb#ReplicaStatusPercentProgress", "traits": { - "smithy.api#documentation": "

Specifies the progress of a Create, Update, or Delete action on the replica\n as a percentage.

" + "smithy.api#documentation": "

Specifies the progress of a Create, Update, or Delete action on the replica as a\n percentage.

" } }, "KMSMasterKeyId": { "target": "com.amazonaws.dynamodb#KMSMasterKeyId", "traits": { - "smithy.api#documentation": "

The AWS KMS customer master key (CMK) of the replica that will be used for AWS KMS\n encryption.

" + "smithy.api#documentation": "

The KMS key of the replica that will be used for\n KMS encryption.

" } }, "ProvisionedThroughputOverride": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputOverride", "traits": { - "smithy.api#documentation": "

Replica-specific provisioned throughput. If not described, uses the source table's\n provisioned throughput settings.

" + "smithy.api#documentation": "

Replica-specific provisioned throughput. If not described, uses the source table's\n provisioned throughput settings.

" } }, "GlobalSecondaryIndexes": { @@ -6259,7 +6259,7 @@ "ReplicaInaccessibleDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

The time at which the replica was first detected as inaccessible. To determine cause of inaccessibility check the ReplicaStatus property.

" + "smithy.api#documentation": "

The time at which the replica was first detected as inaccessible. To determine cause\n of inaccessibility check the ReplicaStatus property.

" } } }, @@ -6286,7 +6286,7 @@ "ProvisionedThroughputOverride": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputOverride", "traits": { - "smithy.api#documentation": "

Replica table GSI-specific provisioned throughput. If not specified, uses the\n source table GSI's read capacity settings.

" + "smithy.api#documentation": "

Replica table GSI-specific provisioned throughput. If not specified, uses the source\n table GSI's read capacity settings.

" } } }, @@ -6306,7 +6306,7 @@ "IndexStatus": { "target": "com.amazonaws.dynamodb#IndexStatus", "traits": { - "smithy.api#documentation": "

The current state of the replica global secondary index:

\n " + "smithy.api#documentation": "

The current state of the replica global secondary index:

\n " } }, "ProvisionedReadCapacityAutoScalingSettings": { @@ -6340,7 +6340,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings of a global secondary index for a replica\n that will be modified.

" + "smithy.api#documentation": "

Represents the auto scaling settings of a global secondary index for a replica that\n will be modified.

" } }, "com.amazonaws.dynamodb#ReplicaGlobalSecondaryIndexAutoScalingUpdateList": { @@ -6392,38 +6392,38 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other indexes on this table.

", + "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other\n indexes on this table.

", "smithy.api#required": {} } }, "IndexStatus": { "target": "com.amazonaws.dynamodb#IndexStatus", "traits": { - "smithy.api#documentation": "

\n The current status of the global secondary index:

\n " + "smithy.api#documentation": "

The current status of the global secondary index:

\n " } }, "ProvisionedReadCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException.

" + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException.

" } }, "ProvisionedReadCapacityAutoScalingSettings": { "target": "com.amazonaws.dynamodb#AutoScalingSettingsDescription", "traits": { - "smithy.api#documentation": "

Auto scaling settings for a global secondary index replica's read capacity units.

" + "smithy.api#documentation": "

Auto scaling settings for a global secondary index replica's read capacity\n units.

" } }, "ProvisionedWriteCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.

" + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.

" } }, "ProvisionedWriteCapacityAutoScalingSettings": { "target": "com.amazonaws.dynamodb#AutoScalingSettingsDescription", "traits": { - "smithy.api#documentation": "

Auto scaling settings for a global secondary index replica's write capacity\n units.

" + "smithy.api#documentation": "

Auto scaling settings for a global secondary index replica's write capacity\n units.

" } } }, @@ -6443,25 +6443,25 @@ "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other indexes on this table.

", + "smithy.api#documentation": "

The name of the global secondary index. The name must be unique among all other\n indexes on this table.

", "smithy.api#required": {} } }, "ProvisionedReadCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException.

" + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException.

" } }, "ProvisionedReadCapacityAutoScalingSettingsUpdate": { "target": "com.amazonaws.dynamodb#AutoScalingSettingsUpdate", "traits": { - "smithy.api#documentation": "

Auto scaling settings for managing a global secondary index replica's read capacity\n units.

" + "smithy.api#documentation": "

Auto scaling settings for managing a global secondary index replica's read capacity\n units.

" } } }, "traits": { - "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be modified.

" + "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be\n modified.

" } }, "com.amazonaws.dynamodb#ReplicaGlobalSecondaryIndexSettingsUpdateList": { @@ -6507,7 +6507,7 @@ "ReplicaStatus": { "target": "com.amazonaws.dynamodb#ReplicaStatus", "traits": { - "smithy.api#documentation": "

The current state of the Region:

\n " + "smithy.api#documentation": "

The current state of the Region:

\n " } }, "ReplicaBillingModeSummary": { @@ -6519,7 +6519,7 @@ "ReplicaProvisionedReadCapacityUnits": { "target": "com.amazonaws.dynamodb#NonNegativeLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException.\n For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.\n

" + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB\n Developer Guide.

" } }, "ReplicaProvisionedReadCapacityAutoScalingSettings": { @@ -6531,7 +6531,7 @@ "ReplicaProvisionedWriteCapacityUnits": { "target": "com.amazonaws.dynamodb#NonNegativeLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.\n For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB\n Developer Guide.

" } }, "ReplicaProvisionedWriteCapacityAutoScalingSettings": { @@ -6570,19 +6570,19 @@ "ReplicaProvisionedReadCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException.\n For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.\n

" + "smithy.api#documentation": "

The maximum number of strongly consistent reads consumed per second before DynamoDB\n returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB\n Developer Guide.

" } }, "ReplicaProvisionedReadCapacityAutoScalingSettingsUpdate": { "target": "com.amazonaws.dynamodb#AutoScalingSettingsUpdate", "traits": { - "smithy.api#documentation": "

Auto scaling settings for managing a global table replica's read capacity units.

" + "smithy.api#documentation": "

Auto scaling settings for managing a global table replica's read capacity\n units.

" } }, "ReplicaGlobalSecondaryIndexSettingsUpdate": { "target": "com.amazonaws.dynamodb#ReplicaGlobalSecondaryIndexSettingsUpdateList", "traits": { - "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be modified.

" + "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be\n modified.

" } } }, @@ -6660,7 +6660,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents one of the following:

\n " + "smithy.api#documentation": "

Represents one of the following:

\n " } }, "com.amazonaws.dynamodb#ReplicaUpdateList": { @@ -6692,7 +6692,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents one of the following:

\n " + "smithy.api#documentation": "

Represents one of the following:

\n " } }, "com.amazonaws.dynamodb#ReplicationGroupUpdateList": { @@ -6714,7 +6714,7 @@ } }, "traits": { - "smithy.api#documentation": "

Throughput exceeds the current throughput quota for your account. Please contact AWS Support at AWS Support to request a quota increase.

", + "smithy.api#documentation": "

Throughput exceeds the current throughput quota for your account. Please contact\n Amazon Web Services Support to request a\n quota increase.

", "smithy.api#error": "client" } }, @@ -6738,7 +6738,7 @@ } }, "traits": { - "smithy.api#documentation": "

The operation conflicts with the resource's availability. For example, you attempted to\n recreate an existing table, or tried to delete a table currently in the CREATING\n state.

", + "smithy.api#documentation": "

The operation conflicts with the resource's availability. For example, you\n attempted to recreate an existing table, or tried to delete a table currently in the\n CREATING state.

", "smithy.api#error": "client" } }, @@ -6753,7 +6753,7 @@ } }, "traits": { - "smithy.api#documentation": "

The operation tried to access a nonexistent table or index. The resource might not be specified\n correctly, or its status might not be ACTIVE.

", + "smithy.api#documentation": "

The operation tried to access a nonexistent table or index. The resource might not\n be specified correctly, or its status might not be ACTIVE.

", "smithy.api#error": "client" } }, @@ -6832,7 +6832,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Creates a new table from an existing backup. Any number of users can execute up to 4 concurrent restores\n (any type of restore) in a given account.\n

\n

You can call RestoreTableFromBackup at a maximum rate of 10 times per second.

\n

You must manually set up the following on the restored table:

\n " + "smithy.api#documentation": "

Creates a new table from an existing backup. Any number of users can execute up to 4\n concurrent restores (any type of restore) in a given account.

\n

You can call RestoreTableFromBackup at a maximum rate of 10 times per\n second.

\n

You must manually set up the following on the restored table:

\n " } }, "com.amazonaws.dynamodb#RestoreTableFromBackupInput": { @@ -6861,13 +6861,13 @@ "GlobalSecondaryIndexOverride": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

List of global secondary indexes for the restored table. The indexes\n provided should match existing secondary indexes. You can choose to exclude\n some or all of the indexes at the time of restore.

" + "smithy.api#documentation": "

List of global secondary indexes for the restored table. The indexes provided should\n match existing secondary indexes. You can choose to exclude some or all of the indexes\n at the time of restore.

" } }, "LocalSecondaryIndexOverride": { "target": "com.amazonaws.dynamodb#LocalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

List of local secondary indexes for the restored table. The indexes\n provided should match existing secondary indexes. You can choose to exclude\n some or all of the indexes at the time of restore.

" + "smithy.api#documentation": "

List of local secondary indexes for the restored table. The indexes provided should\n match existing secondary indexes. You can choose to exclude some or all of the indexes\n at the time of restore.

" } }, "ProvisionedThroughputOverride": { @@ -6933,7 +6933,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Restores the specified table to the specified point in time within\n EarliestRestorableDateTime and LatestRestorableDateTime.\n You can restore your table to any point in time during the last 35 days.\n Any number of users can execute up to 4 concurrent restores (any type of restore) in a given account.\n

\n

\n When you restore using point in time recovery, DynamoDB restores your table data to the state based on\n the selected date and time (day:hour:minute:second) to a new table.\n

\n

\n Along with data, the following are also included on the new restored table using point in time recovery:\n

\n \n\n

You must manually set up the following on the restored table:

\n " + "smithy.api#documentation": "

Restores the specified table to the specified point in time within\n EarliestRestorableDateTime and LatestRestorableDateTime.\n You can restore your table to any point in time during the last 35 days. Any number of\n users can execute up to 4 concurrent restores (any type of restore) in a given account.

\n

When you restore using point in time recovery, DynamoDB restores your table data to\n the state based on the selected date and time (day:hour:minute:second) to a new table.

\n

Along with data, the following are also included on the new restored table using\n point in time recovery:

\n \n\n

You must manually set up the following on the restored table:

\n " } }, "com.amazonaws.dynamodb#RestoreTableToPointInTimeInput": { @@ -6942,7 +6942,7 @@ "SourceTableArn": { "target": "com.amazonaws.dynamodb#TableArn", "traits": { - "smithy.api#documentation": "

The DynamoDB table that will be restored. This value is an Amazon\n Resource Name (ARN).

" + "smithy.api#documentation": "

The DynamoDB table that will be restored. This value is an Amazon Resource Name\n (ARN).

" } }, "SourceTableName": { @@ -6961,7 +6961,7 @@ "UseLatestRestorableTime": { "target": "com.amazonaws.dynamodb#BooleanObject", "traits": { - "smithy.api#documentation": "

Restore the table to the latest possible time. LatestRestorableDateTime\n is typically 5 minutes before the current time.

" + "smithy.api#documentation": "

Restore the table to the latest possible time. LatestRestorableDateTime\n is typically 5 minutes before the current time.

" } }, "RestoreDateTime": { @@ -6979,13 +6979,13 @@ "GlobalSecondaryIndexOverride": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

List of global secondary indexes for the restored table. The indexes\n provided should match existing secondary indexes. You can choose to exclude\n some or all of the indexes at the time of restore.

" + "smithy.api#documentation": "

List of global secondary indexes for the restored table. The indexes provided should\n match existing secondary indexes. You can choose to exclude some or all of the indexes\n at the time of restore.

" } }, "LocalSecondaryIndexOverride": { "target": "com.amazonaws.dynamodb#LocalSecondaryIndexList", "traits": { - "smithy.api#documentation": "

List of local secondary indexes for the restored table. The indexes\n provided should match existing secondary indexes. You can choose to exclude\n some or all of the indexes at the time of restore.

" + "smithy.api#documentation": "

List of local secondary indexes for the restored table. The indexes provided should\n match existing secondary indexes. You can choose to exclude some or all of the indexes\n at the time of restore.

" } }, "ProvisionedThroughputOverride": { @@ -7016,7 +7016,7 @@ "com.amazonaws.dynamodb#ReturnConsumedCapacity": { "type": "string", "traits": { - "smithy.api#documentation": "

Determines the level of detail about provisioned throughput consumption that is returned in the response:

\n ", + "smithy.api#documentation": "

Determines the level of detail about provisioned throughput consumption that is\n returned in the response:

\n ", "smithy.api#enum": [ { "value": "INDEXES", @@ -7129,25 +7129,25 @@ "Status": { "target": "com.amazonaws.dynamodb#SSEStatus", "traits": { - "smithy.api#documentation": "

Represents the current state of server-side encryption. The only supported values are:

\n " + "smithy.api#documentation": "

Represents the current state of server-side encryption. The only supported values\n are:

\n " } }, "SSEType": { "target": "com.amazonaws.dynamodb#SSEType", "traits": { - "smithy.api#documentation": "

Server-side encryption type. The only supported value is:

\n " + "smithy.api#documentation": "

Server-side encryption type. The only supported value is:

\n " } }, "KMSMasterKeyArn": { "target": "com.amazonaws.dynamodb#KMSMasterKeyArn", "traits": { - "smithy.api#documentation": "

The AWS KMS customer master key (CMK) ARN used for the AWS KMS encryption.

" + "smithy.api#documentation": "

The KMS key ARN used for the KMS\n encryption.

" } }, "InaccessibleEncryptionDateTime": { "target": "com.amazonaws.dynamodb#Date", "traits": { - "smithy.api#documentation": "

Indicates the time, in UNIX epoch date format, when DynamoDB detected that the table's\n AWS KMS key was inaccessible. This attribute will automatically be cleared when DynamoDB\n detects that the table's AWS KMS key is accessible again. DynamoDB will initiate the table\n archival process when table's AWS KMS key remains inaccessible for more than seven days\n from this date.

" + "smithy.api#documentation": "

Indicates the time, in UNIX epoch date format, when DynamoDB detected that\n the table's KMS key was inaccessible. This attribute will automatically\n be cleared when DynamoDB detects that the table's KMS key is accessible\n again. DynamoDB will initiate the table archival process when table's KMS key remains inaccessible for more than seven days from this date.

" } } }, @@ -7167,19 +7167,19 @@ "Enabled": { "target": "com.amazonaws.dynamodb#SSEEnabled", "traits": { - "smithy.api#documentation": "

Indicates whether server-side encryption is done using an AWS managed CMK or an AWS owned CMK. If enabled (true),\n server-side encryption type is set to KMS and an AWS managed CMK is used (AWS KMS charges apply). If disabled (false) or not specified, server-side\nencryption is set to AWS owned CMK.

" + "smithy.api#documentation": "

Indicates whether server-side encryption is done using an Amazon Web Services managed\n key or an Amazon Web Services owned key. If enabled (true), server-side encryption type\n is set to KMS and an Amazon Web Services managed key is used (KMS charges apply). If disabled (false) or not specified, server-side\n encryption is set to Amazon Web Services owned key.

" } }, "SSEType": { "target": "com.amazonaws.dynamodb#SSEType", "traits": { - "smithy.api#documentation": "

Server-side encryption type. The only supported value is:

\n " + "smithy.api#documentation": "

Server-side encryption type. The only supported value is:

\n " } }, "KMSMasterKeyId": { "target": "com.amazonaws.dynamodb#KMSMasterKeyId", "traits": { - "smithy.api#documentation": "

The AWS KMS customer master key (CMK) that should be used for the AWS KMS encryption. To\n specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note\n that you should only provide this parameter if the key is different from the default\n DynamoDB customer master key alias/aws/dynamodb.

" + "smithy.api#documentation": "

The KMS key that should be used for the KMS encryption.\n To specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN.\n Note that you should only provide this parameter if the key is different from the\n default DynamoDB key alias/aws/dynamodb.

" } } }, @@ -7277,7 +7277,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The Scan operation returns one or more items and item attributes by accessing every\n item in a table or a secondary index. To have DynamoDB return fewer items, you can provide a FilterExpression operation.

\n

If the total number of scanned items exceeds the maximum dataset size limit of 1 MB, the\n scan stops and results are returned to the user as a LastEvaluatedKey value\n to continue the scan in a subsequent operation. The results also include the number of\n items exceeding the limit. A scan can result in no table data meeting the filter\n criteria.

\n

A single Scan operation reads up to the maximum number of items set (if\n using the Limit parameter) or a maximum of 1 MB of data and then apply any\n filtering to the results using FilterExpression. If\n LastEvaluatedKey is present in the response, you need to paginate the\n result set. For more information, see Paginating the\n Results in the Amazon DynamoDB Developer Guide.

\n

\n Scan operations proceed sequentially; however, for faster performance on\n a large table or secondary index, applications can request a parallel Scan\n operation by providing the Segment and TotalSegments\n parameters. For more information, see Parallel\n Scan in the Amazon DynamoDB Developer Guide.

\n

\n Scan uses eventually consistent reads when accessing the data in a\n table; therefore, the result set might not include the changes to data in the table\n immediately before the operation began. If you need a consistent copy of the data, as of\n the time that the Scan begins, you can set the ConsistentRead\n parameter to true.

", + "smithy.api#documentation": "

The Scan operation returns one or more items and item attributes by\n accessing every item in a table or a secondary index. To have DynamoDB return fewer\n items, you can provide a FilterExpression operation.

\n

If the total number of scanned items exceeds the maximum dataset size limit of 1 MB,\n the scan stops and results are returned to the user as a LastEvaluatedKey\n value to continue the scan in a subsequent operation. The results also include the\n number of items exceeding the limit. A scan can result in no table data meeting the\n filter criteria.

\n

A single Scan operation reads up to the maximum number of items set (if\n using the Limit parameter) or a maximum of 1 MB of data and then apply any\n filtering to the results using FilterExpression. If\n LastEvaluatedKey is present in the response, you need to paginate the\n result set. For more information, see Paginating the\n Results in the Amazon DynamoDB Developer Guide.

\n

\n Scan operations proceed sequentially; however, for faster performance on\n a large table or secondary index, applications can request a parallel Scan\n operation by providing the Segment and TotalSegments\n parameters. For more information, see Parallel\n Scan in the Amazon DynamoDB Developer Guide.

\n

\n Scan uses eventually consistent reads when accessing the data in a table;\n therefore, the result set might not include the changes to data in the table immediately\n before the operation began. If you need a consistent copy of the data, as of the time\n that the Scan begins, you can set the ConsistentRead parameter\n to true.

", "smithy.api#paginated": { "inputToken": "ExclusiveStartKey", "outputToken": "LastEvaluatedKey", @@ -7295,50 +7295,50 @@ "TableName": { "target": "com.amazonaws.dynamodb#TableName", "traits": { - "smithy.api#documentation": "

The name of the table containing the requested items; or, if you provide\n IndexName, the name of the table to which that index belongs.

", + "smithy.api#documentation": "

The name of the table containing the requested items; or, if you provide\n IndexName, the name of the table to which that index belongs.

", "smithy.api#required": {} } }, "IndexName": { "target": "com.amazonaws.dynamodb#IndexName", "traits": { - "smithy.api#documentation": "

The name of a secondary index to scan. This index can be any local secondary index or global secondary index. Note that if you use the IndexName parameter, you must also provide TableName.

" + "smithy.api#documentation": "

The name of a secondary index to scan. This index can be any local secondary index or\n global secondary index. Note that if you use the IndexName parameter, you\n must also provide TableName.

" } }, "AttributesToGet": { "target": "com.amazonaws.dynamodb#AttributeNameList", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more information, see\n AttributesToGet in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ProjectionExpression instead. For more\n information, see AttributesToGet in the Amazon DynamoDB Developer\n Guide.

" } }, "Limit": { "target": "com.amazonaws.dynamodb#PositiveIntegerObject", "traits": { - "smithy.api#documentation": "

The maximum number of items to evaluate (not necessarily the number of matching items).\n If DynamoDB processes the number of items up to the limit while processing the results,\n it stops the operation and returns the matching values up to that point, and a key in\n LastEvaluatedKey to apply in a subsequent operation, so that you can\n pick up where you left off. Also, if the processed dataset size exceeds 1 MB before\n DynamoDB reaches this limit, it stops the operation and returns the matching values up\n to the limit, and a key in LastEvaluatedKey to apply in a subsequent\n operation to continue the operation. For more information, see Working with Queries in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

The maximum number of items to evaluate (not necessarily the number of matching\n items). If DynamoDB processes the number of items up to the limit while processing the\n results, it stops the operation and returns the matching values up to that point, and a\n key in LastEvaluatedKey to apply in a subsequent operation, so that you can\n pick up where you left off. Also, if the processed dataset size exceeds 1 MB before\n DynamoDB reaches this limit, it stops the operation and returns the matching values up\n to the limit, and a key in LastEvaluatedKey to apply in a subsequent\n operation to continue the operation. For more information, see Working with Queries in the Amazon DynamoDB Developer\n Guide.

" } }, "Select": { "target": "com.amazonaws.dynamodb#Select", "traits": { - "smithy.api#documentation": "

The attributes to be returned in the\n result. You can retrieve all item attributes, specific item attributes, the count of\n matching items, or in the case of an index, some or all of the attributes projected into\n the index.

\n \n

If neither Select nor AttributesToGet\n are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a\n table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot\n use both Select and AttributesToGet\n together in a single request, unless the value for Select is\n SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying\n AttributesToGet without any value for\n Select.)

\n \n

If you use the ProjectionExpression parameter, then\n the value for Select can only be\n SPECIFIC_ATTRIBUTES. Any other value for\n Select will return an error.

\n
" + "smithy.api#documentation": "

The attributes to be returned in the result. You can retrieve all item attributes,\n specific item attributes, the count of matching items, or in the case of an index, some\n or all of the attributes projected into the index.

\n \n

If neither Select nor AttributesToGet are specified,\n DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and\n ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both\n Select and AttributesToGet together in a single request,\n unless the value for Select is SPECIFIC_ATTRIBUTES. (This\n usage is equivalent to specifying AttributesToGet without any value for\n Select.)

\n \n

If you use the ProjectionExpression parameter, then the value for\n Select can only be SPECIFIC_ATTRIBUTES. Any other\n value for Select will return an error.

\n
" } }, "ScanFilter": { "target": "com.amazonaws.dynamodb#FilterConditionMap", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more information, see\n ScanFilter in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more\n information, see ScanFilter in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionalOperator": { "target": "com.amazonaws.dynamodb#ConditionalOperator", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more information, see\n ConditionalOperator in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use FilterExpression instead. For more\n information, see ConditionalOperator in the Amazon DynamoDB Developer\n Guide.

" } }, "ExclusiveStartKey": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

\n

In a parallel scan, a\n Scan request that includes ExclusiveStartKey must specify the same segment\n whose previous Scan returned the corresponding value of LastEvaluatedKey.

" + "smithy.api#documentation": "

The primary key of the first item that this operation will evaluate. Use the value\n that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number or Binary. No\n set data types are allowed.

\n

In a parallel scan, a Scan request that includes\n ExclusiveStartKey must specify the same segment whose previous\n Scan returned the corresponding value of\n LastEvaluatedKey.

" } }, "ReturnConsumedCapacity": { @@ -7347,43 +7347,43 @@ "TotalSegments": { "target": "com.amazonaws.dynamodb#ScanTotalSegments", "traits": { - "smithy.api#documentation": "

For a parallel Scan request, TotalSegments represents the total number of\n segments into which the Scan operation will be divided. The value of\n TotalSegments corresponds to the number of application workers that will perform the\n parallel scan. For example, if you want to use four application threads to scan a table or an index,\n specify a TotalSegments value of 4.

\n

The value for TotalSegments must be greater than or equal to 1, and less than or equal\n to 1000000. If you specify a TotalSegments value of 1, the Scan operation will\n be sequential rather than parallel.

\n

If you specify TotalSegments, you must also specify Segment.

" + "smithy.api#documentation": "

For a parallel Scan request, TotalSegments represents the\n total number of segments into which the Scan operation will be divided. The\n value of TotalSegments corresponds to the number of application workers\n that will perform the parallel scan. For example, if you want to use four application\n threads to scan a table or an index, specify a TotalSegments value of\n 4.

\n

The value for TotalSegments must be greater than or equal to 1, and less\n than or equal to 1000000. If you specify a TotalSegments value of 1, the\n Scan operation will be sequential rather than parallel.

\n

If you specify TotalSegments, you must also specify\n Segment.

" } }, "Segment": { "target": "com.amazonaws.dynamodb#ScanSegment", "traits": { - "smithy.api#documentation": "

For a parallel Scan request, Segment identifies an individual segment to be\n scanned by an application worker.

\n

Segment IDs are zero-based, so the first segment is always 0. For example, if you want to\n use four application threads to scan a table or an index, then the first thread specifies a Segment value\n of 0, the second thread specifies 1, and so on.

\n

The value of LastEvaluatedKey returned from a parallel Scan request must be\n used as ExclusiveStartKey with the same segment ID in a subsequent Scan\n operation.

\n

The value for Segment must be greater than or equal to 0, and less than the value\n provided for TotalSegments.

\n

If you provide Segment, you must also provide TotalSegments.

" + "smithy.api#documentation": "

For a parallel Scan request, Segment identifies an\n individual segment to be scanned by an application worker.

\n

Segment IDs are zero-based, so the first segment is always 0. For example, if you want\n to use four application threads to scan a table or an index, then the first thread\n specifies a Segment value of 0, the second thread specifies 1, and so\n on.

\n

The value of LastEvaluatedKey returned from a parallel Scan\n request must be used as ExclusiveStartKey with the same segment ID in a\n subsequent Scan operation.

\n

The value for Segment must be greater than or equal to 0, and less than\n the value provided for TotalSegments.

\n

If you provide Segment, you must also provide\n TotalSegments.

" } }, "ProjectionExpression": { "target": "com.amazonaws.dynamodb#ProjectionExpression", "traits": { - "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the specified table or index. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

\n

For more information, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

A string that identifies one or more attributes to retrieve from the specified table\n or index. These attributes can include scalars, sets, or elements of a JSON document.\n The attributes in the expression must be separated by commas.

\n

If no attribute names are specified, then all attributes will be returned. If any of\n the requested attributes are not found, they will not appear in the result.

\n

For more information, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "FilterExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A string that contains conditions that DynamoDB applies after the Scan operation, but\n before the data is returned to you. Items that do not satisfy the FilterExpression\n criteria are not returned.

\n \n

A FilterExpression is applied after the items have already been read; the process of\n filtering does not consume any additional read capacity units.

\n
\n

For more information, see\n Filter Expressions in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

A string that contains conditions that DynamoDB applies after the Scan\n operation, but before the data is returned to you. Items that do not satisfy the\n FilterExpression criteria are not returned.

\n \n

A FilterExpression is applied after the items have already been read;\n the process of filtering does not consume any additional read capacity units.

\n
\n

For more information, see Filter\n Expressions in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer Guide). To work around this, you could specify the following for ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide). To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information on expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeValues": { "target": "com.amazonaws.dynamodb#ExpressionAttributeValueMap", "traits": { - "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as\n follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"},\n \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } }, "ConsistentRead": { "target": "com.amazonaws.dynamodb#ConsistentRead", "traits": { - "smithy.api#documentation": "

A Boolean value that determines the read consistency model during the scan:

\n \n

The default setting for ConsistentRead is false.

\n

The ConsistentRead parameter is not supported on global secondary indexes. If you scan a global secondary index with ConsistentRead set to true, you will receive a ValidationException.

" + "smithy.api#documentation": "

A Boolean value that determines the read consistency model during the scan:

\n \n

The default setting for ConsistentRead is false.

\n

The ConsistentRead parameter is not supported on global secondary\n indexes. If you scan a global secondary index with ConsistentRead set to\n true, you will receive a ValidationException.

" } } }, @@ -7397,31 +7397,31 @@ "Items": { "target": "com.amazonaws.dynamodb#ItemList", "traits": { - "smithy.api#documentation": "

An array of item attributes that match the scan criteria. Each element in this array consists of an attribute name and the value for that attribute.

" + "smithy.api#documentation": "

An array of item attributes that match the scan criteria. Each element in this array\n consists of an attribute name and the value for that attribute.

" } }, "Count": { "target": "com.amazonaws.dynamodb#Integer", "traits": { - "smithy.api#documentation": "

The number of items in the response.

\n

If you set ScanFilter in the request, then Count is the number of items\n returned after the filter was applied, and ScannedCount is the number of matching items\n before the filter was applied.

\n

If you did not use a filter in the request, then Count is the same as\n ScannedCount.

" + "smithy.api#documentation": "

The number of items in the response.

\n

If you set ScanFilter in the request, then Count is the\n number of items returned after the filter was applied, and ScannedCount is\n the number of matching items before the filter was applied.

\n

If you did not use a filter in the request, then Count is the same as\n ScannedCount.

" } }, "ScannedCount": { "target": "com.amazonaws.dynamodb#Integer", "traits": { - "smithy.api#documentation": "

The number of items evaluated, before any ScanFilter is applied. A high\n ScannedCount value with few, or no, Count results indicates an inefficient\n Scan operation. For more information, see Count and ScannedCount in the\n Amazon DynamoDB Developer Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same as\n Count.

" + "smithy.api#documentation": "

The number of items evaluated, before any ScanFilter is applied. A high\n ScannedCount value with few, or no, Count results\n indicates an inefficient Scan operation. For more information, see Count and\n ScannedCount in the Amazon DynamoDB Developer\n Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same\n as Count.

" } }, "LastEvaluatedKey": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item where the operation stopped, inclusive of the previous\n result set. Use this value to start a new operation, excluding this value in the new\n request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results\n has been processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, it does not necessarily mean\n that there is more data in the result set. The only way to know when you have reached\n the end of the result set is when LastEvaluatedKey is\n empty.

" + "smithy.api#documentation": "

The primary key of the item where the operation stopped, inclusive of the previous\n result set. Use this value to start a new operation, excluding this value in the new\n request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results has been\n processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, it does not necessarily mean that there\n is more data in the result set. The only way to know when you have reached the end of\n the result set is when LastEvaluatedKey is empty.

" } }, "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacity", "traits": { - "smithy.api#documentation": "

The capacity units consumed by the Scan operation. The data returned includes the total\n provisioned throughput consumed, along with statistics for the table and any indexes involved\n in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified.\n For more information, see Provisioned\n Throughput in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The capacity units consumed by the Scan operation. The data returned\n includes the total provisioned throughput consumed, along with statistics for the table\n and any indexes involved in the operation. ConsumedCapacity is only\n returned if the ReturnConsumedCapacity parameter was specified. For more\n information, see Provisioned Throughput in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -7540,7 +7540,7 @@ "BillingMode": { "target": "com.amazonaws.dynamodb#BillingMode", "traits": { - "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage capacity. This setting can be changed later.

\n " + "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage\n capacity. This setting can be changed later.

\n " } } }, @@ -7554,13 +7554,13 @@ "LocalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#LocalSecondaryIndexes", "traits": { - "smithy.api#documentation": "

Represents the LSI properties for the table when the backup was created. It includes the IndexName, KeySchema and Projection for the LSIs on the table at the time of backup.

" + "smithy.api#documentation": "

Represents the LSI properties for the table when the backup was created. It includes\n the IndexName, KeySchema and Projection for the LSIs on the table at the time of backup.\n

" } }, "GlobalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexes", "traits": { - "smithy.api#documentation": "

Represents the GSI properties for the table when the backup was created. It includes the\n IndexName, KeySchema, Projection, and ProvisionedThroughput for the GSIs on the table at\n the time of backup.

" + "smithy.api#documentation": "

Represents the GSI properties for the table when the backup was created. It includes\n the IndexName, KeySchema, Projection, and ProvisionedThroughput for the GSIs on the\n table at the time of backup.

" } }, "StreamDescription": { @@ -7578,12 +7578,12 @@ "SSEDescription": { "target": "com.amazonaws.dynamodb#SSEDescription", "traits": { - "smithy.api#documentation": "

The description of the server-side encryption status on the table when the backup was created.

" + "smithy.api#documentation": "

The description of the server-side encryption status on the table when the backup was\n created.

" } } }, "traits": { - "smithy.api#documentation": "

Contains the details of the features enabled on the table when the backup was created. For example, LSIs, GSIs, streams, TTL.

" + "smithy.api#documentation": "

Contains the details of the features enabled on the table when the backup was created.\n For example, LSIs, GSIs, streams, TTL.

" } }, "com.amazonaws.dynamodb#StreamArn": { @@ -7607,14 +7607,14 @@ "StreamEnabled": { "target": "com.amazonaws.dynamodb#StreamEnabled", "traits": { - "smithy.api#documentation": "

Indicates whether DynamoDB Streams is enabled (true) or disabled (false) on the table.

", + "smithy.api#documentation": "

Indicates whether DynamoDB Streams is enabled (true) or disabled (false) on the\n table.

", "smithy.api#required": {} } }, "StreamViewType": { "target": "com.amazonaws.dynamodb#StreamViewType", "traits": { - "smithy.api#documentation": "

\n When an item in the table is modified, StreamViewType\n determines what information is written to the stream for this table. Valid values for\n StreamViewType are:

\n " + "smithy.api#documentation": "

When an item in the table is modified, StreamViewType determines what\n information is written to the stream for this table. Valid values for\n StreamViewType are:

\n " } } }, @@ -7684,7 +7684,7 @@ "TableStatus": { "target": "com.amazonaws.dynamodb#TableStatus", "traits": { - "smithy.api#documentation": "

The current state of the table:

\n " + "smithy.api#documentation": "

The current state of the table:

\n " } }, "Replicas": { @@ -7707,7 +7707,7 @@ "AttributeDefinitions": { "target": "com.amazonaws.dynamodb#AttributeDefinitions", "traits": { - "smithy.api#documentation": "

An array of AttributeDefinition objects. Each of these objects describes one attribute\n in the table and index key schema.

\n

Each AttributeDefinition object in this array is composed of:

\n " + "smithy.api#documentation": "

An array of AttributeDefinition objects. Each of these objects describes\n one attribute in the table and index key schema.

\n

Each AttributeDefinition object in this array is composed of:

\n " } }, "TableName": { @@ -7719,13 +7719,13 @@ "KeySchema": { "target": "com.amazonaws.dynamodb#KeySchema", "traits": { - "smithy.api#documentation": "

The primary key structure for the table. Each KeySchemaElement consists of:

\n \n

For more information about primary keys, see Primary Key in the\n Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The primary key structure for the table. Each KeySchemaElement consists\n of:

\n \n

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer\n Guide.

" } }, "TableStatus": { "target": "com.amazonaws.dynamodb#TableStatus", "traits": { - "smithy.api#documentation": "

The current state of the table:

\n " + "smithy.api#documentation": "

The current state of the table:

\n " } }, "CreationDateTime": { @@ -7737,19 +7737,19 @@ "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputDescription", "traits": { - "smithy.api#documentation": "

The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" + "smithy.api#documentation": "

The provisioned throughput settings for the table, consisting of read and write\n capacity units, along with data about increases and decreases.

" } }, "TableSizeBytes": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The total size of the specified table, in bytes. DynamoDB updates this value\n approximately every six hours. Recent changes might not be reflected in this\n value.

" } }, "ItemCount": { "target": "com.amazonaws.dynamodb#Long", "traits": { - "smithy.api#documentation": "

The number of items in the specified table. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" + "smithy.api#documentation": "

The number of items in the specified table. DynamoDB updates this value approximately\n every six hours. Recent changes might not be reflected in this value.

" } }, "TableArn": { @@ -7773,13 +7773,13 @@ "LocalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#LocalSecondaryIndexDescriptionList", "traits": { - "smithy.api#documentation": "

Represents one or more local secondary indexes on the table. Each index is scoped to a given partition key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:

\n \n

If the table is in the DELETING state, no information about indexes will be\n returned.

" + "smithy.api#documentation": "

Represents one or more local secondary indexes on the table. Each index is scoped to a\n given partition key value. Tables with one or more local secondary indexes are subject\n to an item collection size limit, where the amount of data within a given item\n collection cannot exceed 10 GB. Each element is composed of:

\n \n

If the table is in the DELETING state, no information about indexes will\n be returned.

" } }, "GlobalSecondaryIndexes": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexDescriptionList", "traits": { - "smithy.api#documentation": "

The global secondary indexes, if any, on the table. Each index is scoped to a given partition key value. Each element is composed of:

\n \n

If the table is in the DELETING state, no information about indexes will be\n returned.

" + "smithy.api#documentation": "

The global secondary indexes, if any, on the table. Each index is scoped to a given\n partition key value. Each element is composed of:

\n \n

If the table is in the DELETING state, no information about indexes will\n be returned.

" } }, "StreamSpecification": { @@ -7791,19 +7791,19 @@ "LatestStreamLabel": { "target": "com.amazonaws.dynamodb#String", "traits": { - "smithy.api#documentation": "

A timestamp, in ISO 8601 format, for this stream.

\n\n

Note that LatestStreamLabel is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:

\n " + "smithy.api#documentation": "

A timestamp, in ISO 8601 format, for this stream.

\n\n

Note that LatestStreamLabel is not a unique identifier for the stream,\n because it is possible that a stream from another table might have the same timestamp.\n However, the combination of the following three elements is guaranteed to be\n unique:

\n " } }, "LatestStreamArn": { "target": "com.amazonaws.dynamodb#StreamArn", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this table.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this\n table.

" } }, "GlobalTableVersion": { "target": "com.amazonaws.dynamodb#String", "traits": { - "smithy.api#documentation": "

Represents the version of global tables in use, if the table is replicated across AWS Regions.

" + "smithy.api#documentation": "

Represents the version of global tables\n in use, if the table is replicated across Amazon Web Services Regions.

" } }, "Replicas": { @@ -7849,7 +7849,7 @@ } }, "traits": { - "smithy.api#documentation": "

A target table with the specified name is either being created or deleted.

", + "smithy.api#documentation": "

A target table with the specified name is either being created or deleted.\n

", "smithy.api#error": "client" } }, @@ -7877,7 +7877,7 @@ } }, "traits": { - "smithy.api#documentation": "

A source table with the name TableName does not currently exist within the subscriber's account.

", + "smithy.api#documentation": "

A source table with the name TableName does not currently exist within\n the subscriber's account.

", "smithy.api#error": "client" } }, @@ -7922,7 +7922,7 @@ "Key": { "target": "com.amazonaws.dynamodb#TagKeyString", "traits": { - "smithy.api#documentation": "

The key of the tag. Tag keys are case sensitive. Each DynamoDB table can only have up to\n one tag with the same key. If you try to add an existing tag (same key), the existing\n tag value will be updated to the new value.

", + "smithy.api#documentation": "

The key of the tag. Tag keys are case sensitive. Each DynamoDB table can\n only have up to one tag with the same key. If you try to add an existing tag (same key),\n the existing tag value will be updated to the new value.

", "smithy.api#required": {} } }, @@ -7935,7 +7935,7 @@ } }, "traits": { - "smithy.api#documentation": "

Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single DynamoDB table.\n

\n

AWS-assigned tag names and values are automatically assigned the aws:\n prefix, which the user cannot assign. AWS-assigned tag names do not count towards the\n tag limit of 50. User-assigned tag names have the prefix user: in the Cost\n Allocation Report. You cannot backdate the application of a tag.

\n

For an overview on tagging DynamoDB resources, see\n Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single\n DynamoDB table.

\n

Amazon Web Services-assigned tag names and values are automatically assigned the\n aws: prefix, which the user cannot assign. Amazon Web Services-assigned\n tag names do not count towards the tag limit of 50. User-assigned tag names have the\n prefix user: in the Cost Allocation Report. You cannot backdate the\n application of a tag.

\n

For an overview on tagging DynamoDB resources, see Tagging\n for DynamoDB in the Amazon DynamoDB Developer\n Guide.

" } }, "com.amazonaws.dynamodb#TagKeyList": { @@ -7985,7 +7985,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Associate a set of tags with an Amazon DynamoDB resource. You can then activate these\n user-defined tags so that they appear on the Billing and Cost Management console for\n cost allocation tracking. You can call TagResource up to five times per second, per\n account.

\n

For an overview on tagging DynamoDB resources, see\n Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Associate a set of tags with an Amazon DynamoDB resource. You can then activate these\n user-defined tags so that they appear on the Billing and Cost Management console for\n cost allocation tracking. You can call TagResource up to five times per second, per\n account.

\n

For an overview on tagging DynamoDB resources, see Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" } }, "com.amazonaws.dynamodb#TagResourceInput": { @@ -7994,7 +7994,7 @@ "ResourceArn": { "target": "com.amazonaws.dynamodb#ResourceArnString", "traits": { - "smithy.api#documentation": "

Identifies the Amazon DynamoDB resource to which tags should be added. This value is an Amazon Resource Name (ARN).

", + "smithy.api#documentation": "

Identifies the Amazon DynamoDB resource to which tags should be added. This value is\n an Amazon Resource Name (ARN).

", "smithy.api#required": {} } }, @@ -8108,7 +8108,7 @@ "Get": { "target": "com.amazonaws.dynamodb#Get", "traits": { - "smithy.api#documentation": "

Contains the primary key that identifies the item to get, together\n with the name of the table that contains the item, and optionally\n the specific attributes of the item to retrieve.

", + "smithy.api#documentation": "

Contains the primary key that identifies the item to get, together with the name of\n the table that contains the item, and optionally the specific attributes of the item to\n retrieve.

", "smithy.api#required": {} } } @@ -8161,7 +8161,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

\n TransactGetItems is a synchronous operation that atomically retrieves\n multiple items from one or more tables (but not from indexes) in a single account and\n Region. A TransactGetItems call can contain up to 25\n TransactGetItem objects, each of which contains a Get\n structure that specifies an item to retrieve from a table in the account and Region. A\n call to TransactGetItems cannot retrieve items from tables in more than one\n AWS account or Region. The aggregate size of the items in the transaction cannot exceed\n 4 MB.

\n

DynamoDB rejects the entire TransactGetItems request if any of the following is true:

\n " + "smithy.api#documentation": "

\n TransactGetItems is a synchronous operation that atomically retrieves\n multiple items from one or more tables (but not from indexes) in a single account and\n Region. A TransactGetItems call can contain up to 25\n TransactGetItem objects, each of which contains a Get\n structure that specifies an item to retrieve from a table in the account and Region. A\n call to TransactGetItems cannot retrieve items from tables in more than one\n Amazon Web Services account or Region. The aggregate size of the items in the\n transaction cannot exceed 4 MB.

\n

DynamoDB rejects the entire TransactGetItems request if any of\n the following is true:

\n " } }, "com.amazonaws.dynamodb#TransactGetItemsInput": { @@ -8170,14 +8170,14 @@ "TransactItems": { "target": "com.amazonaws.dynamodb#TransactGetItemList", "traits": { - "smithy.api#documentation": "

An ordered array of up to 25 TransactGetItem objects,\n each of which contains a Get structure.

", + "smithy.api#documentation": "

An ordered array of up to 25 TransactGetItem objects, each of which\n contains a Get structure.

", "smithy.api#required": {} } }, "ReturnConsumedCapacity": { "target": "com.amazonaws.dynamodb#ReturnConsumedCapacity", "traits": { - "smithy.api#documentation": "

A value of TOTAL causes consumed capacity information\n to be returned, and a value of NONE prevents that information\n from being returned. No other value is valid.

" + "smithy.api#documentation": "

A value of TOTAL causes consumed capacity information to be returned, and\n a value of NONE prevents that information from being returned. No other\n value is valid.

" } } } @@ -8188,13 +8188,13 @@ "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacityMultiple", "traits": { - "smithy.api#documentation": "

If the ReturnConsumedCapacity value was TOTAL,\n this is an array of ConsumedCapacity objects, one for each table\n addressed by TransactGetItem objects in the TransactItems\n parameter. These ConsumedCapacity objects report the read-capacity\n units consumed by the TransactGetItems call in that table.

" + "smithy.api#documentation": "

If the ReturnConsumedCapacity value was TOTAL, this\n is an array of ConsumedCapacity objects, one for each table addressed by\n TransactGetItem objects in the TransactItems\n parameter. These ConsumedCapacity objects report the read-capacity units\n consumed by the TransactGetItems call in that table.

" } }, "Responses": { "target": "com.amazonaws.dynamodb#ItemResponseList", "traits": { - "smithy.api#documentation": "

An ordered array of up to 25 ItemResponse objects, each of which corresponds\n to the TransactGetItem object in the same position in the\n TransactItems array. Each ItemResponse object\n contains a Map of the name-value pairs that are the projected attributes of\n the requested item.

\n

If a requested item could not be retrieved, the corresponding ItemResponse\n object is Null, or if the requested item has no projected attributes, the corresponding\n ItemResponse object is an empty Map.

" + "smithy.api#documentation": "

An ordered array of up to 25 ItemResponse objects, each of which\n corresponds to the TransactGetItem object in the same position in the\n TransactItems array. Each ItemResponse object\n contains a Map of the name-value pairs that are the projected attributes of the\n requested item.

\n

If a requested item could not be retrieved, the corresponding\n ItemResponse object is Null, or if the requested item has no projected\n attributes, the corresponding ItemResponse object is an empty Map.

" } } } @@ -8228,7 +8228,7 @@ } }, "traits": { - "smithy.api#documentation": "

A list of requests that can perform update, put, delete, or check operations on multiple items in one or more tables atomically.

" + "smithy.api#documentation": "

A list of requests that can perform update, put, delete, or check operations on\n multiple items in one or more tables atomically.

" } }, "com.amazonaws.dynamodb#TransactWriteItemList": { @@ -8281,7 +8281,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

\n TransactWriteItems is a synchronous write operation that groups up to 25\n action requests. These actions can target items in different tables, but not in\n different AWS accounts or Regions, and no two actions can target the same item. For\n example, you cannot both ConditionCheck and Update the same\n item. The aggregate size of the items in the transaction cannot exceed 4 MB.

\n \n

The actions are completed atomically so that either all of\n them succeed, or all of them fail. They are defined by the following objects:

\n\n \n\n

DynamoDB rejects the entire TransactWriteItems request if any of the following is true:

\n " + "smithy.api#documentation": "

\n TransactWriteItems is a synchronous write operation that groups up to 25\n action requests. These actions can target items in different tables, but not in\n different Amazon Web Services accounts or Regions, and no two actions can target the same\n item. For example, you cannot both ConditionCheck and Update\n the same item. The aggregate size of the items in the transaction cannot exceed 4\n MB.

\n\n

The actions are completed atomically so that either all of them succeed, or all of\n them fail. They are defined by the following objects:

\n\n \n\n

DynamoDB rejects the entire TransactWriteItems request if any of the\n following is true:

\n " } }, "com.amazonaws.dynamodb#TransactWriteItemsInput": { @@ -8290,7 +8290,7 @@ "TransactItems": { "target": "com.amazonaws.dynamodb#TransactWriteItemList", "traits": { - "smithy.api#documentation": "

An ordered array of up to 25 TransactWriteItem objects, each of which\n contains a ConditionCheck, Put, Update, or\n Delete object. These can operate on items in different tables, but the\n tables must reside in the same AWS account and Region, and no two of them can operate on\n the same item.

", + "smithy.api#documentation": "

An ordered array of up to 25 TransactWriteItem objects, each of which\n contains a ConditionCheck, Put, Update, or\n Delete object. These can operate on items in different tables, but the\n tables must reside in the same Amazon Web Services account and Region, and no two of them\n can operate on the same item.

", "smithy.api#required": {} } }, @@ -8300,13 +8300,13 @@ "ReturnItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ReturnItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to\n SIZE, the response includes statistics about item collections (if any), that\n were modified during the operation and are returned in the response.\n If set to NONE (the default), no statistics are returned.\n

" + "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE,\n the response includes statistics about item collections (if any), that were modified\n during the operation and are returned in the response. If set to NONE (the\n default), no statistics are returned.

" } }, "ClientRequestToken": { "target": "com.amazonaws.dynamodb#ClientRequestToken", "traits": { - "smithy.api#documentation": "

Providing a ClientRequestToken makes the call to TransactWriteItems\n idempotent, meaning that multiple identical calls have the same effect as one single call.

\n

Although multiple identical calls using the same client request token produce the same\n result on the server (no side effects), the responses to the calls might not be the\n same. If the ReturnConsumedCapacity> parameter is set, then the initial\n TransactWriteItems call returns the amount of write capacity units\n consumed in making the changes. Subsequent TransactWriteItems calls with\n the same client token return the number of read capacity units consumed in reading the\n item.

\n

A client request token is valid for 10 minutes after the first request that uses it is\n completed. After 10 minutes, any request with the same client token is treated as a new\n request. Do not resubmit the same request with the same client token for more than 10\n minutes, or the result might not be idempotent.

\n

If you submit a request with the same client token but a change in other parameters\n within the 10-minute idempotency window, DynamoDB returns an\n IdempotentParameterMismatch exception.

", + "smithy.api#documentation": "

Providing a ClientRequestToken makes the call to\n TransactWriteItems idempotent, meaning that multiple identical calls\n have the same effect as one single call.

\n

Although multiple identical calls using the same client request token produce the same\n result on the server (no side effects), the responses to the calls might not be the\n same. If the ReturnConsumedCapacity> parameter is set, then the initial\n TransactWriteItems call returns the amount of write capacity units\n consumed in making the changes. Subsequent TransactWriteItems calls with\n the same client token return the number of read capacity units consumed in reading the\n item.

\n

A client request token is valid for 10 minutes after the first request that uses it is\n completed. After 10 minutes, any request with the same client token is treated as a new\n request. Do not resubmit the same request with the same client token for more than 10\n minutes, or the result might not be idempotent.

\n

If you submit a request with the same client token but a change in other parameters\n within the 10-minute idempotency window, DynamoDB returns an\n IdempotentParameterMismatch exception.

", "smithy.api#idempotencyToken": {} } } @@ -8318,7 +8318,7 @@ "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacityMultiple", "traits": { - "smithy.api#documentation": "

The capacity units consumed by the entire TransactWriteItems\n operation. The values of the list are ordered according to\n the ordering of the TransactItems request parameter.\n

" + "smithy.api#documentation": "

The capacity units consumed by the entire TransactWriteItems operation.\n The values of the list are ordered according to the ordering of the\n TransactItems request parameter.

" } }, "ItemCollectionMetrics": { @@ -8343,7 +8343,7 @@ } }, "traits": { - "smithy.api#documentation": "

The entire transaction request was canceled.

\n

DynamoDB cancels a TransactWriteItems request under the following circumstances:

\n \n\n

DynamoDB cancels a TransactGetItems request under the following circumstances:

\n \n\n \n

If using Java, DynamoDB lists the cancellation reasons on the CancellationReasons property. This property is not set for other languages.\n Transaction cancellation reasons are ordered in the order of requested items, if an item has no error it will have NONE code and Null message.

\n
\n

Cancellation reason codes and possible error messages:

\n ", + "smithy.api#documentation": "

The entire transaction request was canceled.

\n

DynamoDB cancels a TransactWriteItems request under the following\n circumstances:

\n \n\n

DynamoDB cancels a TransactGetItems request under the\n following circumstances:

\n \n\n \n

If using Java, DynamoDB lists the cancellation reasons on the\n CancellationReasons property. This property is not set for other\n languages. Transaction cancellation reasons are ordered in the order of requested\n items, if an item has no error it will have NONE code and\n Null message.

\n
\n

Cancellation reason codes and possible error messages:

\n ", "smithy.api#error": "client" } }, @@ -8355,7 +8355,7 @@ } }, "traits": { - "smithy.api#documentation": "

Operation was rejected because there is an ongoing transaction for the item.

", + "smithy.api#documentation": "

Operation was rejected because there is an ongoing transaction for the\n item.

", "smithy.api#error": "client" } }, @@ -8397,7 +8397,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Removes the association of tags from an Amazon DynamoDB resource. You can call\n UntagResource up to five times per second, per account.

\n

For an overview on tagging DynamoDB resources, see\n Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

Removes the association of tags from an Amazon DynamoDB resource. You can call\n UntagResource up to five times per second, per account.

\n

For an overview on tagging DynamoDB resources, see Tagging for DynamoDB\n in the Amazon DynamoDB Developer Guide.

" } }, "com.amazonaws.dynamodb#UntagResourceInput": { @@ -8425,14 +8425,14 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item to be updated. Each element consists of\n an attribute name and a value for that attribute.

", + "smithy.api#documentation": "

The primary key of the item to be updated. Each element consists of an attribute name\n and a value for that attribute.

", "smithy.api#required": {} } }, "UpdateExpression": { "target": "com.amazonaws.dynamodb#UpdateExpression", "traits": { - "smithy.api#documentation": "

An expression that defines one or more attributes to be updated,\n the action to be performed on them, and new value(s) for them.

", + "smithy.api#documentation": "

An expression that defines one or more attributes to be updated, the action to be\n performed on them, and new value(s) for them.

", "smithy.api#required": {} } }, @@ -8446,7 +8446,7 @@ "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to\n succeed.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to\n succeed.

" } }, "ExpressionAttributeNames": { @@ -8464,7 +8464,7 @@ "ReturnValuesOnConditionCheckFailure": { "target": "com.amazonaws.dynamodb#ReturnValuesOnConditionCheckFailure", "traits": { - "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to\n get the item attributes if the Update condition fails.\n For ReturnValuesOnConditionCheckFailure, the valid\n values are: NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.

" + "smithy.api#documentation": "

Use ReturnValuesOnConditionCheckFailure to get the item attributes if the\n Update condition fails. For\n ReturnValuesOnConditionCheckFailure, the valid values are: NONE,\n ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.

" } } }, @@ -8498,7 +8498,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

\n UpdateContinuousBackups enables or disables point in time recovery for the specified table.\n A successful UpdateContinuousBackups call returns the current ContinuousBackupsDescription.\n Continuous backups are ENABLED on all tables at table creation.\n If point in time recovery is enabled, PointInTimeRecoveryStatus will be set to ENABLED.

\n

\n Once continuous backups and point in time recovery are enabled, you can restore to any point in time within\n EarliestRestorableDateTime and LatestRestorableDateTime.\n

\n

\n LatestRestorableDateTime is typically 5 minutes before the current time.\n You can restore your table to any point in time during the last 35 days.

" + "smithy.api#documentation": "

\n UpdateContinuousBackups enables or disables point in time recovery for\n the specified table. A successful UpdateContinuousBackups call returns the\n current ContinuousBackupsDescription. Continuous backups are\n ENABLED on all tables at table creation. If point in time recovery is\n enabled, PointInTimeRecoveryStatus will be set to ENABLED.

\n

Once continuous backups and point in time recovery are enabled, you can restore to\n any point in time within EarliestRestorableDateTime and\n LatestRestorableDateTime.

\n

\n LatestRestorableDateTime is typically 5 minutes before the current time.\n You can restore your table to any point in time during the last 35 days.

" } }, "com.amazonaws.dynamodb#UpdateContinuousBackupsInput": { @@ -8526,7 +8526,7 @@ "ContinuousBackupsDescription": { "target": "com.amazonaws.dynamodb#ContinuousBackupsDescription", "traits": { - "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the table.

" + "smithy.api#documentation": "

Represents the continuous backups and point in time recovery settings on the\n table.

" } } } @@ -8548,7 +8548,7 @@ } ], "traits": { - "smithy.api#documentation": "

Updates the status for contributor insights for a specific table or index.

" + "smithy.api#documentation": "

Updates the status for contributor insights for a specific table or index. CloudWatch\n Contributor Insights for DynamoDB graphs display the partition key and (if applicable)\n sort key of frequently accessed items and frequently throttled items in plaintext. If\n you require the use of AWS Key Management Service (KMS) to encrypt this table’s\n partition key and sort key data with an AWS managed key or customer managed key, you\n should not enable CloudWatch Contributor Insights for DynamoDB for this table.

" } }, "com.amazonaws.dynamodb#UpdateContributorInsightsInput": { @@ -8615,13 +8615,13 @@ "ProvisionedThroughput": { "target": "com.amazonaws.dynamodb#ProvisionedThroughput", "traits": { - "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary index.

\n

For current minimum and maximum provisioned throughput values, see Service, Account, and Table Quotas in the Amazon DynamoDB Developer Guide.

", + "smithy.api#documentation": "

Represents the provisioned throughput settings for the specified global secondary\n index.

\n

For current minimum and maximum provisioned throughput values, see Service,\n Account, and Table Quotas in the Amazon DynamoDB Developer\n Guide.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Represents the new provisioned throughput settings to be applied to a global secondary index.

" + "smithy.api#documentation": "

Represents the new provisioned throughput settings to be applied to a global secondary\n index.

" } }, "com.amazonaws.dynamodb#UpdateGlobalTable": { @@ -8656,7 +8656,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Adds or removes replicas in the specified global table. The global table must already\n exist to be able to use this operation. Any replica to be added must be empty, have the\n same name as the global table, have the same key schema, have DynamoDB Streams enabled,\n and have the same provisioned and maximum write capacity units.

\n \n

Although you can use UpdateGlobalTable to add replicas and remove replicas in\n a single request, for simplicity we recommend that you issue separate requests for\n adding or removing replicas.

\n
\n \t

\n If global secondary indexes are specified, then the following conditions must also be met:\n

\n " + "smithy.api#documentation": "

Adds or removes replicas in the specified global table. The global table must already\n exist to be able to use this operation. Any replica to be added must be empty, have the\n same name as the global table, have the same key schema, have DynamoDB Streams enabled,\n and have the same provisioned and maximum write capacity units.

\n \n

Although you can use UpdateGlobalTable to add replicas and remove\n replicas in a single request, for simplicity we recommend that you issue separate\n requests for adding or removing replicas.

\n
\n

If global secondary indexes are specified, then the following conditions must also be\n met:

\n " } }, "com.amazonaws.dynamodb#UpdateGlobalTableInput": { @@ -8740,13 +8740,13 @@ "GlobalTableBillingMode": { "target": "com.amazonaws.dynamodb#BillingMode", "traits": { - "smithy.api#documentation": "

The billing mode of the global table. If GlobalTableBillingMode is not specified, the global table defaults to PROVISIONED capacity billing mode.

\n " + "smithy.api#documentation": "

The billing mode of the global table. If GlobalTableBillingMode is not\n specified, the global table defaults to PROVISIONED capacity billing\n mode.

\n " } }, "GlobalTableProvisionedWriteCapacityUnits": { "target": "com.amazonaws.dynamodb#PositiveLongObject", "traits": { - "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.\n

" + "smithy.api#documentation": "

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.\n

" } }, "GlobalTableProvisionedWriteCapacityAutoScalingSettingsUpdate": { @@ -8758,7 +8758,7 @@ "GlobalTableGlobalSecondaryIndexSettingsUpdate": { "target": "com.amazonaws.dynamodb#GlobalTableGlobalSecondaryIndexSettingsUpdateList", "traits": { - "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be modified.

" + "smithy.api#documentation": "

Represents the settings of a global secondary index for a global table that will be\n modified.

" } }, "ReplicaSettingsUpdate": { @@ -8824,7 +8824,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Edits an existing item's attributes, or adds a new item to the table if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update on an existing item (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).

\n

You can also return the item's attribute values in the same UpdateItem\n operation using the ReturnValues parameter.

" + "smithy.api#documentation": "

Edits an existing item's attributes, or adds a new item to the table if it does not\n already exist. You can put, delete, or add attribute values. You can also perform a\n conditional update on an existing item (insert a new attribute name-value pair if it\n doesn't exist, or replace an existing name-value pair if it has certain expected\n attribute values).

\n

You can also return the item's attribute values in the same UpdateItem\n operation using the ReturnValues parameter.

" } }, "com.amazonaws.dynamodb#UpdateItemInput": { @@ -8840,32 +8840,32 @@ "Key": { "target": "com.amazonaws.dynamodb#Key", "traits": { - "smithy.api#documentation": "

The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute.

\n

For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.

", + "smithy.api#documentation": "

The primary key of the item to be updated. Each element consists of an attribute name\n and a value for that attribute.

\n

For the primary key, you must provide all of the attributes. For example, with a\n simple primary key, you only need to provide a value for the partition key. For a\n composite primary key, you must provide values for both the partition key and the sort\n key.

", "smithy.api#required": {} } }, "AttributeUpdates": { "target": "com.amazonaws.dynamodb#AttributeUpdates", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use UpdateExpression instead. For more information, see\n AttributeUpdates in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use UpdateExpression instead. For more\n information, see AttributeUpdates in the Amazon DynamoDB Developer\n Guide.

" } }, "Expected": { "target": "com.amazonaws.dynamodb#ExpectedAttributeMap", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n Expected in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see Expected in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionalOperator": { "target": "com.amazonaws.dynamodb#ConditionalOperator", "traits": { - "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more information, see\n ConditionalOperator in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

This is a legacy parameter. Use ConditionExpression instead. For more\n information, see ConditionalOperator in the Amazon DynamoDB Developer\n Guide.

" } }, "ReturnValues": { "target": "com.amazonaws.dynamodb#ReturnValue", "traits": { - "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appear\n before or after they are updated. For UpdateItem, the valid values\n are:

\n \n

There is no additional cost associated with requesting a return value aside from the\n small network and processing overhead of receiving a larger response. No read capacity\n units are consumed.

\n

The values returned are strongly consistent.

" + "smithy.api#documentation": "

Use ReturnValues if you want to get the item attributes as they appear\n before or after they are updated. For UpdateItem, the valid values\n are:

\n \n

There is no additional cost associated with requesting a return value aside from the\n small network and processing overhead of receiving a larger response. No read capacity\n units are consumed.

\n

The values returned are strongly consistent.

" } }, "ReturnConsumedCapacity": { @@ -8874,31 +8874,31 @@ "ReturnItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ReturnItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE, the response includes statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "smithy.api#documentation": "

Determines whether item collection metrics are returned. If set to SIZE,\n the response includes statistics about item collections, if any, that were modified\n during the operation are returned in the response. If set to NONE (the\n default), no statistics are returned.

" } }, "UpdateExpression": { "target": "com.amazonaws.dynamodb#UpdateExpression", "traits": { - "smithy.api#documentation": "

An expression that defines one or more attributes to be updated, the action to be\n performed on them, and new values for them.

\n

The following action values are available for UpdateExpression.

\n \n

You can have many actions in a single expression, such as the following: SET a=:value1,\n b=:value2 DELETE :value3, :value4, :value5\n

\n

For more information on update expressions, see Modifying Items and Attributes in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

An expression that defines one or more attributes to be updated, the action to be\n performed on them, and new values for them.

\n

The following action values are available for UpdateExpression.

\n \n

You can have many actions in a single expression, such as the following: SET\n a=:value1, b=:value2 DELETE :value3, :value4, :value5\n

\n

For more information on update expressions, see Modifying\n Items and Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ConditionExpression": { "target": "com.amazonaws.dynamodb#ConditionExpression", "traits": { - "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to succeed.

\n

An expression can contain any of the following:

\n \n

For more information about condition expressions, see Specifying Conditions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

A condition that must be satisfied in order for a conditional update to\n succeed.

\n

An expression can contain any of the following:

\n \n

For more information about condition expressions, see Specifying Conditions in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeNames": { "target": "com.amazonaws.dynamodb#ExpressionAttributeNameMap", "traits": { - "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used directly\n in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide.) To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are expression attribute values, which are placeholders for the actual value at runtime.

\n
\n

For more information about expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more substitution tokens for attribute names in an expression. The following\n are some use cases for using ExpressionAttributeNames:

\n \n

Use the # character in an expression to dereference\n an attribute name. For example, consider the following attribute name:

\n \n

The name of this attribute conflicts with a reserved word, so it cannot be used\n directly in an expression. (For the complete list of reserved words, see Reserved Words in the Amazon DynamoDB Developer\n Guide.) To work around this, you could specify the following for\n ExpressionAttributeNames:

\n \n

You could then use this substitution in an expression, as in this example:

\n \n \n

Tokens that begin with the : character are\n expression attribute values, which are placeholders for the\n actual value at runtime.

\n
\n

For more information about expression attribute names, see Specifying Item Attributes in the Amazon DynamoDB Developer\n Guide.

" } }, "ExpressionAttributeValues": { "target": "com.amazonaws.dynamodb#ExpressionAttributeValueMap", "traits": { - "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" + "smithy.api#documentation": "

One or more values that can be substituted in an expression.

\n

Use the : (colon) character in an expression to\n dereference an attribute value. For example, suppose that you wanted to check whether\n the value of the ProductStatus attribute was one of the following:

\n

\n Available | Backordered | Discontinued\n

\n

You would first need to specify ExpressionAttributeValues as\n follows:

\n

\n { \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"},\n \":disc\":{\"S\":\"Discontinued\"} }\n

\n

You could then use these values in an expression, such as this:

\n

\n ProductStatus IN (:avail, :back, :disc)\n

\n

For more information on expression attribute values, see Condition Expressions in the Amazon DynamoDB Developer\n Guide.

" } } }, @@ -8918,13 +8918,13 @@ "ConsumedCapacity": { "target": "com.amazonaws.dynamodb#ConsumedCapacity", "traits": { - "smithy.api#documentation": "

The capacity units consumed by the UpdateItem operation. The data returned includes the total\n provisioned throughput consumed, along with statistics for the table and any indexes involved\n in the operation. ConsumedCapacity is only returned if the ReturnConsumedCapacity parameter was specified.\n For more information, see Provisioned\n Throughput in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The capacity units consumed by the UpdateItem operation. The data\n returned includes the total provisioned throughput consumed, along with statistics for\n the table and any indexes involved in the operation. ConsumedCapacity is\n only returned if the ReturnConsumedCapacity parameter was specified. For\n more information, see Provisioned Throughput in the Amazon DynamoDB Developer\n Guide.

" } }, "ItemCollectionMetrics": { "target": "com.amazonaws.dynamodb#ItemCollectionMetrics", "traits": { - "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n UpdateItem operation.\n ItemCollectionMetrics is only returned if the ReturnItemCollectionMetrics parameter was specified. If the table\n does not have any local secondary indexes, this information is not\n returned in the response.

\n

Each ItemCollectionMetrics\n element consists of:

\n " + "smithy.api#documentation": "

Information about item collections, if any, that were affected by the\n UpdateItem operation. ItemCollectionMetrics is only\n returned if the ReturnItemCollectionMetrics parameter was specified. If the\n table does not have any local secondary indexes, this information is not returned in the\n response.

\n

Each ItemCollectionMetrics element consists of:

\n " } } }, @@ -8945,13 +8945,13 @@ "KMSMasterKeyId": { "target": "com.amazonaws.dynamodb#KMSMasterKeyId", "traits": { - "smithy.api#documentation": "

The AWS KMS customer master key (CMK) of the replica that should be used for AWS KMS encryption.\n To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias\n ARN. Note that you should only provide this parameter if the key is different from\n the default DynamoDB KMS master key alias/aws/dynamodb.

" + "smithy.api#documentation": "

The KMS key of the replica that should be used\n for KMS encryption. To specify a key, use its key ID, Amazon Resource\n Name (ARN), alias name, or alias ARN. Note that you should only provide this parameter\n if the key is different from the default DynamoDB KMS key\n alias/aws/dynamodb.

" } }, "ProvisionedThroughputOverride": { "target": "com.amazonaws.dynamodb#ProvisionedThroughputOverride", "traits": { - "smithy.api#documentation": "

Replica-specific provisioned throughput. If not specified, uses the source table's\n provisioned throughput settings.

" + "smithy.api#documentation": "

Replica-specific provisioned throughput. If not specified, uses the source table's\n provisioned throughput settings.

" } }, "GlobalSecondaryIndexes": { @@ -8994,7 +8994,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB Streams settings for a given table.

\n

You can only perform one of the following operations at once:

\n \n

\n UpdateTable is an asynchronous operation; while it is executing, the table status\n changes from ACTIVE to UPDATING. While it is UPDATING,\n you cannot issue another UpdateTable request. When the table returns to the\n ACTIVE state, the UpdateTable operation is complete.

" + "smithy.api#documentation": "

Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB\n Streams settings for a given table.

\n

You can only perform one of the following operations at once:

\n \n

\n UpdateTable is an asynchronous operation; while it is executing, the table\n status changes from ACTIVE to UPDATING. While it is\n UPDATING, you cannot issue another UpdateTable request.\n When the table returns to the ACTIVE state, the UpdateTable\n operation is complete.

" } }, "com.amazonaws.dynamodb#UpdateTableInput": { @@ -9003,7 +9003,7 @@ "AttributeDefinitions": { "target": "com.amazonaws.dynamodb#AttributeDefinitions", "traits": { - "smithy.api#documentation": "

An array of attributes that describe the key schema for the table and indexes. If you are adding a new global secondary index to the table, AttributeDefinitions must include the key element(s) of the new index.

" + "smithy.api#documentation": "

An array of attributes that describe the key schema for the table and indexes. If you\n are adding a new global secondary index to the table, AttributeDefinitions\n must include the key element(s) of the new index.

" } }, "TableName": { @@ -9016,7 +9016,7 @@ "BillingMode": { "target": "com.amazonaws.dynamodb#BillingMode", "traits": { - "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage capacity. \n When switching from pay-per-request to provisioned capacity, initial provisioned capacity values must be set. The initial\n provisioned capacity values are estimated based on the consumed read and write capacity of your table and global secondary indexes \n over the past 30 minutes.

\n " + "smithy.api#documentation": "

Controls how you are charged for read and write throughput and how you manage\n capacity. When switching from pay-per-request to provisioned capacity, initial\n provisioned capacity values must be set. The initial provisioned capacity values are\n estimated based on the consumed read and write capacity of your table and global\n secondary indexes over the past 30 minutes.

\n " } }, "ProvisionedThroughput": { @@ -9028,13 +9028,13 @@ "GlobalSecondaryIndexUpdates": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexUpdateList", "traits": { - "smithy.api#documentation": "

An array of one or more global secondary indexes for the table. For each index in the array, you can request one action:

\n \n

You can create or delete only one global secondary index per UpdateTable operation.

\n

For more information, see Managing Global Secondary\n Indexes in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

An array of one or more global secondary indexes for the table. For each index in the\n array, you can request one action:

\n \n

You can create or delete only one global secondary index per UpdateTable\n operation.

\n

For more information, see Managing Global\n Secondary Indexes in the Amazon DynamoDB Developer\n Guide.

" } }, "StreamSpecification": { "target": "com.amazonaws.dynamodb#StreamSpecification", "traits": { - "smithy.api#documentation": "

Represents the DynamoDB Streams configuration for the table.

\n \n

You receive a ResourceInUseException if you try to enable a stream on a\n table that already has a stream, or if you try to disable a stream on a table that\n doesn't have a stream.

\n
" + "smithy.api#documentation": "

Represents the DynamoDB Streams configuration for the table.

\n \n

You receive a ResourceInUseException if you try to enable a stream on\n a table that already has a stream, or if you try to disable a stream on a table that\n doesn't have a stream.

\n
" } }, "SSESpecification": { @@ -9046,7 +9046,7 @@ "ReplicaUpdates": { "target": "com.amazonaws.dynamodb#ReplicationGroupUpdateList", "traits": { - "smithy.api#documentation": "

A list of replica update actions (create, delete, or update) for the table.

\n \n

This property only applies to Version 2019.11.21 of global tables.

\n
" + "smithy.api#documentation": "

A list of replica update actions (create, delete, or update) for the table.

\n \n

This property only applies to Version\n 2019.11.21 of global tables.

\n
" } } }, @@ -9091,7 +9091,7 @@ } ], "traits": { - "smithy.api#documentation": "

Updates auto scaling settings on your global tables at once.

\n \n

This operation only applies to Version 2019.11.21 of global tables.

\n
" + "smithy.api#documentation": "

Updates auto scaling settings on your global tables at once.

\n \n

This operation only applies to Version\n 2019.11.21 of global tables.

\n
" } }, "com.amazonaws.dynamodb#UpdateTableReplicaAutoScalingInput": { @@ -9100,7 +9100,7 @@ "GlobalSecondaryIndexUpdates": { "target": "com.amazonaws.dynamodb#GlobalSecondaryIndexAutoScalingUpdateList", "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings of the global secondary indexes of the replica\n to be updated.

" + "smithy.api#documentation": "

Represents the auto scaling settings of the global secondary indexes of the replica to\n be updated.

" } }, "TableName": { @@ -9116,7 +9116,7 @@ "ReplicaUpdates": { "target": "com.amazonaws.dynamodb#ReplicaAutoScalingUpdateList", "traits": { - "smithy.api#documentation": "

Represents the auto scaling settings of replicas of the table that will be\n modified.

" + "smithy.api#documentation": "

Represents the auto scaling settings of replicas of the table that will be\n modified.

" } } } @@ -9161,7 +9161,7 @@ "aws.api#clientDiscoveredEndpoint": { "required": false }, - "smithy.api#documentation": "

The UpdateTimeToLive method enables or disables Time to Live (TTL) for the\n specified table. A successful UpdateTimeToLive call returns the current\n TimeToLiveSpecification. It can take up to one hour for the change to\n fully process. Any additional UpdateTimeToLive calls for the same table\n during this one hour duration result in a ValidationException.

\n

TTL compares the current time in epoch time format to the time stored in the TTL\n attribute of an item. If the epoch time value stored in the attribute is less than the\n current time, the item is marked as expired and subsequently deleted.

\n \n

The epoch time format is the number of seconds elapsed since 12:00:00 AM January 1,\n 1970 UTC.

\n
\n

DynamoDB deletes expired items on a best-effort basis to ensure availability of\n throughput for other data operations.\n

\n \n

DynamoDB typically deletes expired items within two days of expiration. The exact duration\n within which an item gets deleted after expiration is specific to the\n nature of the workload. Items that have expired and not been deleted will still show up in reads,\n queries, and scans.

\n
\n

As items are deleted, they are removed from any local secondary index and global\n secondary index immediately in the same eventually consistent way as a standard delete\n operation.

\n

For more information, see Time To Live in the Amazon DynamoDB Developer Guide.

" + "smithy.api#documentation": "

The UpdateTimeToLive method enables or disables Time to Live (TTL) for\n the specified table. A successful UpdateTimeToLive call returns the current\n TimeToLiveSpecification. It can take up to one hour for the change to\n fully process. Any additional UpdateTimeToLive calls for the same table\n during this one hour duration result in a ValidationException.

\n

TTL compares the current time in epoch time format to the time stored in the TTL\n attribute of an item. If the epoch time value stored in the attribute is less than the\n current time, the item is marked as expired and subsequently deleted.

\n \n

The epoch time format is the number of seconds elapsed since 12:00:00 AM January\n 1, 1970 UTC.

\n
\n

DynamoDB deletes expired items on a best-effort basis to ensure availability of\n throughput for other data operations.

\n \n

DynamoDB typically deletes expired items within two days of expiration. The exact\n duration within which an item gets deleted after expiration is specific to the\n nature of the workload. Items that have expired and not been deleted will still show\n up in reads, queries, and scans.

\n
\n

As items are deleted, they are removed from any local secondary index and global\n secondary index immediately in the same eventually consistent way as a standard delete\n operation.

\n

For more information, see Time To Live in the\n Amazon DynamoDB Developer Guide.

" } }, "com.amazonaws.dynamodb#UpdateTimeToLiveInput": { @@ -9177,7 +9177,7 @@ "TimeToLiveSpecification": { "target": "com.amazonaws.dynamodb#TimeToLiveSpecification", "traits": { - "smithy.api#documentation": "

Represents the settings used to enable or disable Time to Live for the specified table.

", + "smithy.api#documentation": "

Represents the settings used to enable or disable Time to Live for the specified\n table.

", "smithy.api#required": {} } } @@ -9214,7 +9214,7 @@ } }, "traits": { - "smithy.api#documentation": "

Represents an operation to perform - either DeleteItem or\n PutItem. You can only request one of these operations, not both, in a\n single WriteRequest. If you do need to perform both of these operations, you\n need to provide two separate WriteRequest objects.

" + "smithy.api#documentation": "

Represents an operation to perform - either DeleteItem or\n PutItem. You can only request one of these operations, not both, in a\n single WriteRequest. If you do need to perform both of these operations,\n you need to provide two separate WriteRequest objects.

" } }, "com.amazonaws.dynamodb#WriteRequests": { diff --git a/codegen/sdk-codegen/aws-models/ec2.2016-11-15.json b/codegen/sdk-codegen/aws-models/ec2.2016-11-15.json index c1be42497de..a955efbc6ea 100644 --- a/codegen/sdk-codegen/aws-models/ec2.2016-11-15.json +++ b/codegen/sdk-codegen/aws-models/ec2.2016-11-15.json @@ -9256,6 +9256,9 @@ } } }, + "com.amazonaws.ec2#CoreNetworkArn": { + "type": "string" + }, "com.amazonaws.ec2#CpuManufacturer": { "type": "string", "traits": { @@ -12227,6 +12230,9 @@ "smithy.api#documentation": "

The ID of a VPC peering connection.

", "smithy.api#xmlName": "vpcPeeringConnectionId" } + }, + "CoreNetworkArn": { + "target": "com.amazonaws.ec2#CoreNetworkArn" } } }, @@ -33661,6 +33667,10 @@ { "value": "launch", "name": "LAUNCH" + }, + { + "value": "launch-before-terminate", + "name": "LAUNCH_BEFORE_TERMINATE" } ] } @@ -33681,9 +33691,17 @@ "target": "com.amazonaws.ec2#FleetReplacementStrategy", "traits": { "aws.protocols#ec2QueryName": "ReplacementStrategy", - "smithy.api#documentation": "

To allow EC2 Fleet to launch a replacement Spot Instance when an instance rebalance\n notification is emitted for an existing Spot Instance in the fleet, specify\n launch. Only available for fleets of type maintain.

\n \n

When a replacement instance is launched, the instance marked for rebalance is not\n automatically terminated. You can terminate it, or you can leave it running. You are charged for both instances while they are running.

\n
", + "smithy.api#documentation": "

The replacement strategy to use. Only available for fleets of type\n maintain.

\n

\n launch - EC2 Fleet launches a new replacement Spot Instance when a\n rebalance notification is emitted for an existing Spot Instance in the fleet. EC2 Fleet\n does not terminate the instances that receive a rebalance notification. You can terminate\n the old instances, or you can leave them running. You are charged for all instances while\n they are running.

\n

\n launch-before-terminate - EC2 Fleet launches a new replacement Spot\n Instance when a rebalance notification is emitted for an existing Spot Instance in the\n fleet, and then, after a delay that you specify (in TerminationDelay),\n terminates the instances that received a rebalance notification.

", "smithy.api#xmlName": "replacementStrategy" } + }, + "TerminationDelay": { + "target": "com.amazonaws.ec2#Integer", + "traits": { + "aws.protocols#ec2QueryName": "TerminationDelay", + "smithy.api#documentation": "

The amount of time (in seconds) that Amazon EC2 waits before terminating the old Spot\n Instance after launching a new replacement Spot Instance.

", + "smithy.api#xmlName": "terminationDelay" + } } }, "traits": { @@ -33696,12 +33714,18 @@ "ReplacementStrategy": { "target": "com.amazonaws.ec2#FleetReplacementStrategy", "traits": { - "smithy.api#documentation": "

The replacement strategy to use. Only available for fleets of type\n maintain.

\n

To allow EC2 Fleet to launch a replacement Spot Instance when an instance rebalance\n notification is emitted for an existing Spot Instance in the fleet, specify\n launch. You must specify a value, otherwise you get an error.

\n \n

When a replacement instance is launched, the instance marked for rebalance is not\n automatically terminated. You can terminate it, or you can leave it running. You are charged for all instances while they are running.

\n
" + "smithy.api#documentation": "

The replacement strategy to use. Only available for fleets of type\n maintain.

\n

\n launch - EC2 Fleet launches a replacement Spot Instance when a rebalance\n notification is emitted for an existing Spot Instance in the fleet. EC2 Fleet does not\n terminate the instances that receive a rebalance notification. You can terminate the old\n instances, or you can leave them running. You are charged for all instances while they are\n running.

\n

\n launch-before-terminate - EC2 Fleet launches a replacement Spot Instance\n when a rebalance notification is emitted for an existing Spot Instance in the fleet, and\n then, after a delay that you specify (in TerminationDelay), terminates the\n instances that received a rebalance notification.

" + } + }, + "TerminationDelay": { + "target": "com.amazonaws.ec2#Integer", + "traits": { + "smithy.api#documentation": "

The amount of time (in seconds) that Amazon EC2 waits before terminating the old Spot\n Instance after launching a new replacement Spot Instance.

" } } }, "traits": { - "smithy.api#documentation": "

The Spot Instance replacement strategy to use when Amazon EC2 emits a signal that your\n Spot Instance is at an elevated risk of being interrupted. For more information, see\n Capacity rebalancing in the Amazon EC2 User Guide.

" + "smithy.api#documentation": "

The Spot Instance replacement strategy to use when Amazon EC2 emits a rebalance\n notification signal that your Spot Instance is at an elevated risk of being interrupted.\n For more information, see Capacity rebalancing in the Amazon EC2 User Guide.

" } }, "com.amazonaws.ec2#FleetSpotMaintenanceStrategies": { @@ -34358,6 +34382,29 @@ } } }, + "com.amazonaws.ec2#GatewayAssociationState": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "associated", + "name": "associated" + }, + { + "value": "not-associated", + "name": "not_associated" + }, + { + "value": "associating", + "name": "associating" + }, + { + "value": "disassociating", + "name": "disassociating" + } + ] + } + }, "com.amazonaws.ec2#GatewayType": { "type": "string", "traits": { @@ -40913,6 +40960,14 @@ "smithy.api#xmlName": "carrierIp" } }, + "CustomerOwnedIp": { + "target": "com.amazonaws.ec2#String", + "traits": { + "aws.protocols#ec2QueryName": "CustomerOwnedIp", + "smithy.api#documentation": "

The customer-owned IP address associated with the network interface.

", + "smithy.api#xmlName": "customerOwnedIp" + } + }, "IpOwnerId": { "target": "com.amazonaws.ec2#String", "traits": { @@ -54884,7 +54939,7 @@ "MultiRegion": { "target": "com.amazonaws.ec2#Boolean", "traits": { - "smithy.api#documentation": "Reserved." + "smithy.api#documentation": "

Reserved.

" } } } @@ -56795,6 +56850,9 @@ "smithy.api#documentation": "

The ID of a VPC peering connection.

", "smithy.api#xmlName": "vpcPeeringConnectionId" } + }, + "CoreNetworkArn": { + "target": "com.amazonaws.ec2#CoreNetworkArn" } } }, @@ -56931,6 +56989,10 @@ { "value": "launch", "name": "LAUNCH" + }, + { + "value": "launch-before-terminate", + "name": "LAUNCH_BEFORE_TERMINATE" } ] } @@ -59946,6 +60008,13 @@ "smithy.api#documentation": "

The ID of a VPC peering connection.

", "smithy.api#xmlName": "vpcPeeringConnectionId" } + }, + "CoreNetworkArn": { + "target": "com.amazonaws.ec2#CoreNetworkArn", + "traits": { + "aws.protocols#ec2QueryName": "CoreNetworkArn", + "smithy.api#xmlName": "coreNetworkArn" + } } }, "traits": { @@ -62975,9 +63044,17 @@ "target": "com.amazonaws.ec2#ReplacementStrategy", "traits": { "aws.protocols#ec2QueryName": "ReplacementStrategy", - "smithy.api#documentation": "

The replacement strategy to use. Only available for fleets of type\n maintain. You must specify a value, otherwise you get an error.

\n

To allow Spot Fleet to launch a replacement Spot Instance when an instance rebalance\n notification is emitted for a Spot Instance in the fleet, specify\n launch.

\n \n

When a replacement instance is launched, the instance marked for rebalance is not\n automatically terminated. You can terminate it, or you can leave it running. You are\n charged for all instances while they are running.

\n
", + "smithy.api#documentation": "

The replacement strategy to use. Only available for fleets of type\n maintain.

\n

\n launch - Spot Fleet launches a new replacement Spot Instance when a\n rebalance notification is emitted for an existing Spot Instance in the fleet. Spot Fleet\n does not terminate the instances that receive a rebalance notification. You can\n terminate the old instances, or you can leave them running. You are charged for all\n instances while they are running.

\n

\n launch-before-terminate - Spot Fleet launches a new replacement Spot\n Instance when a rebalance notification is emitted for an existing Spot Instance in the\n fleet, and then, after a delay that you specify (in TerminationDelay),\n terminates the instances that received a rebalance notification.

", "smithy.api#xmlName": "replacementStrategy" } + }, + "TerminationDelay": { + "target": "com.amazonaws.ec2#Integer", + "traits": { + "aws.protocols#ec2QueryName": "TerminationDelay", + "smithy.api#documentation": "

The amount of time (in seconds) that Amazon EC2 waits before terminating the old Spot\n Instance after launching a new replacement Spot Instance.

", + "smithy.api#xmlName": "terminationDelay" + } } }, "traits": { @@ -71717,7 +71794,7 @@ } }, "GatewayAssociationState": { - "target": "com.amazonaws.ec2#String", + "target": "com.amazonaws.ec2#GatewayAssociationState", "traits": { "aws.protocols#ec2QueryName": "GatewayAssociationState", "smithy.api#documentation": "

The current state of the gateway association.

", diff --git a/codegen/sdk-codegen/aws-models/ecs.2014-11-13.json b/codegen/sdk-codegen/aws-models/ecs.2014-11-13.json index 70f795c150b..d60bd015a92 100644 --- a/codegen/sdk-codegen/aws-models/ecs.2014-11-13.json +++ b/codegen/sdk-codegen/aws-models/ecs.2014-11-13.json @@ -37,7 +37,7 @@ } }, "traits": { - "smithy.api#documentation": "

You do not have authorization to perform the requested action.

", + "smithy.api#documentation": "

You don't have authorization to perform the requested action.

", "smithy.api#error": "client" } }, @@ -86,7 +86,7 @@ "name": "ecs" }, "aws.protocols#awsJson1_1": {}, - "smithy.api#documentation": "Amazon Elastic Container Service\n\t\t

Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, container management service that makes\n\t\t\tit easy to run, stop, and manage Docker containers on a cluster. You can host your\n\t\t\tcluster on a serverless infrastructure that is managed by Amazon ECS by launching your\n\t\t\tservices or tasks on Fargate. For more control, you can host your tasks on a cluster\n\t\t\tof Amazon Elastic Compute Cloud (Amazon EC2) instances that you manage.

\n\t\t

Amazon ECS makes it easy to launch and stop container-based applications with simple API\n\t\t\tcalls, allows you to get the state of your cluster from a centralized service, and gives\n\t\t\tyou access to many familiar Amazon EC2 features.

\n\t\t

You can use Amazon ECS to schedule the placement of containers across your cluster based on\n\t\t\tyour resource needs, isolation policies, and availability requirements. Amazon ECS eliminates\n\t\t\tthe need for you to operate your own cluster management and configuration management\n\t\t\tsystems or worry about scaling your management infrastructure.

", + "smithy.api#documentation": "Amazon Elastic Container Service\n\t\t

Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, container management service. It makes\n\t\t\tit easy to run, stop, and manage Docker containers on a cluster. You can host your\n\t\t\tcluster on a serverless infrastructure that's managed by Amazon ECS by launching your\n\t\t\tservices or tasks on Fargate. For more control, you can host your tasks on a cluster\n\t\t\tof Amazon Elastic Compute Cloud (Amazon EC2) instances that you manage.

\n\t\t

Amazon ECS makes it easy to launch and stop container-based applications with simple API\n\t\t\tcalls. This makes it easy to get the state of your cluster from a centralized service,\n\t\t\tand gives you access to many familiar Amazon EC2 features.

\n\t\t

You can use Amazon ECS to schedule the placement of containers across your cluster based on\n\t\t\tyour resource needs, isolation policies, and availability requirements. With Amazon ECS, you\n\t\t\tdon't need to operate your own cluster management and configuration management systems.\n\t\t\tYou also don't need to worry about scaling your management infrastructure.

", "smithy.api#title": "Amazon EC2 Container Service", "smithy.api#xmlNamespace": { "uri": "http://ecs.amazonaws.com/doc/2014-11-13/" @@ -345,20 +345,20 @@ "name": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of the attribute. The name must contain between 1 and 128\n\t\t\tcharacters and name may contain letters (uppercase and lowercase), numbers, hyphens,\n\t\t\tunderscores, forward slashes, back slashes, or periods.

", + "smithy.api#documentation": "

The name of the attribute. The name must contain between 1 and 128\n\t\t\tcharacters. The name may contain letters (uppercase and lowercase), numbers, hyphens\n\t\t\t(-), underscores (_), forward slashes (/), back slashes (\\), or periods (.).

", "smithy.api#required": {} } }, "value": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The value of the attribute. The value must contain between 1 and 128\n\t\t\tcharacters and may contain letters (uppercase and lowercase), numbers, hyphens,\n\t\t\tunderscores, periods, at signs (@), forward slashes, back slashes, colons, or spaces.\n\t\t\tThe value cannot contain any leading or trailing whitespace.

" + "smithy.api#documentation": "

The value of the attribute. The value must contain between 1 and 128\n\t\t\tcharacters. It can contain letters (uppercase and lowercase), numbers, hyphens (-),\n\t\t\tunderscores (_), periods (.), at signs (@), forward slashes (/), back slashes (\\),\n\t\t\tcolons (:), or spaces. The value can't can't start or end with a space.

" } }, "targetType": { "target": "com.amazonaws.ecs#TargetType", "traits": { - "smithy.api#documentation": "

The type of the target with which to attach the attribute. This parameter is required\n\t\t\tif you use the short form ID for a resource instead of the full ARN.

" + "smithy.api#documentation": "

The type of the target to attach the attribute with. This parameter is required if you\n\t\t\tuse the short form ID for a resource instead of the full ARN.

" } }, "targetId": { @@ -369,7 +369,7 @@ } }, "traits": { - "smithy.api#documentation": "

An attribute is a name-value pair associated with an Amazon ECS object. Attributes enable\n\t\t\tyou to extend the Amazon ECS data model by adding custom metadata to your resources. For more\n\t\t\tinformation, see Attributes in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

An attribute is a name-value pair that's associated with an Amazon ECS object. Attributes\n\t\t\tenable you to extend the Amazon ECS data model by adding custom metadata to your resources.\n\t\t\tFor more information, see Attributes in the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#AttributeLimitExceededException": { @@ -380,7 +380,7 @@ } }, "traits": { - "smithy.api#documentation": "

You can apply up to 10 custom attributes per resource. You can view the attributes of\n\t\t\ta resource with ListAttributes. You can remove existing attributes on\n\t\t\ta resource with DeleteAttributes.

", + "smithy.api#documentation": "

You can apply up to 10 custom attributes for each resource. You can view the\n\t\t\tattributes of a resource with ListAttributes. You can remove existing\n\t\t\tattributes on a resource with DeleteAttributes.

", "smithy.api#error": "client" } }, @@ -409,7 +409,7 @@ "managedTerminationProtection": { "target": "com.amazonaws.ecs#ManagedTerminationProtection", "traits": { - "smithy.api#documentation": "

The managed termination protection setting to use for the Auto Scaling group capacity\n\t\t\tprovider. This determines whether the Auto Scaling group has managed termination\n\t\t\tprotection.

\n\t\t \n\t\t\t

When using managed termination protection, managed scaling must also be used\n\t\t\t\totherwise managed termination protection will not work.

\n\t\t
\n\t\t

When managed termination protection is enabled, Amazon ECS prevents the Amazon EC2 instances in\n\t\t\tan Auto Scaling group that contain tasks from being terminated during a scale-in action.\n\t\t\tThe Auto Scaling group and each instance in the Auto Scaling group must have instance\n\t\t\tprotection from scale-in actions enabled as well. For more information, see Instance Protection in the Auto Scaling User Guide.

\n\t\t

When managed termination protection is disabled, your Amazon EC2 instances are not\n\t\t\tprotected from termination when the Auto Scaling group scales in.

" + "smithy.api#documentation": "

The managed termination protection setting to use for the Auto Scaling group capacity\n\t\t\tprovider. This determines whether the Auto Scaling group has managed termination\n\t\t\tprotection.

\n\t\t \n\t\t\t

When using managed termination protection, managed scaling must also be used\n\t\t\t\totherwise managed termination protection doesn't work.

\n\t\t
\n\t\t

When managed termination protection is enabled, Amazon ECS prevents the Amazon EC2 instances in\n\t\t\tan Auto Scaling group that contain tasks from being terminated during a scale-in action.\n\t\t\tThe Auto Scaling group and each instance in the Auto Scaling group must have instance\n\t\t\tprotection from scale-in actions enabled as well. For more information, see Instance Protection in the Auto Scaling User Guide.

\n\t\t

When managed termination protection is disabled, your Amazon EC2 instances aren't protected\n\t\t\tfrom termination when the Auto Scaling group scales in.

" } } }, @@ -429,7 +429,7 @@ "managedTerminationProtection": { "target": "com.amazonaws.ecs#ManagedTerminationProtection", "traits": { - "smithy.api#documentation": "

The managed termination protection setting to use for the Auto Scaling group capacity\n\t\t\tprovider. This determines whether the Auto Scaling group has managed termination\n\t\t\tprotection.

\n\t\t \n\t\t\t

When using managed termination protection, managed scaling must also be used\n\t\t\t\totherwise managed termination protection will not work.

\n\t\t
\n\t\t

When managed termination protection is enabled, Amazon ECS prevents the Amazon EC2 instances in\n\t\t\tan Auto Scaling group that contain tasks from being terminated during a scale-in action.\n\t\t\tThe Auto Scaling group and each instance in the Auto Scaling group must have instance\n\t\t\tprotection from scale-in actions enabled as well. For more information, see Instance Protection in the Auto Scaling User Guide.

\n\t\t

When managed termination protection is disabled, your Amazon EC2 instances are not\n\t\t\tprotected from termination when the Auto Scaling group scales in.

" + "smithy.api#documentation": "

The managed termination protection setting to use for the Auto Scaling group capacity\n\t\t\tprovider. This determines whether the Auto Scaling group has managed termination\n\t\t\tprotection.

\n\t\t \n\t\t\t

When using managed termination protection, managed scaling must also be used\n\t\t\t\totherwise managed termination protection doesn't work.

\n\t\t
\n\t\t

When managed termination protection is enabled, Amazon ECS prevents the Amazon EC2 instances in\n\t\t\tan Auto Scaling group that contain tasks from being terminated during a scale-in action.\n\t\t\tThe Auto Scaling group and each instance in the Auto Scaling group must have instance\n\t\t\tprotection from scale-in actions enabled. For more information, see Instance Protection in the Auto Scaling User Guide.

\n\t\t

When managed termination protection is disabled, your Amazon EC2 instances aren't protected\n\t\t\tfrom termination when the Auto Scaling group scales in.

" } } }, @@ -443,14 +443,14 @@ "subnets": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The IDs of the subnets associated with the task or service. There is a limit of 16\n\t\t\tsubnets that can be specified per AwsVpcConfiguration.

\n\t\t\n\t\t \n\t\t\t

All specified subnets must be from the same VPC.

\n\t\t
", + "smithy.api#documentation": "

The IDs of the subnets associated with the task or service. There's a limit of 16\n\t\t\tsubnets that can be specified per AwsVpcConfiguration.

\n\t\t\n\t\t \n\t\t\t

All specified subnets must be from the same VPC.

\n\t\t
", "smithy.api#required": {} } }, "securityGroups": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The IDs of the security groups associated with the task or service. If you do not\n\t\t\tspecify a security group, the default security group for the VPC is used. There is a\n\t\t\tlimit of 5 security groups that can be specified per\n\t\t\tAwsVpcConfiguration.

\n\t\t\n\t\t \n\t\t\t

All specified security groups must be from the same VPC.

\n\t\t
" + "smithy.api#documentation": "

The IDs of the security groups associated with the task or service. If you don't\n\t\t\tspecify a security group, the default security group for the VPC is used. There's a\n\t\t\tlimit of 5 security groups that can be specified per\n\t\t\tAwsVpcConfiguration.

\n\t\t\n\t\t \n\t\t\t

All specified security groups must be from the same VPC.

\n\t\t
" } }, "assignPublicIp": { @@ -472,7 +472,7 @@ } }, "traits": { - "smithy.api#documentation": "

Your Amazon Web Services account has been blocked. For more information, contact \n\t\t\t\tAmazon Web Services Support.

", + "smithy.api#documentation": "

Your Amazon Web Services account was blocked. For more information, contact \n\t\t\t\tAmazon Web Services Support.

", "smithy.api#error": "client" } }, @@ -524,7 +524,7 @@ "status": { "target": "com.amazonaws.ecs#CapacityProviderStatus", "traits": { - "smithy.api#documentation": "

The current status of the capacity provider. Only capacity providers in an\n\t\t\t\tACTIVE state can be used in a cluster. When a capacity provider is\n\t\t\tsuccessfully deleted, it will have an INACTIVE status.

" + "smithy.api#documentation": "

The current status of the capacity provider. Only capacity providers in an\n\t\t\t\tACTIVE state can be used in a cluster. When a capacity provider is\n\t\t\tsuccessfully deleted, it has an INACTIVE status.

" } }, "autoScalingGroupProvider": { @@ -536,7 +536,7 @@ "updateStatus": { "target": "com.amazonaws.ecs#CapacityProviderUpdateStatus", "traits": { - "smithy.api#documentation": "

The update status of the capacity provider. The following are the possible states that\n\t\t\twill be returned.

\n\t\t
\n
DELETE_IN_PROGRESS
\n
\n\t\t\t\t\t

The capacity provider is in the process of being deleted.

\n\t\t\t\t
\n
DELETE_COMPLETE
\n
\n\t\t\t\t\t

The capacity provider has been successfully deleted and will have an\n\t\t\t\t\t\t\tINACTIVE status.

\n\t\t\t\t
\n
DELETE_FAILED
\n
\n\t\t\t\t\t

The capacity provider was unable to be deleted. The update status reason\n\t\t\t\t\t\twill provide further details about why the delete failed.

\n\t\t\t\t
\n
" + "smithy.api#documentation": "

The update status of the capacity provider. The following are the possible states that\n\t\t\tis returned.

\n\t\t
\n
DELETE_IN_PROGRESS
\n
\n\t\t\t\t\t

The capacity provider is in the process of being deleted.

\n\t\t\t\t
\n
DELETE_COMPLETE
\n
\n\t\t\t\t\t

The capacity provider was successfully deleted and has an\n\t\t\t\t\t\t\tINACTIVE status.

\n\t\t\t\t
\n
DELETE_FAILED
\n
\n\t\t\t\t\t

The capacity provider can't be deleted. The update status reason provides\n\t\t\t\t\t\tfurther details about why the delete failed.

\n\t\t\t\t
\n
" } }, "updateStatusReason": { @@ -548,12 +548,12 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the capacity provider to help you categorize and\n\t\t\torganize it. Each tag consists of a key and an optional value, both of which you\n\t\t\tdefine.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the capacity provider to help you categorize and\n\t\t\torganize it. Each tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } } }, "traits": { - "smithy.api#documentation": "

The details of a capacity provider.

" + "smithy.api#documentation": "

The details for a capacity provider.

" } }, "com.amazonaws.ecs#CapacityProviderField": { @@ -607,7 +607,7 @@ "weight": { "target": "com.amazonaws.ecs#CapacityProviderStrategyItemWeight", "traits": { - "smithy.api#documentation": "

The weight value designates the relative percentage of the total\n\t\t\tnumber of tasks launched that should use the specified capacity provider. The\n\t\t\t\tweight value is taken into consideration after the base\n\t\t\tvalue, if defined, is satisfied.

\n\t\t

If no weight value is specified, the default value of 0 is\n\t\t\tused. When multiple capacity providers are specified within a capacity provider\n\t\t\tstrategy, at least one of the capacity providers must have a weight value greater than\n\t\t\tzero and any capacity providers with a weight of 0 will not be used to\n\t\t\tplace tasks. If you specify multiple capacity providers in a strategy that all have a\n\t\t\tweight of 0, any RunTask or CreateService actions\n\t\t\tusing the capacity provider strategy will fail.

\n\t\t

An example scenario for using weights is defining a strategy that contains two\n\t\t\tcapacity providers and both have a weight of 1, then when the\n\t\t\t\tbase is satisfied, the tasks will be split evenly across the two\n\t\t\tcapacity providers. Using that same logic, if you specify a weight of 1 for\n\t\t\t\tcapacityProviderA and a weight of 4 for\n\t\t\t\tcapacityProviderB, then for every one task that is run using\n\t\t\t\tcapacityProviderA, four tasks would use\n\t\t\t\tcapacityProviderB.

" + "smithy.api#documentation": "

The weight value designates the relative percentage of the total\n\t\t\tnumber of tasks launched that should use the specified capacity provider. The\n\t\t\t\tweight value is taken into consideration after the base\n\t\t\tvalue, if defined, is satisfied.

\n\t\t

If no weight value is specified, the default value of 0 is\n\t\t\tused. When multiple capacity providers are specified within a capacity provider\n\t\t\tstrategy, at least one of the capacity providers must have a weight value greater than\n\t\t\tzero and any capacity providers with a weight of 0 can't be used to place\n\t\t\ttasks. If you specify multiple capacity providers in a strategy that all have a weight\n\t\t\tof 0, any RunTask or CreateService actions using\n\t\t\tthe capacity provider strategy will fail.

\n\t\t

An example scenario for using weights is defining a strategy that contains two\n\t\t\tcapacity providers and both have a weight of 1, then when the\n\t\t\t\tbase is satisfied, the tasks will be split evenly across the two\n\t\t\tcapacity providers. Using that same logic, if you specify a weight of 1 for\n\t\t\t\tcapacityProviderA and a weight of 4 for\n\t\t\t\tcapacityProviderB, then for every one task that's run using\n\t\t\t\tcapacityProviderA, four tasks would use\n\t\t\t\tcapacityProviderB.

" } }, "base": { @@ -618,7 +618,7 @@ } }, "traits": { - "smithy.api#documentation": "

The details of a capacity provider strategy. A capacity provider strategy can be set\n\t\t\twhen using the RunTask or CreateCluster APIs or as\n\t\t\tthe default capacity provider strategy for a cluster with the CreateCluster API.

\n\t\t

Only capacity providers that are already associated with a cluster and have an\n\t\t\t\tACTIVE or UPDATING status can be used in a capacity\n\t\t\tprovider strategy. The PutClusterCapacityProviders API is used to\n\t\t\tassociate a capacity provider with a cluster.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must already be created. New Auto Scaling group capacity providers can be\n\t\t\tcreated with the CreateCapacityProvider API operation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be used in a\n\t\t\tcapacity provider strategy.

\n

A capacity provider strategy may contain a maximum of 6 capacity providers.

" + "smithy.api#documentation": "

The details of a capacity provider strategy. A capacity provider strategy can be set\n\t\t\twhen using the RunTask or CreateCluster APIs or as\n\t\t\tthe default capacity provider strategy for a cluster with the CreateCluster API.

\n\t\t

Only capacity providers that are already associated with a cluster and have an\n\t\t\t\tACTIVE or UPDATING status can be used in a capacity\n\t\t\tprovider strategy. The PutClusterCapacityProviders API is used to\n\t\t\tassociate a capacity provider with a cluster.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must already be created. New Auto Scaling group capacity providers can be\n\t\t\tcreated with the CreateCapacityProvider API operation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be used in a\n\t\t\tcapacity provider strategy.

\n\t\t

A capacity provider strategy may contain a maximum of 6 capacity providers.

" } }, "com.amazonaws.ecs#CapacityProviderStrategyItemBase": { @@ -684,7 +684,7 @@ } }, "traits": { - "smithy.api#documentation": "

These errors are usually caused by a client action, such as using an action or\n\t\t\tresource on behalf of a user that doesn't have permissions to use the action or\n\t\t\tresource, or specifying an identifier that is not valid.

", + "smithy.api#documentation": "

These errors are usually caused by a client action. This client action might be using\n\t\t\tan action or resource on behalf of a user that doesn't have permissions to use the\n\t\t\taction or resource,. Or, it might be specifying an identifier that isn't valid.

", "smithy.api#error": "client" } }, @@ -712,7 +712,7 @@ "status": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The status of the cluster. The following are the possible states that will be\n\t\t\treturned.

\n\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

The cluster is ready to accept tasks and if applicable you can register\n\t\t\t\t\t\tcontainer instances with the cluster.

\n\t\t\t\t
\n
PROVISIONING
\n
\n\t\t\t\t\t

The cluster has capacity providers associated with it and the resources\n\t\t\t\t\t\tneeded for the capacity provider are being created.

\n\t\t\t\t
\n
DEPROVISIONING
\n
\n\t\t\t\t\t

The cluster has capacity providers associated with it and the resources\n\t\t\t\t\t\tneeded for the capacity provider are being deleted.

\n\t\t\t\t
\n
FAILED
\n
\n\t\t\t\t\t

The cluster has capacity providers associated with it and the resources\n\t\t\t\t\t\tneeded for the capacity provider have failed to create.

\n\t\t\t\t
\n
INACTIVE
\n
\n\t\t\t\t\t

The cluster has been deleted. Clusters with an INACTIVE\n\t\t\t\t\t\tstatus may remain discoverable in your account for a period of time.\n\t\t\t\t\t\tHowever, this behavior is subject to change in the future, so you should not\n\t\t\t\t\t\trely on INACTIVE clusters persisting.

\n\t\t\t\t
\n
" + "smithy.api#documentation": "

The status of the cluster. The following are the possible states that are\n\t\t\treturned.

\n\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

The cluster is ready to accept tasks and if applicable you can register\n\t\t\t\t\t\tcontainer instances with the cluster.

\n\t\t\t\t
\n
PROVISIONING
\n
\n\t\t\t\t\t

The cluster has capacity providers that are associated with it and the\n\t\t\t\t\t\tresources needed for the capacity provider are being created.

\n\t\t\t\t
\n
DEPROVISIONING
\n
\n\t\t\t\t\t

The cluster has capacity providers that are associated with it and the\n\t\t\t\t\t\tresources needed for the capacity provider are being deleted.

\n\t\t\t\t
\n
FAILED
\n
\n\t\t\t\t\t

The cluster has capacity providers that are associated with it and the\n\t\t\t\t\t\tresources needed for the capacity provider have failed to create.

\n\t\t\t\t
\n
INACTIVE
\n
\n\t\t\t\t\t

The cluster has been deleted. Clusters with an INACTIVE\n\t\t\t\t\t\tstatus may remain discoverable in your account for a period of time.\n\t\t\t\t\t\tHowever, this behavior is subject to change in the future. We don't\n\t\t\t\t\t\trecommend that you rely on INACTIVE clusters persisting.

\n\t\t\t\t
\n
" } }, "registeredContainerInstancesCount": { @@ -742,13 +742,13 @@ "statistics": { "target": "com.amazonaws.ecs#Statistics", "traits": { - "smithy.api#documentation": "

Additional information about your clusters that are separated by launch type,\n\t\t\tincluding:

\n\t\t " + "smithy.api#documentation": "

Additional information about your clusters that are separated by launch type. They\n\t\t\tinclude the following:

\n\t\t " } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the cluster to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the cluster to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "settings": { @@ -772,18 +772,18 @@ "attachments": { "target": "com.amazonaws.ecs#Attachments", "traits": { - "smithy.api#documentation": "

The resources attached to a cluster. When using a capacity provider with a cluster,\n\t\t\tthe Auto Scaling plan that is created will be returned as a cluster attachment.

" + "smithy.api#documentation": "

The resources attached to a cluster. When using a capacity provider with a cluster,\n\t\t\tthe Auto Scaling plan that's created is returned as a cluster attachment.

" } }, "attachmentsStatus": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The status of the capacity providers associated with the cluster. The following are\n\t\t\tthe states that will be returned:

\n\t\t
\n
UPDATE_IN_PROGRESS
\n
\n\t\t\t\t\t

The available capacity providers for the cluster are updating. This occurs\n\t\t\t\t\t\twhen the Auto Scaling plan is provisioning or deprovisioning.

\n\t\t\t\t
\n
UPDATE_COMPLETE
\n
\n\t\t\t\t\t

The capacity providers have successfully updated.

\n\t\t\t\t
\n
UPDATE_FAILED
\n
\n\t\t\t\t\t

The capacity provider updates failed.

\n\t\t\t\t
\n
" + "smithy.api#documentation": "

The status of the capacity providers associated with the cluster. The following are\n\t\t\tthe states that are returned.

\n\t\t
\n
UPDATE_IN_PROGRESS
\n
\n\t\t\t\t\t

The available capacity providers for the cluster are updating. This occurs\n\t\t\t\t\t\twhen the Auto Scaling plan is provisioning or deprovisioning.

\n\t\t\t\t
\n
UPDATE_COMPLETE
\n
\n\t\t\t\t\t

The capacity providers have successfully updated.

\n\t\t\t\t
\n
UPDATE_FAILED
\n
\n\t\t\t\t\t

The capacity provider updates failed.

\n\t\t\t\t
\n
" } } }, "traits": { - "smithy.api#documentation": "

A regional grouping of one or more container instances on which you can run task\n\t\t\trequests. Each account receives a default cluster the first time you use the Amazon ECS\n\t\t\tservice, but you may also create other clusters. Clusters may contain more than one\n\t\t\tinstance type simultaneously.

" + "smithy.api#documentation": "

A regional grouping of one or more container instances where you can run task\n\t\t\trequests. Each account receives a default cluster the first time you use the Amazon ECS\n\t\t\tservice, but you may also create other clusters. Clusters may contain more than one\n\t\t\tinstance type simultaneously.

" } }, "com.amazonaws.ecs#ClusterConfiguration": { @@ -808,7 +808,7 @@ } }, "traits": { - "smithy.api#documentation": "

You cannot delete a cluster that has registered container instances. First, deregister\n\t\t\tthe container instances before you can delete the cluster. For more information, see\n\t\t\t\tDeregisterContainerInstance.

", + "smithy.api#documentation": "

You can't delete a cluster that has registered container instances. First, deregister\n\t\t\tthe container instances before you can delete the cluster. For more information, see\n\t\t\t\tDeregisterContainerInstance.

", "smithy.api#error": "client" } }, @@ -820,7 +820,7 @@ } }, "traits": { - "smithy.api#documentation": "

You cannot delete a cluster that contains services. First, update the service to\n\t\t\treduce its desired task count to 0 and then delete the service. For more information,\n\t\t\tsee UpdateService and DeleteService.

", + "smithy.api#documentation": "

You can't delete a cluster that contains services. First, update the service to reduce\n\t\t\tits desired task count to 0, and then delete the service. For more information, see\n\t\t\t\tUpdateService and DeleteService.

", "smithy.api#error": "client" } }, @@ -832,7 +832,7 @@ } }, "traits": { - "smithy.api#documentation": "

You cannot delete a cluster that has active tasks.

", + "smithy.api#documentation": "

You can't delete a cluster that has active tasks.

", "smithy.api#error": "client" } }, @@ -877,7 +877,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified cluster could not be found. You can view your available clusters with\n\t\t\t\tListClusters. Amazon ECS clusters are Region-specific.

", + "smithy.api#documentation": "

The specified cluster wasn't found. You can view your available clusters with ListClusters. Amazon ECS clusters are Region specific.

", "smithy.api#error": "client" } }, @@ -1036,7 +1036,7 @@ "healthStatus": { "target": "com.amazonaws.ecs#HealthStatus", "traits": { - "smithy.api#documentation": "

The health status of the container. If health checks are not configured for this\n\t\t\tcontainer in its task definition, then it reports the health status as\n\t\t\t\tUNKNOWN.

" + "smithy.api#documentation": "

The health status of the container. If health checks aren't configured for this\n\t\t\tcontainer in its task definition, then it reports the health status as\n\t\t\t\tUNKNOWN.

" } }, "managedAgents": { @@ -1048,7 +1048,7 @@ "cpu": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The number of CPU units set for the container. The value will be 0 if no\n\t\t\tvalue was specified in the container definition when the task definition was\n\t\t\tregistered.

" + "smithy.api#documentation": "

The number of CPU units set for the container. The value is 0 if no value\n\t\t\twas specified in the container definition when the task definition was\n\t\t\tregistered.

" } }, "memory": { @@ -1071,7 +1071,7 @@ } }, "traits": { - "smithy.api#documentation": "

A Docker container that is part of a task.

" + "smithy.api#documentation": "

A Docker container that's part of a task.

" } }, "com.amazonaws.ecs#ContainerCondition": { @@ -1103,13 +1103,13 @@ "name": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of a container. If you are linking multiple containers together in a task\n\t\t\tdefinition, the name of one container can be entered in the\n\t\t\t\tlinks of another container to connect the containers.\n\t\t\tUp to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. This parameter maps to name in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--name option to docker\n\t\t\trun.

" + "smithy.api#documentation": "

The name of a container. If you're linking multiple containers together in a task\n\t\t\tdefinition, the name of one container can be entered in the\n\t\t\t\tlinks of another container to connect the containers.\n\t\t\tUp to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. This parameter maps to name in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--name option to docker\n\t\t\trun.

" } }, "image": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The image used to start a container. This string is passed directly to the Docker\n\t\t\tdaemon. Images in the Docker Hub registry are available by default. Other repositories\n\t\t\tare specified with either \n\t\t\t\t repository-url/image:tag\n\t\t\t or \n\t\t\t\t repository-url/image@digest\n\t\t\t . Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to Image in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\tIMAGE parameter of docker\n\t\t\t\trun.

\n\t\t " + "smithy.api#documentation": "

The image used to start a container. This string is passed directly to the Docker\n\t\t\tdaemon. By default, images in the Docker Hub registry are available. Other repositories\n\t\t\tare specified with either \n\t\t\t\t repository-url/image:tag\n\t\t\t or \n\t\t\t\t repository-url/image@digest\n\t\t\t . Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to Image in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\tIMAGE parameter of docker\n\t\t\t\trun.

\n\t\t " } }, "repositoryCredentials": { @@ -1121,67 +1121,67 @@ "cpu": { "target": "com.amazonaws.ecs#Integer", "traits": { - "smithy.api#documentation": "

The number of cpu units reserved for the container. This parameter maps\n\t\t\tto CpuShares in the Create a container section of the\n\t\t\tDocker Remote API and the --cpu-shares option to docker run.

\n\t\t

This field is optional for tasks using the Fargate launch type, and the\n\t\t\tonly requirement is that the total amount of CPU reserved for all containers within a\n\t\t\ttask be lower than the task-level cpu value.

\n\t\t \n\t\t\t

You can determine the number of CPU units that are available per EC2 instance type\n\t\t\t\tby multiplying the vCPUs listed for that instance type on the Amazon EC2 Instances detail page\n\t\t\t\tby 1,024.

\n\t\t
\n\t\t

Linux containers share unallocated CPU units with other containers on the container\n\t\t\tinstance with the same ratio as their allocated amount. For example, if you run a\n\t\t\tsingle-container task on a single-core instance type with 512 CPU units specified for\n\t\t\tthat container, and that is the only task running on the container instance, that\n\t\t\tcontainer could use the full 1,024 CPU unit share at any given time. However, if you\n\t\t\tlaunched another copy of the same task on that container instance, each task would be\n\t\t\tguaranteed a minimum of 512 CPU units when needed, and each container could float to\n\t\t\thigher CPU usage if the other container was not using it, but if both tasks were 100%\n\t\t\tactive all of the time, they would be limited to 512 CPU units.

\n\t\t

On Linux container instances, the Docker daemon on the container instance uses the CPU\n\t\t\tvalue to calculate the relative CPU share ratios for running containers. For more\n\t\t\tinformation, see CPU share\n\t\t\t\tconstraint in the Docker documentation. The minimum valid CPU share value\n\t\t\tthat the Linux kernel allows is 2. However, the CPU parameter is not required, and you\n\t\t\tcan use CPU values below 2 in your container definitions. For CPU values below 2\n\t\t\t(including null), the behavior varies based on your Amazon ECS container agent\n\t\t\tversion:

\n\t\t \n\t\t

On Windows container instances, the CPU limit is enforced as an absolute limit, or a\n\t\t\tquota. Windows containers only have access to the specified amount of CPU that is\n\t\t\tdescribed in the task definition. A null or zero CPU value is passed to Docker as\n\t\t\t\t0, which Windows interprets as 1% of one CPU.

" + "smithy.api#documentation": "

The number of cpu units reserved for the container. This parameter maps\n\t\t\tto CpuShares in the Create a container section of the\n\t\t\tDocker Remote API and the --cpu-shares option to docker run.

\n\t\t

This field is optional for tasks using the Fargate launch type, and the\n\t\t\tonly requirement is that the total amount of CPU reserved for all containers within a\n\t\t\ttask be lower than the task-level cpu value.

\n\t\t \n\t\t\t

You can determine the number of CPU units that are available per EC2 instance type\n\t\t\t\tby multiplying the vCPUs listed for that instance type on the Amazon EC2 Instances detail page\n\t\t\t\tby 1,024.

\n\t\t
\n\t\t

Linux containers share unallocated CPU units with other containers on the container\n\t\t\tinstance with the same ratio as their allocated amount. For example, if you run a\n\t\t\tsingle-container task on a single-core instance type with 512 CPU units specified for\n\t\t\tthat container, and that's the only task running on the container instance, that\n\t\t\tcontainer could use the full 1,024 CPU unit share at any given time. However, if you\n\t\t\tlaunched another copy of the same task on that container instance, each task is\n\t\t\tguaranteed a minimum of 512 CPU units when needed. Moreover, each container could float\n\t\t\tto higher CPU usage if the other container was not using it. If both tasks were 100%\n\t\t\tactive all of the time, they would be limited to 512 CPU units.

\n\t\t

On Linux container instances, the Docker daemon on the container instance uses the CPU\n\t\t\tvalue to calculate the relative CPU share ratios for running containers. For more\n\t\t\tinformation, see CPU share\n\t\t\t\tconstraint in the Docker documentation. The minimum valid CPU share value\n\t\t\tthat the Linux kernel allows is 2. However, the CPU parameter isn't required, and you\n\t\t\tcan use CPU values below 2 in your container definitions. For CPU values below 2\n\t\t\t(including null), the behavior varies based on your Amazon ECS container agent\n\t\t\tversion:

\n\t\t \n\t\t

On Windows container instances, the CPU limit is enforced as an absolute limit, or a\n\t\t\tquota. Windows containers only have access to the specified amount of CPU that's\n\t\t\tdescribed in the task definition. A null or zero CPU value is passed to Docker as\n\t\t\t\t0, which Windows interprets as 1% of one CPU.

" } }, "memory": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The amount (in MiB) of memory to present to the container. If your container attempts\n\t\t\tto exceed the memory specified here, the container is killed. The total amount of memory\n\t\t\treserved for all containers within a task must be lower than the task\n\t\t\t\tmemory value, if one is specified. This parameter maps to\n\t\t\t\tMemory in the Create a container section of the\n\t\t\tDocker Remote API and the --memory option to docker run.

\n\t\t

If using the Fargate launch type, this parameter is optional.

\n\t\t

If using the EC2 launch type, you must specify either a task-level\n\t\t\tmemory value or a container-level memory value. If you specify both a container-level\n\t\t\t\tmemory and memoryReservation value, memory\n\t\t\tmust be greater than memoryReservation. If you specify\n\t\t\t\tmemoryReservation, then that value is subtracted from the available\n\t\t\tmemory resources for the container instance on which the container is placed. Otherwise,\n\t\t\tthe value of memory is used.

\n\t\t

The Docker daemon reserves a minimum of 4 MiB of memory for a container, so you should\n\t\t\tnot specify fewer than 4 MiB of memory for your containers.

" + "smithy.api#documentation": "

The amount (in MiB) of memory to present to the container. If your container attempts\n\t\t\tto exceed the memory specified here, the container is killed. The total amount of memory\n\t\t\treserved for all containers within a task must be lower than the task\n\t\t\t\tmemory value, if one is specified. This parameter maps to\n\t\t\t\tMemory in the Create a container section of the\n\t\t\tDocker Remote API and the --memory option to docker run.

\n\t\t

If using the Fargate launch type, this parameter is optional.

\n\t\t

If using the EC2 launch type, you must specify either a task-level\n\t\t\tmemory value or a container-level memory value. If you specify both a container-level\n\t\t\t\tmemory and memoryReservation value, memory\n\t\t\tmust be greater than memoryReservation. If you specify\n\t\t\t\tmemoryReservation, then that value is subtracted from the available\n\t\t\tmemory resources for the container instance where the container is placed. Otherwise,\n\t\t\tthe value of memory is used.

\n\t\t

The Docker daemon reserves a minimum of 4 MiB of memory for a container. Therefore, we\n\t\t\trecommend that you specify fewer than 4 MiB of memory for your containers.

" } }, "memoryReservation": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The soft limit (in MiB) of memory to reserve for the container. When system memory is\n\t\t\tunder heavy contention, Docker attempts to keep the container memory to this soft limit.\n\t\t\tHowever, your container can consume more memory when it needs to, up to either the hard\n\t\t\tlimit specified with the memory parameter (if applicable), or all of the\n\t\t\tavailable memory on the container instance, whichever comes first. This parameter maps\n\t\t\tto MemoryReservation in the Create a container section of\n\t\t\tthe Docker Remote API and the --memory-reservation option to docker run.

\n\t\t

If a task-level memory value is not specified, you must specify a non-zero integer for\n\t\t\tone or both of memory or memoryReservation in a container\n\t\t\tdefinition. If you specify both, memory must be greater than\n\t\t\t\tmemoryReservation. If you specify memoryReservation, then\n\t\t\tthat value is subtracted from the available memory resources for the container instance\n\t\t\ton which the container is placed. Otherwise, the value of memory is\n\t\t\tused.

\n\t\t

For example, if your container normally uses 128 MiB of memory, but occasionally\n\t\t\tbursts to 256 MiB of memory for short periods of time, you can set a\n\t\t\t\tmemoryReservation of 128 MiB, and a memory hard limit of\n\t\t\t300 MiB. This configuration would allow the container to only reserve 128 MiB of memory\n\t\t\tfrom the remaining resources on the container instance, but also allow the container to\n\t\t\tconsume more memory resources when needed.

\n\t\t

The Docker daemon reserves a minimum of 4 MiB of memory for a container, so you should\n\t\t\tnot specify fewer than 4 MiB of memory for your containers.

" + "smithy.api#documentation": "

The soft limit (in MiB) of memory to reserve for the container. When system memory is\n\t\t\tunder heavy contention, Docker attempts to keep the container memory to this soft limit.\n\t\t\tHowever, your container can consume more memory when it needs to, up to either the hard\n\t\t\tlimit specified with the memory parameter (if applicable), or all of the\n\t\t\tavailable memory on the container instance, whichever comes first. This parameter maps\n\t\t\tto MemoryReservation in the Create a container section of\n\t\t\tthe Docker Remote API and the --memory-reservation option to docker run.

\n\t\t

If a task-level memory value is not specified, you must specify a non-zero integer for\n\t\t\tone or both of memory or memoryReservation in a container\n\t\t\tdefinition. If you specify both, memory must be greater than\n\t\t\t\tmemoryReservation. If you specify memoryReservation, then\n\t\t\tthat value is subtracted from the available memory resources for the container instance\n\t\t\twhere the container is placed. Otherwise, the value of memory is\n\t\t\tused.

\n\t\t

For example, if your container normally uses 128 MiB of memory, but occasionally\n\t\t\tbursts to 256 MiB of memory for short periods of time, you can set a\n\t\t\t\tmemoryReservation of 128 MiB, and a memory hard limit of\n\t\t\t300 MiB. This configuration would allow the container to only reserve 128 MiB of memory\n\t\t\tfrom the remaining resources on the container instance, but also allow the container to\n\t\t\tconsume more memory resources when needed.

\n\t\t

The Docker daemon reserves a minimum of 4 MiB of memory for a container. Therefore, we\n\t\t\trecommend that you specify fewer than 4 MiB of memory for your containers.

" } }, "links": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The links parameter allows containers to communicate with each other\n\t\t\twithout the need for port mappings. This parameter is only supported if the network mode\n\t\t\tof a task definition is bridge. The name:internalName\n\t\t\tconstruct is analogous to name:alias in Docker links.\n\t\t\tUp to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. For more information about linking Docker containers, go to\n\t\t\t\tLegacy container links\n\t\t\tin the Docker documentation. This parameter maps to Links in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--link option to docker\n\t\t\trun.

\n \n

This parameter is not supported for Windows containers.

\n
\n \n\t\t\t

Containers that are collocated on a single container instance may be able to\n\t\t\t\tcommunicate with each other without requiring links or host port mappings. Network\n\t\t\t\tisolation is achieved on the container instance using security groups and VPC\n\t\t\t\tsettings.

\n\t\t
" + "smithy.api#documentation": "

The links parameter allows containers to communicate with each other\n\t\t\twithout the need for port mappings. This parameter is only supported if the network mode\n\t\t\tof a task definition is bridge. The name:internalName\n\t\t\tconstruct is analogous to name:alias in Docker links.\n\t\t\tUp to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. For more information about linking Docker containers, go to\n\t\t\t\tLegacy container links\n\t\t\tin the Docker documentation. This parameter maps to Links in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--link option to docker\n\t\t\trun.

\n\t\t \n

This parameter is not supported for Windows containers.

\n
\n\t\t \n\t\t\t

Containers that are collocated on a single container instance may be able to\n\t\t\t\tcommunicate with each other without requiring links or host port mappings. Network\n\t\t\t\tisolation is achieved on the container instance using security groups and VPC\n\t\t\t\tsettings.

\n\t\t
" } }, "portMappings": { "target": "com.amazonaws.ecs#PortMappingList", "traits": { - "smithy.api#documentation": "

The list of port mappings for the container. Port mappings allow containers to access\n\t\t\tports on the host container instance to send or receive traffic.

\n\t\t

For task definitions that use the awsvpc network mode, you should only\n\t\t\tspecify the containerPort. The hostPort can be left blank or\n\t\t\tit must be the same value as the containerPort.

\n\t\t

Port mappings on Windows use the NetNAT gateway address rather than\n\t\t\t\tlocalhost. There is no loopback for port mappings on Windows, so you\n\t\t\tcannot access a container's mapped port from the host itself.

\n\t\t

This parameter maps to PortBindings in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--publish option to docker\n\t\t\t\trun. If the network mode of a task definition is set to none,\n\t\t\tthen you can't specify port mappings. If the network mode of a task definition is set to\n\t\t\t\thost, then host ports must either be undefined or they must match the\n\t\t\tcontainer port in the port mapping.

\n\t\t \n\t\t\t

After a task reaches the RUNNING status, manual and automatic host\n\t\t\t\tand container port assignments are visible in the Network\n\t\t\t\t\tBindings section of a container description for a selected task in\n\t\t\t\tthe Amazon ECS console. The assignments are also visible in the\n\t\t\t\t\tnetworkBindings section DescribeTasks\n\t\t\t\tresponses.

\n\t\t
" + "smithy.api#documentation": "

The list of port mappings for the container. Port mappings allow containers to access\n\t\t\tports on the host container instance to send or receive traffic.

\n\t\t

For task definitions that use the awsvpc network mode, only specify the\n\t\t\t\tcontainerPort. The hostPort can be left blank or it must\n\t\t\tbe the same value as the containerPort.

\n\t\t

Port mappings on Windows use the NetNAT gateway address rather than\n\t\t\t\tlocalhost. There's no loopback for port mappings on Windows, so you\n\t\t\tcan't access a container's mapped port from the host itself.

\n\t\t

This parameter maps to PortBindings in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--publish option to docker\n\t\t\t\trun. If the network mode of a task definition is set to none,\n\t\t\tthen you can't specify port mappings. If the network mode of a task definition is set to\n\t\t\t\thost, then host ports must either be undefined or they must match the\n\t\t\tcontainer port in the port mapping.

\n\t\t \n\t\t\t

After a task reaches the RUNNING status, manual and automatic host\n\t\t\t\tand container port assignments are visible in the Network\n\t\t\t\t\tBindings section of a container description for a selected task in\n\t\t\t\tthe Amazon ECS console. The assignments are also visible in the\n\t\t\t\t\tnetworkBindings section DescribeTasks\n\t\t\t\tresponses.

\n\t\t
" } }, "essential": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

If the essential parameter of a container is marked as true,\n\t\t\tand that container fails or stops for any reason, all other containers that are part of\n\t\t\tthe task are stopped. If the essential parameter of a container is marked\n\t\t\tas false, then its failure does not affect the rest of the containers in a\n\t\t\ttask. If this parameter is omitted, a container is assumed to be essential.

\n\t\t

All tasks must have at least one essential container. If you have an application that\n\t\t\tis composed of multiple containers, you should group containers that are used for a\n\t\t\tcommon purpose into components, and separate the different components into multiple task\n\t\t\tdefinitions. For more information, see Application\n\t\t\t\tArchitecture in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

If the essential parameter of a container is marked as true,\n\t\t\tand that container fails or stops for any reason, all other containers that are part of\n\t\t\tthe task are stopped. If the essential parameter of a container is marked\n\t\t\tas false, its failure doesn't affect the rest of the containers in a task.\n\t\t\tIf this parameter is omitted, a container is assumed to be essential.

\n\t\t

All tasks must have at least one essential container. If you have an application\n\t\t\tthat's composed of multiple containers, group containers that are used for a common\n\t\t\tpurpose into components, and separate the different components into multiple task\n\t\t\tdefinitions. For more information, see Application\n\t\t\t\tArchitecture in the Amazon Elastic Container Service Developer Guide.

" } }, "entryPoint": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "\n\t\t\t

Early versions of the Amazon ECS container agent do not properly handle\n\t\t\t\t\tentryPoint parameters. If you have problems using\n\t\t\t\t\tentryPoint, update your container agent or enter your commands and\n\t\t\t\targuments as command array items instead.

\n\t\t
\n\t\t

The entry point that is passed to the container. This parameter maps to\n\t\t\t\tEntrypoint in the Create a container section of the\n\t\t\tDocker Remote API and the --entrypoint option to docker run. For more information, see https://docs.docker.com/engine/reference/builder/#entrypoint.

" + "smithy.api#documentation": "\n\t\t\t

Early versions of the Amazon ECS container agent don't properly handle\n\t\t\t\t\tentryPoint parameters. If you have problems using\n\t\t\t\t\tentryPoint, update your container agent or enter your commands and\n\t\t\t\targuments as command array items instead.

\n\t\t
\n\t\t

The entry point that's passed to the container. This parameter maps to\n\t\t\t\tEntrypoint in the Create a container section of the\n\t\t\tDocker Remote API and the --entrypoint option to docker run. For more information, see https://docs.docker.com/engine/reference/builder/#entrypoint.

" } }, "command": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The command that is passed to the container. This parameter maps to Cmd\n\t\t\tin the Create a container section of the Docker Remote API and the\n\t\t\t\tCOMMAND parameter to docker\n\t\t\t\trun. For more information, see https://docs.docker.com/engine/reference/builder/#cmd. If there are multiple arguments, each\n\t\t\targument should be a separated string in the array.

" + "smithy.api#documentation": "

The command that's passed to the container. This parameter maps to Cmd in\n\t\t\tthe Create a container section of the Docker Remote API and the\n\t\t\t\tCOMMAND parameter to docker\n\t\t\t\trun. For more information, see https://docs.docker.com/engine/reference/builder/#cmd. If there are multiple arguments, each\n\t\t\targument is a separated string in the array.

" } }, "environment": { "target": "com.amazonaws.ecs#EnvironmentVariables", "traits": { - "smithy.api#documentation": "

The environment variables to pass to a container. This parameter maps to\n\t\t\t\tEnv in the Create a container section of the\n\t\t\tDocker Remote API and the --env option to docker run.

\n\t\t \n\t\t\t

We do not recommend using plaintext environment variables for sensitive\n\t\t\t\tinformation, such as credential data.

\n\t\t
" + "smithy.api#documentation": "

The environment variables to pass to a container. This parameter maps to\n\t\t\t\tEnv in the Create a container section of the\n\t\t\tDocker Remote API and the --env option to docker run.

\n\t\t \n\t\t\t

We don't recommend that you use plaintext environment variables for sensitive\n\t\t\t\tinformation, such as credential data.

\n\t\t
" } }, "environmentFiles": { "target": "com.amazonaws.ecs#EnvironmentFiles", "traits": { - "smithy.api#documentation": "

A list of files containing the environment variables to pass to a container. This\n\t\t\tparameter maps to the --env-file option to docker run.

\n\t\t

You can specify up to ten environment files. The file must have a .env\n\t\t\tfile extension. Each line in an environment file should contain an environment variable\n\t\t\tin VARIABLE=VALUE format. Lines beginning with # are treated\n\t\t\tas comments and are ignored. For more information on the environment variable file\n\t\t\tsyntax, see Declare default\n\t\t\t\tenvironment variables in file.

\n\t\t

If there are environment variables specified using the environment\n\t\t\tparameter in a container definition, they take precedence over the variables contained\n\t\t\twithin an environment file. If multiple environment files are specified that contain the\n\t\t\tsame variable, they are processed from the top down. It is recommended to use unique\n\t\t\tvariable names. For more information, see Specifying Environment\n\t\t\t\tVariables in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

A list of files containing the environment variables to pass to a container. This\n\t\t\tparameter maps to the --env-file option to docker run.

\n\t\t

You can specify up to ten environment files. The file must have a .env\n\t\t\tfile extension. Each line in an environment file contains an environment variable in\n\t\t\t\tVARIABLE=VALUE format. Lines beginning with # are treated\n\t\t\tas comments and are ignored. For more information about the environment variable file\n\t\t\tsyntax, see Declare default\n\t\t\t\tenvironment variables in file.

\n\t\t

If there are environment variables specified using the environment\n\t\t\tparameter in a container definition, they take precedence over the variables contained\n\t\t\twithin an environment file. If multiple environment files are specified that contain the\n\t\t\tsame variable, they're processed from the top down. We recommend that you use unique\n\t\t\tvariable names. For more information, see Specifying Environment\n\t\t\t\tVariables in the Amazon Elastic Container Service Developer Guide.

" } }, "mountPoints": { "target": "com.amazonaws.ecs#MountPointList", "traits": { - "smithy.api#documentation": "

The mount points for data volumes in your container.

\n\t\t

This parameter maps to Volumes in the Create a container\n\t\t\tsection of the Docker Remote API and the --volume option to docker run.

\n\t\t

Windows containers can mount whole directories on the same drive as\n\t\t\t\t$env:ProgramData. Windows containers cannot mount directories on a\n\t\t\tdifferent drive, and mount point cannot be across drives.

" + "smithy.api#documentation": "

The mount points for data volumes in your container.

\n\t\t

This parameter maps to Volumes in the Create a container\n\t\t\tsection of the Docker Remote API and the --volume option to docker run.

\n\t\t

Windows containers can mount whole directories on the same drive as\n\t\t\t\t$env:ProgramData. Windows containers can't mount directories on a\n\t\t\tdifferent drive, and mount point can't be across drives.

" } }, "volumesFrom": { @@ -1205,85 +1205,85 @@ "dependsOn": { "target": "com.amazonaws.ecs#ContainerDependencies", "traits": { - "smithy.api#documentation": "

The dependencies defined for container startup and shutdown. A container can contain\n\t\t\tmultiple dependencies. When a dependency is defined for container startup, for container\n\t\t\tshutdown it is reversed.

\n\t\t

For tasks using the EC2 launch type, the container instances require at\n\t\t\tleast version 1.26.0 of the container agent to enable container dependencies. However,\n\t\t\twe recommend using the latest container agent version. For information about checking\n\t\t\tyour agent version and updating to the latest version, see Updating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you are\n\t\t\tusing an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

\n\t\t

For tasks using the Fargate launch type, the task or service requires the followiwng platforms:

\n\t\t " + "smithy.api#documentation": "

The dependencies defined for container startup and shutdown. A container can contain\n\t\t\tmultiple dependencies. When a dependency is defined for container startup, for container\n\t\t\tshutdown it is reversed.

\n\t\t

For tasks using the EC2 launch type, the container instances require at\n\t\t\tleast version 1.26.0 of the container agent to enable container dependencies. However,\n\t\t\twe recommend using the latest container agent version. For information about checking\n\t\t\tyour agent version and updating to the latest version, see Updating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you're using\n\t\t\tan Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

\n\t\t

For tasks using the Fargate launch type, the task or service requires\n\t\t\tthe following platforms:

\n\t\t " } }, "startTimeout": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

Time duration (in seconds) to wait before giving up on resolving dependencies for a\n\t\t\tcontainer. For example, you specify two containers in a task definition with containerA\n\t\t\thaving a dependency on containerB reaching a COMPLETE,\n\t\t\tSUCCESS, or HEALTHY status. If a startTimeout\n\t\t\tvalue is specified for containerB and it does not reach the desired status within that\n\t\t\ttime then containerA will give up and not start. This results in the task transitioning\n\t\t\tto a STOPPED state.

\n\t\t \n\t\t\t

When the ECS_CONTAINER_START_TIMEOUT container agent configuration\n\t\t\t\tvariable is used, it is enforced indendently from this start timeout value.

\n\t\t
\n\t\t

For tasks using the Fargate launch type, the task or service requires the followiwng platforms:

\n\t\t \n\t\t

For tasks using the EC2 launch type, your container instances require at\n\t\t\tleast version 1.26.0 of the container agent to enable a container start\n\t\t\ttimeout value. However, we recommend using the latest container agent version. For\n\t\t\tinformation about checking your agent version and updating to the latest version, see\n\t\t\t\tUpdating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you are\n\t\t\tusing an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of\n\t\t\tthe ecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Time duration (in seconds) to wait before giving up on resolving dependencies for a\n\t\t\tcontainer. For example, you specify two containers in a task definition with containerA\n\t\t\thaving a dependency on containerB reaching a COMPLETE,\n\t\t\tSUCCESS, or HEALTHY status. If a startTimeout\n\t\t\tvalue is specified for containerB and it doesn't reach the desired status within that\n\t\t\ttime then containerA gives up and not start. This results in the task transitioning to a\n\t\t\t\tSTOPPED state.

\n\t\t \n\t\t\t

When the ECS_CONTAINER_START_TIMEOUT container agent configuration\n\t\t\t\tvariable is used, it's enforced independently from this start timeout value.

\n\t\t
\n\t\t

For tasks using the Fargate launch type, the task or service requires\n\t\t\tthe following platforms:

\n\t\t \n\t\t

For tasks using the EC2 launch type, your container instances require at\n\t\t\tleast version 1.26.0 of the container agent to enable a container start\n\t\t\ttimeout value. However, we recommend using the latest container agent version. For\n\t\t\tinformation about checking your agent version and updating to the latest version, see\n\t\t\t\tUpdating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you're using\n\t\t\tan Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" } }, "stopTimeout": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

Time duration (in seconds) to wait before the container is forcefully killed if it\n\t\t\tdoesn't exit normally on its own.

\n\t\t

For tasks using the Fargate launch type, the task or service requires the followiwng platforms:

\n\t\t \n\t\t

The max stop timeout value is 120 seconds and if the\n\t\t\tparameter is not specified, the default value of 30 seconds is used.

\n\t\t

For tasks using the EC2 launch type, if the stopTimeout\n\t\t\tparameter is not specified, the value set for the Amazon ECS container agent configuration\n\t\t\tvariable ECS_CONTAINER_STOP_TIMEOUT is used by default. If neither the\n\t\t\t\tstopTimeout parameter or the ECS_CONTAINER_STOP_TIMEOUT\n\t\t\tagent configuration variable are set, then the default values of 30 seconds for Linux\n\t\t\tcontainers and 30 seconds on Windows containers are used. Your container instances\n\t\t\trequire at least version 1.26.0 of the container agent to enable a container stop\n\t\t\ttimeout value. However, we recommend using the latest container agent version. For\n\t\t\tinformation about checking your agent version and updating to the latest version, see\n\t\t\t\tUpdating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you are\n\t\t\tusing an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Time duration (in seconds) to wait before the container is forcefully killed if it\n\t\t\tdoesn't exit normally on its own.

\n\t\t

For tasks using the Fargate launch type, the task or service requires\n\t\t\tthe following platforms:

\n\t\t \n\t\t

The max stop timeout value is 120 seconds and if the parameter is not specified, the\n\t\t\tdefault value of 30 seconds is used.

\n\t\t

For tasks that use the EC2 launch type, if the stopTimeout\n\t\t\tparameter isn't specified, the value set for the Amazon ECS container agent configuration\n\t\t\tvariable ECS_CONTAINER_STOP_TIMEOUT is used. If neither the\n\t\t\t\tstopTimeout parameter or the ECS_CONTAINER_STOP_TIMEOUT\n\t\t\tagent configuration variable are set, then the default values of 30 seconds for Linux\n\t\t\tcontainers and 30 seconds on Windows containers are used. Your container instances\n\t\t\trequire at least version 1.26.0 of the container agent to enable a container stop\n\t\t\ttimeout value. However, we recommend using the latest container agent version. For\n\t\t\tinformation about checking your agent version and updating to the latest version, see\n\t\t\t\tUpdating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you're using\n\t\t\tan Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" } }, "hostname": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The hostname to use for your container. This parameter maps to Hostname\n\t\t\tin the Create a container section of the Docker Remote API and the\n\t\t\t\t--hostname option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

The hostname parameter is not supported if you are using the\n\t\t\t\t\tawsvpc network mode.

\n\t\t
" + "smithy.api#documentation": "

The hostname to use for your container. This parameter maps to Hostname\n\t\t\tin the Create a container section of the Docker Remote API and the\n\t\t\t\t--hostname option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

The hostname parameter is not supported if you're using the\n\t\t\t\t\tawsvpc network mode.

\n\t\t
" } }, "user": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The user to use inside the container. This parameter maps to User in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--user option to docker\n\t\t\trun.

\n\t\t \n\t\t\t

When running tasks using the host network mode, you should not run\n\t\t\t\tcontainers using the root user (UID 0). It is considered best practice to use a\n\t\t\t\tnon-root user.

\n\t\t
\n\t\t

You can specify the user using the following formats. If specifying a UID\n\t\t\tor GID, you must specify it as a positive integer.

\n\t\t \n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

The user to use inside the container. This parameter maps to User in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--user option to docker\n\t\t\trun.

\n\t\t \n\t\t\t

When running tasks using the host network mode, don't run containers\n\t\t\t\tusing the root user (UID 0). We recommend using a non-root user for better\n\t\t\t\tsecurity.

\n\t\t
\n\t\t

You can specify the user using the following formats. If specifying a UID\n\t\t\tor GID, you must specify it as a positive integer.

\n\t\t \n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "workingDirectory": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The working directory in which to run commands inside the container. This parameter\n\t\t\tmaps to WorkingDir in the Create a container section of the\n\t\t\tDocker Remote API and the --workdir option to docker run.

" + "smithy.api#documentation": "

The working directory to run commands inside the container in. This parameter maps to\n\t\t\t\tWorkingDir in the Create a container section of the\n\t\t\tDocker Remote API and the --workdir option to docker run.

" } }, "disableNetworking": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

When this parameter is true, networking is disabled within the container. This\n\t\t\tparameter maps to NetworkDisabled in the Create a container\n\t\t\tsection of the Docker Remote API.

\n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

When this parameter is true, networking is disabled within the container. This\n\t\t\tparameter maps to NetworkDisabled in the Create a container\n\t\t\tsection of the Docker Remote API.

\n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "privileged": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

When this parameter is true, the container is given elevated privileges on the host\n\t\t\tcontainer instance (similar to the root user). This parameter maps to\n\t\t\t\tPrivileged in the Create a container section of the\n\t\t\tDocker Remote API and the --privileged option to docker run.

\n \n

This parameter is not supported for Windows containers or tasks run on Fargate.

\n
" + "smithy.api#documentation": "

When this parameter is true, the container is given elevated privileges on the host\n\t\t\tcontainer instance (similar to the root user). This parameter maps to\n\t\t\t\tPrivileged in the Create a container section of the\n\t\t\tDocker Remote API and the --privileged option to docker run.

\n\t\t \n

This parameter is not supported for Windows containers or tasks run on Fargate.

\n
" } }, "readonlyRootFilesystem": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

When this parameter is true, the container is given read-only access to its root file\n\t\t\tsystem. This parameter maps to ReadonlyRootfs in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--read-only option to docker\n\t\t\t\trun.

\n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

When this parameter is true, the container is given read-only access to its root file\n\t\t\tsystem. This parameter maps to ReadonlyRootfs in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--read-only option to docker\n\t\t\t\trun.

\n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "dnsServers": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

A list of DNS servers that are presented to the container. This parameter maps to\n\t\t\t\tDns in the Create a container section of the\n\t\t\tDocker Remote API and the --dns option to docker run.

\n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

A list of DNS servers that are presented to the container. This parameter maps to\n\t\t\t\tDns in the Create a container section of the\n\t\t\tDocker Remote API and the --dns option to docker run.

\n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "dnsSearchDomains": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

A list of DNS search domains that are presented to the container. This parameter maps\n\t\t\tto DnsSearch in the Create a container section of the\n\t\t\tDocker Remote API and the --dns-search option to docker run.

\n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

A list of DNS search domains that are presented to the container. This parameter maps\n\t\t\tto DnsSearch in the Create a container section of the\n\t\t\tDocker Remote API and the --dns-search option to docker run.

\n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "extraHosts": { "target": "com.amazonaws.ecs#HostEntryList", "traits": { - "smithy.api#documentation": "

A list of hostnames and IP address mappings to append to the /etc/hosts\n\t\t\tfile on the container. This parameter maps to ExtraHosts in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--add-host option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

This parameter is not supported for Windows containers or tasks that use the\n\t\t\t\t\tawsvpc network mode.

\n\t\t
" + "smithy.api#documentation": "

A list of hostnames and IP address mappings to append to the /etc/hosts\n\t\t\tfile on the container. This parameter maps to ExtraHosts in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--add-host option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

This parameter isn't supported for Windows containers or tasks that use the\n\t\t\t\t\tawsvpc network mode.

\n\t\t
" } }, "dockerSecurityOptions": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

A list of strings to provide custom labels for SELinux and AppArmor multi-level\n\t\t\tsecurity systems. This field is not valid for containers in tasks using the\n\t\t\tFargate launch type.

\n\t\t

With Windows containers, this parameter can be used to reference a credential spec\n\t\t\tfile when configuring a container for Active Directory authentication. For more\n\t\t\tinformation, see Using gMSAs for Windows\n\t\t\t\tContainers in the Amazon Elastic Container Service Developer Guide.

\n\t\t

This parameter maps to SecurityOpt in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--security-opt option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

The Amazon ECS container agent running on a container instance must register with the\n\t\t\t\t\tECS_SELINUX_CAPABLE=true or ECS_APPARMOR_CAPABLE=true\n\t\t\t\tenvironment variables before containers placed on that instance can use these\n\t\t\t\tsecurity options. For more information, see Amazon ECS Container\n\t\t\t\t\tAgent Configuration in the Amazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

For more information about valid values, see Docker\n\t\t\t\tRun Security Configuration.

\n\t\t

Valid values: \"no-new-privileges\" | \"apparmor:PROFILE\" | \"label:value\" |\n\t\t\t\"credentialspec:CredentialSpecFilePath\"

" + "smithy.api#documentation": "

A list of strings to provide custom labels for SELinux and AppArmor multi-level\n\t\t\tsecurity systems. This field isn't valid for containers in tasks using the\n\t\t\tFargate launch type.

\n\t\t

With Windows containers, this parameter can be used to reference a credential spec\n\t\t\tfile when configuring a container for Active Directory authentication. For more\n\t\t\tinformation, see Using gMSAs for Windows\n\t\t\t\tContainers in the Amazon Elastic Container Service Developer Guide.

\n\t\t

This parameter maps to SecurityOpt in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--security-opt option to docker\n\t\t\t\trun.

\n\t\t \n\t\t\t

The Amazon ECS container agent running on a container instance must register with the\n\t\t\t\t\tECS_SELINUX_CAPABLE=true or ECS_APPARMOR_CAPABLE=true\n\t\t\t\tenvironment variables before containers placed on that instance can use these\n\t\t\t\tsecurity options. For more information, see Amazon ECS Container\n\t\t\t\t\tAgent Configuration in the Amazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

For more information about valid values, see Docker\n\t\t\t\tRun Security Configuration.

\n\t\t

Valid values: \"no-new-privileges\" | \"apparmor:PROFILE\" | \"label:value\" |\n\t\t\t\"credentialspec:CredentialSpecFilePath\"

" } }, "interactive": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

When this parameter is true, this allows you to deploy containerized\n\t\t\tapplications that require stdin or a tty to be allocated. This\n\t\t\tparameter maps to OpenStdin in the Create a container\n\t\t\tsection of the Docker Remote API and the --interactive option to docker run.

" + "smithy.api#documentation": "

When this parameter is true, you can deploy containerized applications\n\t\t\tthat require stdin or a tty to be allocated. This parameter\n\t\t\tmaps to OpenStdin in the Create a container section of the\n\t\t\tDocker Remote API and the --interactive option to docker run.

" } }, "pseudoTerminal": { @@ -1301,13 +1301,13 @@ "ulimits": { "target": "com.amazonaws.ecs#UlimitList", "traits": { - "smithy.api#documentation": "

A list of ulimits to set in the container. If a ulimit value is specified\n\t\t\tin a task definition, it will override the default values set by Docker. This parameter\n\t\t\tmaps to Ulimits in the Create a container section of the\n\t\t\tDocker Remote API and the --ulimit option to docker run. Valid naming values are displayed\n\t\t\tin the Ulimit data type.

\n\t\t

Amazon ECS tasks hosted on Fargate use the default\n\t\t\t\t\t\t\tresource limit values set by the operating system with the exception of\n\t\t\t\t\t\t\tthe nofile resource limit parameter which Fargate\n\t\t\t\t\t\t\toverrides. The nofile resource limit sets a restriction on\n\t\t\t\t\t\t\tthe number of open files that a container can use. The default\n\t\t\t\t\t\t\t\tnofile soft limit is 1024 and hard limit\n\t\t\t\t\t\t\tis 4096.

\n\t\t

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: sudo docker version --format '{{.Server.APIVersion}}'\n

\n \n

This parameter is not supported for Windows containers.

\n
" + "smithy.api#documentation": "

A list of ulimits to set in the container. If a ulimit value is specified\n\t\t\tin a task definition, it overrides the default values set by Docker. This parameter maps\n\t\t\tto Ulimits in the Create a container section of the\n\t\t\tDocker Remote API and the --ulimit option to docker run. Valid naming values are displayed\n\t\t\tin the Ulimit data type.

\n\t\t

Amazon ECS tasks hosted on Fargate use the default\n\t\t\t\t\t\t\tresource limit values set by the operating system with the exception of\n\t\t\t\t\t\t\tthe nofile resource limit parameter which Fargate\n\t\t\t\t\t\t\toverrides. The nofile resource limit sets a restriction on\n\t\t\t\t\t\t\tthe number of open files that a container can use. The default\n\t\t\t\t\t\t\t\tnofile soft limit is 1024 and hard limit\n\t\t\t\t\t\t\tis 4096.

\n\t\t

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: sudo docker version --format '{{.Server.APIVersion}}'\n

\n\t\t \n

This parameter is not supported for Windows containers.

\n
" } }, "logConfiguration": { "target": "com.amazonaws.ecs#LogConfiguration", "traits": { - "smithy.api#documentation": "

The log configuration specification for the container.

\n\t\t

This parameter maps to LogConfig in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--log-driver option to docker\n\t\t\t\trun. By default, containers use the same logging driver that the Docker\n\t\t\tdaemon uses. However the container may use a different logging driver than the Docker\n\t\t\tdaemon by specifying a log driver with this parameter in the container definition. To\n\t\t\tuse a different logging driver for a container, the log system must be configured\n\t\t\tproperly on the container instance (or on a different log server for remote logging\n\t\t\toptions). For more information on the options for different supported log drivers, see\n\t\t\t\tConfigure\n\t\t\t\tlogging drivers in the Docker documentation.

\n\t\t \n\t\t\t

Amazon ECS currently supports a subset of the logging drivers available to the Docker\n\t\t\t\tdaemon (shown in the LogConfiguration data type). Additional log\n\t\t\t\tdrivers may be available in future releases of the Amazon ECS container agent.

\n\t\t
\n\t\t

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: sudo docker version --format '{{.Server.APIVersion}}' \n

\n\t\t \n\t\t\t

The Amazon ECS container agent running on a container instance must register the\n\t\t\t\tlogging drivers available on that instance with the\n\t\t\t\t\tECS_AVAILABLE_LOGGING_DRIVERS environment variable before\n\t\t\t\tcontainers placed on that instance can use these log configuration options. For more\n\t\t\t\tinformation, see Amazon ECS Container\n\t\t\t\t\tAgent Configuration in the Amazon Elastic Container Service Developer Guide.

\n\t\t
" + "smithy.api#documentation": "

The log configuration specification for the container.

\n\t\t

This parameter maps to LogConfig in the\n\t\t\tCreate a container section of the Docker Remote API and the\n\t\t\t\t--log-driver option to docker\n\t\t\t\trun. By default, containers use the same logging driver that the Docker\n\t\t\tdaemon uses. However the container can use a different logging driver than the Docker\n\t\t\tdaemon by specifying a log driver with this parameter in the container definition. To\n\t\t\tuse a different logging driver for a container, the log system must be configured\n\t\t\tproperly on the container instance (or on a different log server for remote logging\n\t\t\toptions). For more information about the options for different supported log drivers,\n\t\t\tsee Configure\n\t\t\t\tlogging drivers in the Docker documentation.

\n\t\t \n\t\t\t

Amazon ECS currently supports a subset of the logging drivers available to the Docker\n\t\t\t\tdaemon (shown in the LogConfiguration data type). Additional log\n\t\t\t\tdrivers may be available in future releases of the Amazon ECS container agent.

\n\t\t
\n\t\t

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: sudo docker version --format '{{.Server.APIVersion}}' \n

\n\t\t \n\t\t\t

The Amazon ECS container agent running on a container instance must register the\n\t\t\t\tlogging drivers available on that instance with the\n\t\t\t\t\tECS_AVAILABLE_LOGGING_DRIVERS environment variable before\n\t\t\t\tcontainers placed on that instance can use these log configuration options. For more\n\t\t\t\tinformation, see Amazon ECS Container\n\t\t\t\t\tAgent Configuration in the Amazon Elastic Container Service Developer Guide.

\n\t\t
" } }, "healthCheck": { @@ -1319,7 +1319,7 @@ "systemControls": { "target": "com.amazonaws.ecs#SystemControls", "traits": { - "smithy.api#documentation": "

A list of namespaced kernel parameters to set in the container. This parameter maps to\n\t\t\t\tSysctls in the Create a container section of the\n\t\t\tDocker Remote API and the --sysctl option to docker run.

\n\t\t \n\t\t\t

It is not recommended that you specify network-related systemControls\n\t\t\t\tparameters for multiple containers in a single task that also uses either the\n\t\t\t\t\tawsvpc or host network modes. For tasks that use the\n\t\t\t\t\tawsvpc network mode, the container that is started last determines\n\t\t\t\twhich systemControls parameters take effect. For tasks that use the\n\t\t\t\t\thost network mode, it changes the container instance's namespaced\n\t\t\t\tkernel parameters as well as the containers.

\n\t\t
" + "smithy.api#documentation": "

A list of namespaced kernel parameters to set in the container. This parameter maps to\n\t\t\t\tSysctls in the Create a container section of the\n\t\t\tDocker Remote API and the --sysctl option to docker run.

\n\t\t \n\t\t\t

We don't recommended that you specify network-related systemControls\n\t\t\t\tparameters for multiple containers in a single task that also uses either the\n\t\t\t\t\tawsvpc or host network modes. For tasks that use the\n\t\t\t\t\tawsvpc network mode, the container that's started last determines\n\t\t\t\twhich systemControls parameters take effect. For tasks that use the\n\t\t\t\t\thost network mode, it changes the container instance's namespaced\n\t\t\t\tkernel parameters as well as the containers.

\n\t\t
" } }, "resourceRequirements": { @@ -1364,13 +1364,13 @@ "condition": { "target": "com.amazonaws.ecs#ContainerCondition", "traits": { - "smithy.api#documentation": "

The dependency condition of the container. The following are the available conditions\n\t\t\tand their behavior:

\n\t\t ", + "smithy.api#documentation": "

The dependency condition of the container. The following are the available conditions\n\t\t\tand their behavior:

\n\t\t ", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

The dependencies defined for container startup and shutdown. A container can contain\n\t\t\tmultiple dependencies. When a dependency is defined for container startup, for container\n\t\t\tshutdown it is reversed.

\n\t\t

Your Amazon ECS container instances require at least version 1.26.0 of the container agent\n\t\t\tto enable container dependencies. However, we recommend using the latest container agent\n\t\t\tversion. For information about checking your agent version and updating to the latest\n\t\t\tversion, see Updating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you are\n\t\t\tusing an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

For tasks using the Fargate launch type, the task or service requires the followiwng platforms:

\n\t\t\t \n\t\t
" + "smithy.api#documentation": "

The dependencies defined for container startup and shutdown. A container can contain\n\t\t\tmultiple dependencies. When a dependency is defined for container startup, for container\n\t\t\tshutdown it is reversed.

\n\t\t

Your Amazon ECS container instances require at least version 1.26.0 of the container agent\n\t\t\tto enable container dependencies. However, we recommend using the latest container agent\n\t\t\tversion. For information about checking your agent version and updating to the latest\n\t\t\tversion, see Updating the Amazon ECS\n\t\t\t\tContainer Agent in the Amazon Elastic Container Service Developer Guide. If you're using\n\t\t\tan Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the\n\t\t\t\tecs-init package. If your container instances are launched from version\n\t\t\t\t20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

For tasks that use the Fargate launch type, the task or service\n\t\t\t\trequires the following platforms:

\n\t\t\t \n\t\t
" } }, "com.amazonaws.ecs#ContainerInstance": { @@ -1391,13 +1391,13 @@ "capacityProviderName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The capacity provider associated with the container instance.

" + "smithy.api#documentation": "

The capacity provider that's associated with the container instance.

" } }, "version": { "target": "com.amazonaws.ecs#Long", "traits": { - "smithy.api#documentation": "

The version counter for the container instance. Every time a container instance\n\t\t\texperiences a change that triggers a CloudWatch event, the version counter is\n\t\t\tincremented. If you are replicating your Amazon ECS container instance state with CloudWatch\n\t\t\tEvents, you can compare the version of a container instance reported by the Amazon ECS APIs\n\t\t\twith the version reported in CloudWatch Events for the container instance (inside the\n\t\t\t\tdetail object) to verify that the version in your event stream is\n\t\t\tcurrent.

" + "smithy.api#documentation": "

The version counter for the container instance. Every time a container instance\n\t\t\texperiences a change that triggers a CloudWatch event, the version counter is\n\t\t\tincremented. If you're replicating your Amazon ECS container instance state with CloudWatch\n\t\t\tEvents, you can compare the version of a container instance reported by the Amazon ECS APIs\n\t\t\twith the version reported in CloudWatch Events for the container instance (inside the\n\t\t\t\tdetail object) to verify that the version in your event stream is\n\t\t\tcurrent.

" } }, "versionInfo": { @@ -1409,7 +1409,7 @@ "remainingResources": { "target": "com.amazonaws.ecs#Resources", "traits": { - "smithy.api#documentation": "

For CPU and memory resource types, this parameter describes the remaining CPU and\n\t\t\tmemory that has not already been allocated to tasks and is therefore available for new\n\t\t\ttasks. For port resource types, this parameter describes the ports that were reserved by\n\t\t\tthe Amazon ECS container agent (at instance registration time) and any task containers that\n\t\t\thave reserved port mappings on the host (with the host or\n\t\t\t\tbridge network mode). Any port that is not specified here is available\n\t\t\tfor new tasks.

" + "smithy.api#documentation": "

For CPU and memory resource types, this parameter describes the remaining CPU and\n\t\t\tmemory that wasn't already allocated to tasks and is therefore available for new tasks.\n\t\t\tFor port resource types, this parameter describes the ports that were reserved by the\n\t\t\tAmazon ECS container agent (at instance registration time) and any task containers that have\n\t\t\treserved port mappings on the host (with the host or bridge\n\t\t\tnetwork mode). Any port that's not specified here is available for new tasks.

" } }, "registeredResources": { @@ -1421,7 +1421,7 @@ "status": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The status of the container instance. The valid values are REGISTERING,\n\t\t\t\tREGISTRATION_FAILED, ACTIVE, INACTIVE,\n\t\t\t\tDEREGISTERING, or DRAINING.

\n\t\t

If your account has opted in to the awsvpcTrunking account setting, then\n\t\t\tany newly registered container instance will transition to a REGISTERING\n\t\t\tstatus while the trunk elastic network interface is provisioned for the instance. If the\n\t\t\tregistration fails, the instance will transition to a REGISTRATION_FAILED\n\t\t\tstatus. You can describe the container instance and see the reason for failure in the\n\t\t\t\tstatusReason parameter. Once the container instance is terminated, the\n\t\t\tinstance transitions to a DEREGISTERING status while the trunk elastic\n\t\t\tnetwork interface is deprovisioned. The instance then transitions to an\n\t\t\t\tINACTIVE status.

\n\t\t

The ACTIVE status indicates that the container instance can accept tasks.\n\t\t\tThe DRAINING indicates that new tasks are not placed on the container\n\t\t\tinstance and any service tasks running on the container instance are removed if\n\t\t\tpossible. For more information, see Container Instance Draining in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The status of the container instance. The valid values are REGISTERING,\n\t\t\t\tREGISTRATION_FAILED, ACTIVE, INACTIVE,\n\t\t\t\tDEREGISTERING, or DRAINING.

\n\t\t

If your account has opted in to the awsvpcTrunking account setting, then\n\t\t\tany newly registered container instance will transition to a REGISTERING\n\t\t\tstatus while the trunk elastic network interface is provisioned for the instance. If the\n\t\t\tregistration fails, the instance will transition to a REGISTRATION_FAILED\n\t\t\tstatus. You can describe the container instance and see the reason for failure in the\n\t\t\t\tstatusReason parameter. Once the container instance is terminated, the\n\t\t\tinstance transitions to a DEREGISTERING status while the trunk elastic\n\t\t\tnetwork interface is deprovisioned. The instance then transitions to an\n\t\t\t\tINACTIVE status.

\n\t\t

The ACTIVE status indicates that the container instance can accept tasks.\n\t\t\tThe DRAINING indicates that new tasks aren't placed on the container\n\t\t\tinstance and any service tasks running on the container instance are removed if\n\t\t\tpossible. For more information, see Container Instance Draining in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "statusReason": { @@ -1451,7 +1451,7 @@ "agentUpdateStatus": { "target": "com.amazonaws.ecs#AgentUpdateStatus", "traits": { - "smithy.api#documentation": "

The status of the most recent agent update. If an update has never been requested,\n\t\t\tthis value is NULL.

" + "smithy.api#documentation": "

The status of the most recent agent update. If an update wasn't ever requested, this\n\t\t\tvalue is NULL.

" } }, "attributes": { @@ -1463,7 +1463,7 @@ "registeredAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the container instance was registered.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the container instance was registered.

" } }, "attachments": { @@ -1475,12 +1475,18 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the container instance to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value, both of which you\n\t\t\tdefine.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the container instance to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " + } + }, + "healthStatus": { + "target": "com.amazonaws.ecs#ContainerInstanceHealthStatus", + "traits": { + "smithy.api#documentation": "

An object representing the health status of the container instance.

" } } }, "traits": { - "smithy.api#documentation": "

An EC2 instance that is running the Amazon ECS agent and has been registered with a\n\t\t\tcluster.

" + "smithy.api#documentation": "

An EC2 instance that's running the Amazon ECS agent and has been registered with a\n\t\t\tcluster.

" } }, "com.amazonaws.ecs#ContainerInstanceField": { @@ -1490,6 +1496,10 @@ { "value": "TAGS", "name": "TAGS" + }, + { + "value": "CONTAINER_INSTANCE_HEALTH", + "name": "CONTAINER_INSTANCE_HEALTH" } ] } @@ -1500,6 +1510,26 @@ "target": "com.amazonaws.ecs#ContainerInstanceField" } }, + "com.amazonaws.ecs#ContainerInstanceHealthStatus": { + "type": "structure", + "members": { + "overallStatus": { + "target": "com.amazonaws.ecs#InstanceHealthCheckState", + "traits": { + "smithy.api#documentation": "

The overall health status of the container instance. This is an aggregate status of\n\t\t\tall container instance health checks.

" + } + }, + "details": { + "target": "com.amazonaws.ecs#InstanceHealthCheckResultList", + "traits": { + "smithy.api#documentation": "

An array of objects representing the details of the container instance health\n\t\t\tstatus.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

An object representing the health status of the container instance.

" + } + }, "com.amazonaws.ecs#ContainerInstanceStatus": { "type": "string", "traits": { @@ -1586,7 +1616,7 @@ } }, "traits": { - "smithy.api#documentation": "

The overrides that should be sent to a container. An empty container override can be\n\t\t\tpassed in. An example of an empty container override would be\n\t\t\t\t{\"containerOverrides\": [ ] }. If a non-empty container override is\n\t\t\tspecified, the name parameter must be included.

" + "smithy.api#documentation": "

The overrides that are sent to a container. An empty container override can be passed\n\t\t\tin. An example of an empty container override is {\"containerOverrides\": [ ]\n\t\t\t\t}. If a non-empty container override is specified, the name\n\t\t\tparameter must be included.

" } }, "com.amazonaws.ecs#ContainerOverrides": { @@ -1625,7 +1655,7 @@ "networkBindings": { "target": "com.amazonaws.ecs#NetworkBindings", "traits": { - "smithy.api#documentation": "

Any network bindings associated with the container.

" + "smithy.api#documentation": "

Any network bindings that are associated with the container.

" } }, "reason": { @@ -1642,7 +1672,7 @@ } }, "traits": { - "smithy.api#documentation": "

An object representing a change in state for a container.

" + "smithy.api#documentation": "

An object that represents a change in state for a container.

" } }, "com.amazonaws.ecs#ContainerStateChanges": { @@ -1683,7 +1713,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a new capacity provider. Capacity providers are associated with an Amazon ECS\n\t\t\tcluster and are used in capacity provider strategies to facilitate cluster auto\n\t\t\tscaling.

\n\t\t

Only capacity providers using an Auto Scaling group can be created. Amazon ECS tasks on\n\t\t\tFargate use the FARGATE and FARGATE_SPOT capacity providers\n\t\t\twhich are already created and available to all accounts in Regions supported by\n\t\t\tFargate.

" + "smithy.api#documentation": "

Creates a new capacity provider. Capacity providers are associated with an Amazon ECS\n\t\t\tcluster and are used in capacity provider strategies to facilitate cluster auto\n\t\t\tscaling.

\n\t\t

Only capacity providers that use an Auto Scaling group can be created. Amazon ECS tasks on\n\t\t\tFargate use the FARGATE and FARGATE_SPOT capacity providers.\n\t\t\tThese providers are available to all accounts in the Amazon Web Services Regions that Fargate\n\t\t\tsupports.

" } }, "com.amazonaws.ecs#CreateCapacityProviderRequest": { @@ -1692,7 +1722,7 @@ "name": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of the capacity provider. Up to 255 characters are allowed, including letters\n\t\t\t(upper and lowercase), numbers, underscores, and hyphens. The name cannot be prefixed\n\t\t\twith \"aws\", \"ecs\", or \"fargate\".

", + "smithy.api#documentation": "

The name of the capacity provider. Up to 255 characters are allowed. They include\n\t\t\tletters (both upper and lowercase letters), numbers, underscores (_), and hyphens (-).\n\t\t\tThe name can't be prefixed with \"aws\", \"ecs\", or\n\t\t\t\t\"fargate\".

", "smithy.api#required": {} } }, @@ -1706,7 +1736,7 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the capacity provider to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value, both of which you\n\t\t\tdefine.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the capacity provider to categorize and organize them\n\t\t\tmore conveniently. Each tag consists of a key and an optional value. You define both of\n\t\t\tthem.

\n\t\t

The following basic restrictions apply to tags:

\n " } } } @@ -1742,7 +1772,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a new Amazon ECS cluster. By default, your account receives a default\n\t\t\tcluster when you launch your first container instance. However, you can create your own\n\t\t\tcluster with a unique name with the CreateCluster action.

\n\t\t \n\t\t\t

When you call the CreateCluster API operation, Amazon ECS attempts to\n\t\t\t\tcreate the Amazon ECS service-linked role for your account so that required resources in\n\t\t\t\tother Amazon Web Services services can be managed on your behalf. However, if the IAM user that\n\t\t\t\tmakes the call does not have permissions to create the service-linked role, it is\n\t\t\t\tnot created. For more information, see Using\n\t\t\t\t\tService-Linked Roles for Amazon ECS in the\n\t\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
" + "smithy.api#documentation": "

Creates a new Amazon ECS cluster. By default, your account receives a default\n\t\t\tcluster when you launch your first container instance. However, you can create your own\n\t\t\tcluster with a unique name with the CreateCluster action.

\n\t\t \n\t\t\t

When you call the CreateCluster API operation, Amazon ECS attempts to\n\t\t\t\tcreate the Amazon ECS service-linked role for your account. This is so that it can manage\n\t\t\t\trequired resources in other Amazon Web Services services on your behalf. However, if the IAM user\n\t\t\t\tthat makes the call doesn't have permissions to create the service-linked role, it\n\t\t\t\tisn't created. For more information, see Using\n\t\t\t\t\tService-Linked Roles for Amazon ECS in the\n\t\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
" } }, "com.amazonaws.ecs#CreateClusterRequest": { @@ -1751,37 +1781,37 @@ "clusterName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of your cluster. If you do not specify a name for your cluster, you create a\n\t\t\tcluster named default. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.

" + "smithy.api#documentation": "

The name of your cluster. If you don't specify a name for your cluster, you create a\n\t\t\tcluster that's named default. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.

" } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the cluster to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the cluster to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "settings": { "target": "com.amazonaws.ecs#ClusterSettings", "traits": { - "smithy.api#documentation": "

The setting to use when creating a cluster. This parameter is used to enable CloudWatch\n\t\t\tContainer Insights for a cluster. If this value is specified, it will override the\n\t\t\t\tcontainerInsights value set with PutAccountSetting or\n\t\t\t\tPutAccountSettingDefault.

" + "smithy.api#documentation": "

The setting to use when creating a cluster. This parameter is used to enable CloudWatch\n\t\t\tContainer Insights for a cluster. If this value is specified, it overrides the\n\t\t\t\tcontainerInsights value set with PutAccountSetting or\n\t\t\t\tPutAccountSettingDefault.

" } }, "configuration": { "target": "com.amazonaws.ecs#ClusterConfiguration", "traits": { - "smithy.api#documentation": "

The execute command configuration for the cluster.

" + "smithy.api#documentation": "

The\n\t\t\texecute command configuration for the cluster.

" } }, "capacityProviders": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The short name of one or more capacity providers to associate with the cluster. A\n\t\t\tcapacity provider must be associated with a cluster before it can be included as part of\n\t\t\tthe default capacity provider strategy of the cluster or used in a capacity provider\n\t\t\tstrategy when calling the CreateService or RunTask\n\t\t\tactions.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must already be created and not already associated with another cluster. New\n\t\t\tAuto Scaling group capacity providers can be created with the CreateCapacityProvider API operation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be\n\t\t\tused.

\n\t\t

The PutClusterCapacityProviders API operation is used to update the\n\t\t\tlist of available capacity providers for a cluster after the cluster is created.

" + "smithy.api#documentation": "

The short name of one or more capacity providers to associate with the cluster. A\n\t\t\tcapacity provider must be associated with a cluster before it can be included as part of\n\t\t\tthe default capacity provider strategy of the cluster or used in a capacity provider\n\t\t\tstrategy when calling the CreateService or RunTask\n\t\t\tactions.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must be created but not associated with another cluster. New Auto Scaling group\n\t\t\tcapacity providers can be created with the CreateCapacityProvider API\n\t\t\toperation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be\n\t\t\tused.

\n\t\t

The PutClusterCapacityProviders API operation is used to update the\n\t\t\tlist of available capacity providers for a cluster after the cluster is created.

" } }, "defaultCapacityProviderStrategy": { "target": "com.amazonaws.ecs#CapacityProviderStrategy", "traits": { - "smithy.api#documentation": "

The capacity provider strategy to set as the default for the cluster. When a default\n\t\t\tcapacity provider strategy is set for a cluster, when calling the RunTask or CreateService APIs with no capacity\n\t\t\tprovider strategy or launch type specified, the default capacity provider strategy for\n\t\t\tthe cluster is used.

\n\t\t

If a default capacity provider strategy is not defined for a cluster during creation,\n\t\t\tit can be defined later with the PutClusterCapacityProviders API\n\t\t\toperation.

" + "smithy.api#documentation": "

The capacity provider strategy to set as the default for the cluster. After a default\n\t\t\tcapacity provider strategy is set for a cluster, when you call the RunTask or CreateService APIs with no capacity\n\t\t\tprovider strategy or launch type specified, the default capacity provider strategy for\n\t\t\tthe cluster is used.

\n\t\t

If a default capacity provider strategy isn't defined for a cluster when it was\n\t\t\tcreated, it can be defined later with the PutClusterCapacityProviders\n\t\t\tAPI operation.

" } } } @@ -1832,7 +1862,7 @@ } ], "traits": { - "smithy.api#documentation": "

Runs and maintains a desired number of tasks from a specified task definition. If the\n\t\t\tnumber of tasks running in a service drops below the desiredCount, Amazon ECS\n\t\t\truns another copy of the task in the specified cluster. To update an existing service,\n\t\t\tsee the UpdateService action.

\n\t\t

In addition to maintaining the desired count of tasks in your service, you can\n\t\t\toptionally run your service behind one or more load balancers. The load balancers\n\t\t\tdistribute traffic across the tasks that are associated with the service. For more\n\t\t\tinformation, see Service Load Balancing in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

Tasks for services that do not use a load balancer are considered\n\t\t\thealthy if they're in the RUNNING state. Tasks for services that\n\t\t\t\tdo use a load balancer are considered healthy if they're in the\n\t\t\t\tRUNNING state and the container instance that they're hosted on is\n\t\t\treported as healthy by the load balancer.

\n\t\t

There are two service scheduler strategies available:

\n\t\t \n\t\t

You can optionally specify a deployment configuration for your service. The deployment\n\t\t\tis triggered by changing properties, such as the task definition or the desired count of\n\t\t\ta service, with an UpdateService operation. The default value for a\n\t\t\treplica service for minimumHealthyPercent is 100%. The default value for a\n\t\t\tdaemon service for minimumHealthyPercent is 0%.

\n\t\t

If a service is using the ECS deployment controller, the minimum healthy\n\t\t\tpercent represents a lower limit on the number of tasks in a service that must remain in\n\t\t\tthe RUNNING state during a deployment, as a percentage of the desired\n\t\t\tnumber of tasks (rounded up to the nearest integer), and while any container instances\n\t\t\tare in the DRAINING state if the service contains tasks using the\n\t\t\tEC2 launch type. This parameter enables you to deploy without using\n\t\t\tadditional cluster capacity. For example, if your service has a desired number of four\n\t\t\ttasks and a minimum healthy percent of 50%, the scheduler might stop two existing tasks\n\t\t\tto free up cluster capacity before starting two new tasks. Tasks for services that\n\t\t\t\tdo not use a load balancer are considered healthy if they're in\n\t\t\tthe RUNNING state. Tasks for services that do use a\n\t\t\tload balancer are considered healthy if they're in the RUNNING state and\n\t\t\tthey're reported as healthy by the load balancer. The default value for minimum healthy\n\t\t\tpercent is 100%.

\n\t\t

If a service is using the ECS deployment controller, the maximum percent parameter represents an upper limit on the\n\t\t\tnumber of tasks in a service that are allowed in the RUNNING or\n\t\t\t\tPENDING state during a deployment, as a percentage of the desired\n\t\t\tnumber of tasks (rounded down to the nearest integer), and while any container instances\n\t\t\tare in the DRAINING state if the service contains tasks using the\n\t\t\tEC2 launch type. This parameter enables you to define the deployment batch\n\t\t\tsize. For example, if your service has a desired number of four tasks and a maximum\n\t\t\tpercent value of 200%, the scheduler may start four new tasks before stopping the four\n\t\t\tolder tasks (provided that the cluster resources required to do this are available). The\n\t\t\tdefault value for maximum percent is 200%.

\n\t\t

If a service is using either the CODE_DEPLOY or EXTERNAL\n\t\t\tdeployment controller types and tasks that use the EC2 launch type, the\n\t\t\t\tminimum healthy percent and maximum percent values are used only to define the lower and upper limit\n\t\t\ton the number of the tasks in the service that remain in the RUNNING state\n\t\t\twhile the container instances are in the DRAINING state. If the tasks in\n\t\t\tthe service use the Fargate launch type, the minimum healthy percent and\n\t\t\tmaximum percent values aren't used, although they're currently visible when describing\n\t\t\tyour service.

\n\t\t

When creating a service that uses the EXTERNAL deployment controller, you\n\t\t\tcan specify only parameters that aren't controlled at the task set level. The only\n\t\t\trequired parameter is the service name. You control your services using the CreateTaskSet operation. For more information, see Amazon ECS Deployment Types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When the service scheduler launches new tasks, it determines task placement in your\n\t\t\tcluster using the following logic:

\n\t\t " + "smithy.api#documentation": "

Runs and maintains your desired number of tasks from a specified task definition. If\n\t\t\tthe number of tasks running in a service drops below the desiredCount,\n\t\t\tAmazon ECS runs another copy of the task in the specified cluster. To update an existing\n\t\t\tservice, see the UpdateService action.

\n\t\t

In addition to maintaining the desired count of tasks in your service, you can\n\t\t\toptionally run your service behind one or more load balancers. The load balancers\n\t\t\tdistribute traffic across the tasks that are associated with the service. For more\n\t\t\tinformation, see Service Load Balancing in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

Tasks for services that don't use a load balancer are considered healthy if they're in\n\t\t\tthe RUNNING state. Tasks for services that use a load balancer are\n\t\t\tconsidered healthy if they're in the RUNNING state and the container\n\t\t\tinstance that they're hosted on is reported as healthy by the load balancer.

\n\t\t

There are two service scheduler strategies available:

\n\t\t \n\t\t

You can optionally specify a deployment configuration for your service. The deployment\n\t\t\tis initiated by changing properties. For example, the deployment might be initiated by\n\t\t\tthe task definition or by your desired count of a service. This is done with an UpdateService operation. The default value for a replica service for\n\t\t\t\tminimumHealthyPercent is 100%. The default value for a daemon service\n\t\t\tfor minimumHealthyPercent is 0%.

\n\t\t

If a service uses the ECS deployment controller, the minimum healthy\n\t\t\tpercent represents a lower limit on the number of tasks in a service that must remain in\n\t\t\tthe RUNNING state during a deployment. Specifically, it represents it as a\n\t\t\tpercentage of your desired number of tasks (rounded up to the nearest integer). This\n\t\t\thappens when any of your container instances are in the DRAINING state if\n\t\t\tthe service contains tasks using the EC2 launch type. Using this\n\t\t\tparameter, you can deploy without using additional cluster capacity. For example, if you\n\t\t\tset your service to have desired number of four tasks and a minimum healthy percent of\n\t\t\t50%, the scheduler might stop two existing tasks to free up cluster capacity before\n\t\t\tstarting two new tasks. If they're in the RUNNING state, tasks for services\n\t\t\tthat don't use a load balancer are considered healthy . If they're in the\n\t\t\t\tRUNNING state and reported as healthy by the load balancer, tasks for\n\t\t\tservices that do use a load balancer are considered healthy . The\n\t\t\tdefault value for minimum healthy percent is 100%.

\n\t\t

If a service uses the ECS deployment controller, the maximum percent parameter represents an upper limit on the\n\t\t\tnumber of tasks in a service that are allowed in the RUNNING or\n\t\t\t\tPENDING state during a deployment. Specifically, it represents it as a\n\t\t\tpercentage of the desired number of tasks (rounded down to the nearest integer). This\n\t\t\thappens when any of your container instances are in the DRAINING state if\n\t\t\tthe service contains tasks using the EC2 launch type. Using this\n\t\t\tparameter, you can define the deployment batch size. For example, if your service has a\n\t\t\tdesired number of four tasks and a maximum percent value of 200%, the scheduler may\n\t\t\tstart four new tasks before stopping the four older tasks (provided that the cluster\n\t\t\tresources required to do this are available). The default value for maximum percent is\n\t\t\t200%.

\n\t\t

If a service uses either the CODE_DEPLOY or EXTERNAL\n\t\t\tdeployment controller types and tasks that use the EC2 launch type, the\n\t\t\t\tminimum healthy percent and maximum percent values are used only to define the lower and upper limit\n\t\t\ton the number of the tasks in the service that remain in the RUNNING state.\n\t\t\tThis is while the container instances are in the DRAINING state. If the\n\t\t\ttasks in the service use the Fargate launch type, the minimum healthy\n\t\t\tpercent and maximum percent values aren't used. This is the case even if they're\n\t\t\tcurrently visible when describing your service.

\n\t\t

When creating a service that uses the EXTERNAL deployment controller, you\n\t\t\tcan specify only parameters that aren't controlled at the task set level. The only\n\t\t\trequired parameter is the service name. You control your services using the CreateTaskSet operation. For more information, see Amazon ECS Deployment Types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When the service scheduler launches new tasks, it determines task placement in your\n\t\t\tcluster using the following logic:

\n\t\t " } }, "com.amazonaws.ecs#CreateServiceRequest": { @@ -1841,7 +1871,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster on which to run your service.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" } }, "serviceName": { @@ -1854,37 +1884,37 @@ "taskDefinition": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to run in your service. If a revision is\n\t\t\tnot specified, the latest ACTIVE revision is used.

\n\t\t

A task definition must be specified if the service is using either the\n\t\t\t\tECS or CODE_DEPLOY deployment controllers.

" + "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to run in your service. If a revision\n\t\t\tisn't specified, the latest ACTIVE revision is used.

\n\t\t

A task definition must be specified if the service uses either the ECS or\n\t\t\t\tCODE_DEPLOY deployment controllers.

" } }, "loadBalancers": { "target": "com.amazonaws.ecs#LoadBalancers", "traits": { - "smithy.api#documentation": "

A load balancer object representing the load balancers to use with your service. For\n\t\t\tmore information, see Service Load Balancing in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

If the service is using the rolling update (ECS) deployment controller\n\t\t\tand using either an Application Load Balancer or Network Load Balancer, you must specify one or more target group ARNs to\n\t\t\tattach to the service. The service-linked role is required for services that make use of\n\t\t\tmultiple target groups. For more information, see Using service-linked roles for Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

If the service is using the CODE_DEPLOY deployment controller, the\n\t\t\tservice is required to use either an Application Load Balancer or Network Load Balancer. When creating an CodeDeploy deployment\n\t\t\tgroup, you specify two target groups (referred to as a targetGroupPair).\n\t\t\tDuring a deployment, CodeDeploy determines which task set in your service has the status\n\t\t\t\tPRIMARY and associates one target group with it, and then associates\n\t\t\tthe other target group with the replacement task set. The load balancer can also have up\n\t\t\tto two listeners: a required listener for production traffic and an optional listener\n\t\t\tthat allows you perform validation tests with Lambda functions before routing production\n\t\t\ttraffic to it.

\n\t\t

After you create a service using the ECS deployment controller, the load\n\t\t\tbalancer name or target group ARN, container name, and container port specified in the\n\t\t\tservice definition are immutable. If you are using the CODE_DEPLOY\n\t\t\tdeployment controller, these values can be changed when updating the service.

\n\t\t

For Application Load Balancers and Network Load Balancers, this object must contain the load balancer target group ARN,\n\t\t\tthe container name (as it appears in a container definition), and the container port to\n\t\t\taccess from the load balancer. The load balancer name parameter must be omitted. When a\n\t\t\ttask from this service is placed on a container instance, the container instance and\n\t\t\tport combination is registered as a target in the target group specified here.

\n\t\t

For Classic Load Balancers, this object must contain the load balancer name, the container name (as it\n\t\t\tappears in a container definition), and the container port to access from the load\n\t\t\tbalancer. The target group ARN parameter must be omitted. When a task from this service\n\t\t\tis placed on a container instance, the container instance is registered with the load\n\t\t\tbalancer specified here.

\n\t\t

Services with tasks that use the awsvpc network mode (for example, those\n\t\t\twith the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers are\n\t\t\tnot supported. Also, when you create any target groups for these services, you must\n\t\t\tchoose ip as the target type, not instance, because tasks that\n\t\t\tuse the awsvpc network mode are associated with an elastic network\n\t\t\tinterface, not an Amazon EC2 instance.

" + "smithy.api#documentation": "

A load balancer object representing the load balancers to use with your service. For\n\t\t\tmore information, see Service Load Balancing in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

If the service uses the rolling update (ECS) deployment controller and\n\t\t\tusing either an Application Load Balancer or Network Load Balancer, you must specify one or more target group ARNs to attach\n\t\t\tto the service. The service-linked role is required for services that use multiple\n\t\t\ttarget groups. For more information, see Using service-linked roles for Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

If the service uses the CODE_DEPLOY deployment controller, the service is\n\t\t\trequired to use either an Application Load Balancer or Network Load Balancer. When creating an CodeDeploy deployment group, you\n\t\t\tspecify two target groups (referred to as a targetGroupPair). During a\n\t\t\tdeployment, CodeDeploy determines which task set in your service has the status\n\t\t\t\tPRIMARY, and it associates one target group with it. Then, it also\n\t\t\tassociates the other target group with the replacement task set. The load balancer can\n\t\t\talso have up to two listeners: a required listener for production traffic and an\n\t\t\toptional listener that you can use to perform validation tests with Lambda functions\n\t\t\tbefore routing production traffic to it.

\n\t\t

After you create a service using the ECS deployment controller, the load\n\t\t\tbalancer name or target group ARN, container name, and container port that's specified\n\t\t\tin the service definition are immutable. If you use the CODE_DEPLOY\n\t\t\tdeployment controller, these values can be changed when updating the service.

\n\t\t

For Application Load Balancers and Network Load Balancers, this object must contain the load balancer target group ARN,\n\t\t\tthe container name, and the container port to access from the load balancer. The\n\t\t\tcontainer name must be as it appears in a container definition. The load balancer name\n\t\t\tparameter must be omitted. When a task from this service is placed on a container\n\t\t\tinstance, the container instance and port combination is registered as a target in the\n\t\t\ttarget group that's specified here.

\n\t\t

For Classic Load Balancers, this object must contain the load balancer name, the container name , and\n\t\t\tthe container port to access from the load balancer. The container name must be as it\n\t\t\tappears in a container definition. The target group ARN parameter must be omitted. When\n\t\t\ta task from this service is placed on a container instance, the container instance is\n\t\t\tregistered with the load balancer that's specified here.

\n\t\t

Services with tasks that use the awsvpc network mode (for example, those\n\t\t\twith the Fargate launch type) only support Application Load Balancers and Network Load Balancers. Classic Load Balancers\n\t\t\taren't supported. Also, when you create any target groups for these services, you must\n\t\t\tchoose ip as the target type, not instance. This is because\n\t\t\ttasks that use the awsvpc network mode are associated with an elastic\n\t\t\tnetwork interface, not an Amazon EC2 instance.

" } }, "serviceRegistries": { "target": "com.amazonaws.ecs#ServiceRegistries", "traits": { - "smithy.api#documentation": "

The details of the service discovery registry to associate with this service. For more\n\t\t\tinformation, see Service\n\t\t\t\tdiscovery.

\n\t\t \n\t\t\t

Each service may be associated with one service registry. Multiple service\n\t\t\t\tregistries per service isn't supported.

\n\t\t
" + "smithy.api#documentation": "

The details of the service discovery registry to associate with this service. For more\n\t\t\tinformation, see Service\n\t\t\t\tdiscovery.

\n\t\t \n\t\t\t

Each service may be associated with one service registry. Multiple service\n\t\t\t\tregistries for each service isn't supported.

\n\t\t
" } }, "desiredCount": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The number of instantiations of the specified task definition to place and keep\n\t\t\trunning on your cluster.

\n\t\t

This is required if schedulingStrategy is REPLICA or is not\n\t\t\tspecified. If schedulingStrategy is DAEMON then this is not\n\t\t\trequired.

" + "smithy.api#documentation": "

The number of instantiations of the specified task definition to place and keep\n\t\t\trunning on your cluster.

\n\t\t

This is required if schedulingStrategy is REPLICA or isn't\n\t\t\tspecified. If schedulingStrategy is DAEMON then this isn't\n\t\t\trequired.

" } }, "clientToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n\t\t\trequest. Up to 32 ASCII characters are allowed.

" + "smithy.api#documentation": "

An identifier that you provide to ensure the idempotency of the request. It must be\n\t\t\tunique and is case sensitive. Up to 32 ASCII characters are allowed.

" } }, "launchType": { "target": "com.amazonaws.ecs#LaunchType", "traits": { - "smithy.api#documentation": "

The infrastructure on which to run your service. For more information, see Amazon ECS\n\t\t\t\tlaunch types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

The FARGATE launch type runs your tasks on Fargate On-Demand\n\t\t\tinfrastructure.

\n\t\t \n\t\t\t

Fargate Spot infrastructure is available for use but a capacity provider\n\t\t\t\tstrategy must be used. For more information, see Fargate capacity providers in the\n\t\t\t\t\tAmazon ECS User Guide for Fargate.

\n\t\t
\n\t\t

The EC2 launch type runs your tasks on Amazon EC2 instances registered to your\n\t\t\tcluster.

\n\t\t

The EXTERNAL launch type runs your tasks on your on-premise server or\n\t\t\tvirtual machine (VM) capacity registered to your cluster.

\n\t\t

A service can use either a launch type or a capacity provider strategy. If a\n\t\t\t\tlaunchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

" + "smithy.api#documentation": "

The infrastructure that you run your service on. For more information, see Amazon ECS\n\t\t\t\tlaunch types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

The FARGATE launch type runs your tasks on Fargate On-Demand\n\t\t\tinfrastructure.

\n\t\t \n\t\t\t

Fargate Spot infrastructure is available for use but a capacity provider\n\t\t\t\tstrategy must be used. For more information, see Fargate capacity providers in the\n\t\t\t\t\tAmazon ECS User Guide for Fargate.

\n\t\t
\n\t\t

The EC2 launch type runs your tasks on Amazon EC2 instances registered to your\n\t\t\tcluster.

\n\t\t

The EXTERNAL launch type runs your tasks on your on-premises server or\n\t\t\tvirtual machine (VM) capacity registered to your cluster.

\n\t\t

A service can use either a launch type or a capacity provider strategy. If a\n\t\t\t\tlaunchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

" } }, "capacityProviderStrategy": { @@ -1896,13 +1926,13 @@ "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version that your tasks in the service are running on. A platform version\n\t\t\tis specified only for tasks using the Fargate launch type. If one isn't\n\t\t\tspecified, the LATEST platform version is used by default. For more\n\t\t\tinformation, see Fargate platform\n\t\t\t\tversions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version that your tasks in the service are running on. A platform version\n\t\t\tis specified only for tasks using the Fargate launch type. If one isn't\n\t\t\tspecified, the LATEST platform version is used. For more information, see\n\t\t\t\tFargate platform\n\t\t\t\tversions in the Amazon Elastic Container Service Developer Guide.

" } }, "role": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your\n\t\t\tload balancer on your behalf. This parameter is only permitted if you are using a load\n\t\t\tbalancer with your service and your task definition does not use the awsvpc\n\t\t\tnetwork mode. If you specify the role parameter, you must also specify a\n\t\t\tload balancer object with the loadBalancers parameter.

\n\t\t \n\t\t\t

If your account has already created the Amazon ECS service-linked role, that role is\n\t\t\t\tused by default for your service unless you specify a role here. The service-linked\n\t\t\t\trole is required if your task definition uses the awsvpc network mode\n\t\t\t\tor if the service is configured to use service discovery, an external deployment\n\t\t\t\tcontroller, multiple target groups, or Elastic Inference accelerators in which case\n\t\t\t\tyou should not specify a role here. For more information, see Using\n\t\t\t\t\tservice-linked roles for Amazon ECS in the\n\t\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

If your specified role has a path other than /, then you must either\n\t\t\tspecify the full role ARN (this is recommended) or prefix the role name with the path.\n\t\t\tFor example, if a role with the name bar has a path of /foo/\n\t\t\tthen you would specify /foo/bar as the role name. For more information, see\n\t\t\t\tFriendly names and paths in the IAM User Guide.

" + "smithy.api#documentation": "

The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your\n\t\t\tload balancer on your behalf. This parameter is only permitted if you are using a load\n\t\t\tbalancer with your service and your task definition doesn't use the awsvpc\n\t\t\tnetwork mode. If you specify the role parameter, you must also specify a\n\t\t\tload balancer object with the loadBalancers parameter.

\n\t\t \n\t\t\t

If your account has already created the Amazon ECS service-linked role, that role is\n\t\t\t\tused for your service unless you specify a role here. The service-linked role is\n\t\t\t\trequired if your task definition uses the awsvpc network mode or if the\n\t\t\t\tservice is configured to use service discovery, an external deployment controller,\n\t\t\t\tmultiple target groups, or Elastic Inference accelerators in which case you don't\n\t\t\t\tspecify a role here. For more information, see Using\n\t\t\t\t\tservice-linked roles for Amazon ECS in the\n\t\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

If your specified role has a path other than /, then you must either\n\t\t\tspecify the full role ARN (this is recommended) or prefix the role name with the path.\n\t\t\tFor example, if a role with the name bar has a path of /foo/\n\t\t\tthen you would specify /foo/bar as the role name. For more information, see\n\t\t\t\tFriendly names and paths in the IAM User Guide.

" } }, "deploymentConfiguration": { @@ -1914,31 +1944,31 @@ "placementConstraints": { "target": "com.amazonaws.ecs#PlacementConstraints", "traits": { - "smithy.api#documentation": "

An array of placement constraint objects to use for tasks in your service. You can\n\t\t\tspecify a maximum of 10 constraints per task (this limit includes constraints in the\n\t\t\ttask definition and those specified at runtime).

" + "smithy.api#documentation": "

An array of placement constraint objects to use for tasks in your service. You can\n\t\t\tspecify a maximum of 10 constraints for each task. This limit includes constraints in\n\t\t\tthe task definition and those specified at runtime.

" } }, "placementStrategy": { "target": "com.amazonaws.ecs#PlacementStrategies", "traits": { - "smithy.api#documentation": "

The placement strategy objects to use for tasks in your service. You can specify a\n\t\t\tmaximum of 5 strategy rules per service.

" + "smithy.api#documentation": "

The placement strategy objects to use for tasks in your service. You can specify a\n\t\t\tmaximum of 5 strategy rules for each service.

" } }, "networkConfiguration": { "target": "com.amazonaws.ecs#NetworkConfiguration", "traits": { - "smithy.api#documentation": "

The network configuration for the service. This parameter is required for task\n\t\t\tdefinitions that use the awsvpc network mode to receive their own elastic\n\t\t\tnetwork interface, and it is not supported for other network modes. For more\n\t\t\tinformation, see Task networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The network configuration for the service. This parameter is required for task\n\t\t\tdefinitions that use the awsvpc network mode to receive their own elastic\n\t\t\tnetwork interface, and it isn't supported for other network modes. For more information,\n\t\t\tsee Task networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" } }, "healthCheckGracePeriodSeconds": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The period of time, in seconds, that the Amazon ECS service scheduler should ignore\n\t\t\tunhealthy Elastic Load Balancing target health checks after a task has first started. This is only used\n\t\t\twhen your service is configured to use a load balancer. If your service has a load\n\t\t\tbalancer defined and you don't specify a health check grace period value, the default\n\t\t\tvalue of 0 is used.

\n\t\t

If your service's tasks take a while to start and respond to Elastic Load Balancing health checks, you\n\t\t\tcan specify a health check grace period of up to 2,147,483,647 seconds. During that\n\t\t\ttime, the Amazon ECS service scheduler ignores health check status. This grace period can\n\t\t\tprevent the service scheduler from marking tasks as unhealthy and stopping them before\n\t\t\tthey have time to come up.

" + "smithy.api#documentation": "

The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy\n\t\t\tElastic Load Balancing target health checks after a task has first started. This is only used when your\n\t\t\tservice is configured to use a load balancer. If your service has a load balancer\n\t\t\tdefined and you don't specify a health check grace period value, the default value of\n\t\t\t\t0 is used.

\n\t\t

If your service's tasks take a while to start and respond to Elastic Load Balancing health checks, you\n\t\t\tcan specify a health check grace period of up to\n\t\t\t2,147,483,647\n\t\t\tseconds (about 69 years). During that time, the Amazon ECS service\n\t\t\tscheduler ignores health check status. This grace period can prevent the service\n\t\t\tscheduler from marking tasks as unhealthy and stopping them before they have time to\n\t\t\tcome up.

" } }, "schedulingStrategy": { "target": "com.amazonaws.ecs#SchedulingStrategy", "traits": { - "smithy.api#documentation": "

The scheduling strategy to use for the service. For more information, see Services.

\n\t\t

There are two service scheduler strategies available:

\n\t\t " + "smithy.api#documentation": "

The scheduling strategy to use for the service. For more information, see Services.

\n\t\t

There are two service scheduler strategies available:

\n\t\t " } }, "deploymentController": { @@ -1950,7 +1980,7 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the service to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define. When a\n\t\t\tservice is deleted, the tags are deleted as well.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the service to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define. When a\n\t\t\tservice is deleted, the tags are deleted as well.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "enableECSManagedTags": { @@ -1962,13 +1992,13 @@ "propagateTags": { "target": "com.amazonaws.ecs#PropagateTags", "traits": { - "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition or the service to the\n\t\t\ttasks in the service. If no value is specified, the tags are not propagated. Tags can\n\t\t\tonly be propagated to the tasks within the service during service creation. To add tags\n\t\t\tto a task after service creation or task creation, use the TagResource API\n\t\t\taction.

" + "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition or the service to the\n\t\t\ttasks in the service. If no value is specified, the tags aren't propagated. Tags can\n\t\t\tonly be propagated to the tasks within the service during service creation. To add tags\n\t\t\tto a task after service creation or task creation, use the TagResource\n\t\t\tAPI action.

" } }, "enableExecuteCommand": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not the execute command functionality is enabled for the service. If\n\t\t\t\ttrue, this enables execute command functionality on all containers in\n\t\t\tthe service tasks.

" + "smithy.api#documentation": "

Determines whether the execute command functionality is enabled for the service. If\n\t\t\t\ttrue, this enables execute command functionality on all containers in\n\t\t\tthe service tasks.

" } } } @@ -1979,7 +2009,7 @@ "service": { "target": "com.amazonaws.ecs#Service", "traits": { - "smithy.api#documentation": "

The full description of your service following the create call.

\n\t\t

A service will return either a capacityProviderStrategy or\n\t\t\t\tlaunchType parameter, but not both, depending on which one was\n\t\t\tspecified during creation.

\n\t\t

If a service is using the ECS deployment controller, the\n\t\t\t\tdeploymentController and taskSets parameters will not be\n\t\t\treturned.

\n\t\t

If the service is using the CODE_DEPLOY deployment controller, the\n\t\t\t\tdeploymentController, taskSets and\n\t\t\t\tdeployments parameters will be returned, however the\n\t\t\t\tdeployments parameter will be an empty list.

" + "smithy.api#documentation": "

The full description of your service following the create call.

\n\t\t

A service will return either a capacityProviderStrategy or\n\t\t\t\tlaunchType parameter, but not both, depending where one was specified\n\t\t\twhen it was created.

\n\t\t

If a service is using the ECS deployment controller, the\n\t\t\t\tdeploymentController and taskSets parameters will not be\n\t\t\treturned.

\n\t\t

if the service uses the CODE_DEPLOY deployment controller, the\n\t\t\t\tdeploymentController, taskSets and\n\t\t\t\tdeployments parameters will be returned, however the\n\t\t\t\tdeployments parameter will be an empty list.

" } } } @@ -2079,7 +2109,7 @@ "launchType": { "target": "com.amazonaws.ecs#LaunchType", "traits": { - "smithy.api#documentation": "

The launch type that new tasks in the task set will use. For more information, see\n\t\t\t\tAmazon ECS Launch Types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

If a launchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

" + "smithy.api#documentation": "

The launch type that new tasks in the task set uses. For more information, see Amazon ECS\n\t\t\t\tLaunch Types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

If a launchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

" } }, "capacityProviderStrategy": { @@ -2091,7 +2121,7 @@ "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version that the tasks in the task set should use. A platform version is\n\t\t\tspecified only for tasks using the Fargate launch type. If one isn't\n\t\t\tspecified, the LATEST platform version is used by default.

" + "smithy.api#documentation": "

The platform version that the tasks in the task set uses. A platform version is\n\t\t\tspecified only for tasks using the Fargate launch type. If one isn't\n\t\t\tspecified, the LATEST platform version is used.

" } }, "scale": { @@ -2103,13 +2133,13 @@ "clientToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n\t\t\trequest. Up to 32 ASCII characters are allowed.

" + "smithy.api#documentation": "

The identifier that you provide to ensure the idempotency of the request. It's case\n\t\t\tsensitive and must be unique. It can be up to 32 ASCII characters are allowed.

" } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the task set to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define. When a\n\t\t\tservice is deleted, the tags are deleted as well.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the task set to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define both. When a service is\n\t\t\tdeleted, the tags are deleted.

\n\t\t

The following basic restrictions apply to tags:

\n " } } } @@ -2154,14 +2184,14 @@ "name": { "target": "com.amazonaws.ecs#SettingName", "traits": { - "smithy.api#documentation": "

The resource name for which to disable the account setting. If\n\t\t\t\tserviceLongArnFormat is specified, the ARN for your Amazon ECS services is\n\t\t\taffected. If taskLongArnFormat is specified, the ARN and resource ID for\n\t\t\tyour Amazon ECS tasks is affected. If containerInstanceLongArnFormat is\n\t\t\tspecified, the ARN and resource ID for your Amazon ECS container instances is affected. If\n\t\t\t\tawsvpcTrunking is specified, the ENI limit for your Amazon ECS container\n\t\t\tinstances is affected.

", + "smithy.api#documentation": "

The resource name to disable the account setting for. If\n\t\t\t\tserviceLongArnFormat is specified, the ARN for your Amazon ECS services is\n\t\t\taffected. If taskLongArnFormat is specified, the ARN and resource ID for\n\t\t\tyour Amazon ECS tasks is affected. If containerInstanceLongArnFormat is\n\t\t\tspecified, the ARN and resource ID for your Amazon ECS container instances is affected. If\n\t\t\t\tawsvpcTrunking is specified, the ENI limit for your Amazon ECS container\n\t\t\tinstances is affected.

", "smithy.api#required": {} } }, "principalArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The ARN of the principal, which can be an IAM user, IAM role, or the root user. If you\n\t\t\tspecify the root user, it disables the account setting for all IAM users, IAM roles, and\n\t\t\tthe root user of the account unless an IAM user or role explicitly overrides these\n\t\t\tsettings. If this field is omitted, the setting is changed only for the authenticated\n\t\t\tuser.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the principal. It can be an IAM user, IAM role, or\n\t\t\tthe root user. If you specify the root user, it disables the account setting for all IAM\n\t\t\tusers, IAM roles, and the root user of the account unless an IAM user or role explicitly\n\t\t\toverrides these settings. If this field is omitted, the setting is changed only for the\n\t\t\tauthenticated user.

" } } } @@ -2212,7 +2242,7 @@ "attributes": { "target": "com.amazonaws.ecs#Attributes", "traits": { - "smithy.api#documentation": "

The attributes to delete from your resource. You can specify up to 10 attributes per\n\t\t\trequest. For custom attributes, specify the attribute name and target ID, but do not\n\t\t\tspecify the value. If you specify the target ID using the short form, you must also\n\t\t\tspecify the target type.

", + "smithy.api#documentation": "

The attributes to delete from your resource. You can specify up to 10 attributes for\n\t\t\teach request. For custom attributes, specify the attribute name and target ID, but don't\n\t\t\tspecify the value. If you specify the target ID using the short form, you must also\n\t\t\tspecify the target type.

", "smithy.api#required": {} } } @@ -2249,7 +2279,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes the specified capacity provider.

\n\t\t \n\t\t\t

The FARGATE and FARGATE_SPOT capacity providers are\n\t\t\t\treserved and cannot be deleted. You can disassociate them from a cluster using\n\t\t\t\teither the PutClusterCapacityProviders API or by deleting the\n\t\t\t\tcluster.

\n\t\t
\n\t\t

Prior to a capacity provider being deleted, the capacity provider must be removed from\n\t\t\tthe capacity provider strategy from all services. The UpdateService\n\t\t\tAPI can be used to remove a capacity provider from a service's capacity provider\n\t\t\tstrategy. When updating a service, the forceNewDeployment option can be\n\t\t\tused to ensure that any tasks using the Amazon EC2 instance capacity provided by the capacity\n\t\t\tprovider are transitioned to use the capacity from the remaining capacity providers.\n\t\t\tOnly capacity providers that are not associated with a cluster can be deleted. To remove\n\t\t\ta capacity provider from a cluster, you can either use PutClusterCapacityProviders or delete the cluster.

" + "smithy.api#documentation": "

Deletes the specified capacity provider.

\n\t\t \n\t\t\t

The FARGATE and FARGATE_SPOT capacity providers are\n\t\t\t\treserved and can't be deleted. You can disassociate them from a cluster using either\n\t\t\t\tthe PutClusterCapacityProviders API or by deleting the\n\t\t\t\tcluster.

\n\t\t
\n\t\t

Prior to a capacity provider being deleted, the capacity provider must be removed from\n\t\t\tthe capacity provider strategy from all services. The UpdateService\n\t\t\tAPI can be used to remove a capacity provider from a service's capacity provider\n\t\t\tstrategy. When updating a service, the forceNewDeployment option can be\n\t\t\tused to ensure that any tasks using the Amazon EC2 instance capacity provided by the capacity\n\t\t\tprovider are transitioned to use the capacity from the remaining capacity providers.\n\t\t\tOnly capacity providers that aren't associated with a cluster can be deleted. To remove\n\t\t\ta capacity provider from a cluster, you can either use PutClusterCapacityProviders or delete the cluster.

" } }, "com.amazonaws.ecs#DeleteCapacityProviderRequest": { @@ -2310,7 +2340,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes the specified cluster. The cluster will transition to the\n\t\t\t\tINACTIVE state. Clusters with an INACTIVE status may\n\t\t\tremain discoverable in your account for a period of time. However, this behavior is\n\t\t\tsubject to change in the future, so you should not rely on INACTIVE\n\t\t\tclusters persisting.

\n\t\t

You must deregister all container instances from this cluster before you may delete\n\t\t\tit. You can list the container instances in a cluster with ListContainerInstances and deregister them with DeregisterContainerInstance.

" + "smithy.api#documentation": "

Deletes the specified cluster. The cluster transitions to the INACTIVE\n\t\t\tstate. Clusters with an INACTIVE status might remain discoverable in your\n\t\t\taccount for a period of time. However, this behavior is subject to change in the future.\n\t\t\tWe don't recommend that you rely on INACTIVE clusters persisting.

\n\t\t

You must deregister all container instances from this cluster before you may delete\n\t\t\tit. You can list the container instances in a cluster with ListContainerInstances and deregister them with DeregisterContainerInstance.

" } }, "com.amazonaws.ecs#DeleteClusterRequest": { @@ -2362,7 +2392,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes a specified service within a cluster. You can delete a service if you have no\n\t\t\trunning tasks in it and the desired task count is zero. If the service is actively\n\t\t\tmaintaining tasks, you cannot delete it, and you must update the service to a desired\n\t\t\ttask count of zero. For more information, see UpdateService.

\n\t\t \n\t\t\t

When you delete a service, if there are still running tasks that require cleanup,\n\t\t\t\tthe service status moves from ACTIVE to DRAINING, and the\n\t\t\t\tservice is no longer visible in the console or in the ListServices\n\t\t\t\tAPI operation. After all tasks have transitioned to either STOPPING or\n\t\t\t\t\tSTOPPED status, the service status moves from DRAINING\n\t\t\t\tto INACTIVE. Services in the DRAINING or\n\t\t\t\t\tINACTIVE status can still be viewed with the DescribeServices API operation. However, in the future,\n\t\t\t\t\tINACTIVE services may be cleaned up and purged from Amazon ECS record\n\t\t\t\tkeeping, and DescribeServices calls on those services return a\n\t\t\t\t\tServiceNotFoundException error.

\n\t\t
\n\t\t \n\t\t\t

If you attempt to create a new service with the same name as an existing service\n\t\t\t\tin either ACTIVE or DRAINING status, you receive an\n\t\t\t\terror.

\n\t\t
" + "smithy.api#documentation": "

Deletes a specified service within a cluster. You can delete a service if you have no\n\t\t\trunning tasks in it and the desired task count is zero. If the service is actively\n\t\t\tmaintaining tasks, you can't delete it, and you must update the service to a desired\n\t\t\ttask count of zero. For more information, see UpdateService.

\n\t\t \n\t\t\t

When you delete a service, if there are still running tasks that require cleanup,\n\t\t\t\tthe service status moves from ACTIVE to DRAINING, and the\n\t\t\t\tservice is no longer visible in the console or in the ListServices\n\t\t\t\tAPI operation. After all tasks have transitioned to either STOPPING or\n\t\t\t\t\tSTOPPED status, the service status moves from DRAINING\n\t\t\t\tto INACTIVE. Services in the DRAINING or\n\t\t\t\t\tINACTIVE status can still be viewed with the DescribeServices API operation. However, in the future,\n\t\t\t\t\tINACTIVE services may be cleaned up and purged from Amazon ECS record\n\t\t\t\tkeeping, and DescribeServices calls on those services return a\n\t\t\t\t\tServiceNotFoundException error.

\n\t\t
\n\t\t \n\t\t\t

If you attempt to create a new service with the same name as an existing service\n\t\t\t\tin either ACTIVE or DRAINING status, you receive an\n\t\t\t\terror.

\n\t\t
" } }, "com.amazonaws.ecs#DeleteServiceRequest": { @@ -2384,7 +2414,7 @@ "force": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

If true, allows you to delete a service even if it has not been scaled\n\t\t\tdown to zero tasks. It is only necessary to use this if the service is using the\n\t\t\t\tREPLICA scheduling strategy.

" + "smithy.api#documentation": "

If true, allows you to delete a service even if it wasn't scaled down to\n\t\t\tzero tasks. It's only necessary to use this if the service uses the REPLICA\n\t\t\tscheduling strategy.

" } } } @@ -2447,7 +2477,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task\n\t\t\tset exists in to delete.

", + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task\n\t\t\tset found in to delete.

", "smithy.api#required": {} } }, @@ -2468,7 +2498,7 @@ "force": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

If true, this allows you to delete a task set even if it hasn't been\n\t\t\tscaled down to zero.

" + "smithy.api#documentation": "

If true, you can delete a task set even if it hasn't been scaled down to\n\t\t\tzero.

" } } } @@ -2496,7 +2526,7 @@ "status": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The status of the deployment. The following describes each state:

\n\t\t
\n
PRIMARY
\n
\n\t\t\t\t\t

The most recent deployment of a service.

\n\t\t\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

A service deployment that still has running tasks, but are in the process\n\t\t\t\t\t\tof being replaced with a new PRIMARY deployment.

\n\t\t\t\t
\n
INACTIVE
\n
\n\t\t\t\t\t

A deployment that has been completely replaced.

\n\t\t\t\t
\n
" + "smithy.api#documentation": "

The status of the deployment. The following describes each state.

\n\t\t
\n
PRIMARY
\n
\n\t\t\t\t\t

The most recent deployment of a service.

\n\t\t\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

A service deployment that still has running tasks, but are in the process\n\t\t\t\t\t\tof being replaced with a new PRIMARY deployment.

\n\t\t\t\t
\n
INACTIVE
\n
\n\t\t\t\t\t

A deployment that has been completely replaced.

\n\t\t\t\t
\n
" } }, "taskDefinition": { @@ -2532,13 +2562,13 @@ "createdAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the service deployment was created.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the service deployment was created.

" } }, "updatedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the service deployment was last updated.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the service deployment was last updated.

" } }, "capacityProviderStrategy": { @@ -2556,13 +2586,13 @@ "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version on which your tasks in the service are running. A platform\n\t\t\tversion is only specified for tasks using the Fargate launch type. If one\n\t\t\tis not specified, the LATEST platform version is used by default. For more\n\t\t\tinformation, see Fargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version that your tasks in the service run on. A platform version is only\n\t\t\tspecified for tasks using the Fargate launch type. If one isn't specified,\n\t\t\tthe LATEST platform version is used. For more information, see Fargate Platform Versions in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "platformFamily": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The operating system that your tasks in the service, or tasks are running on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same platformFamily value as the service, for example, LINUX..

" + "smithy.api#documentation": "

The operating system that your tasks in the service, or tasks are running on. A\n\t\t\tplatform family is specified only for tasks using the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same\n\t\t\t\tplatformFamily value as the service, for example, \n\t\t\tLINUX..

" } }, "networkConfiguration": { @@ -2574,7 +2604,7 @@ "rolloutState": { "target": "com.amazonaws.ecs#DeploymentRolloutState", "traits": { - "smithy.api#documentation": "\n\t\t\t

The rolloutState of a service is only returned for services that use\n\t\t\t\tthe rolling update (ECS) deployment type that are not behind a\n\t\t\t\tClassic Load Balancer.

\n\t\t
\n\t\t

The rollout state of the deployment. When a service deployment is started, it begins\n\t\t\tin an IN_PROGRESS state. When the service reaches a steady state, the\n\t\t\tdeployment will transition to a COMPLETED state. If the service fails to\n\t\t\treach a steady state and circuit breaker is enabled, the deployment will transition to a\n\t\t\t\tFAILED state. A deployment in FAILED state will launch no\n\t\t\tnew tasks. For more information, see DeploymentCircuitBreaker.

" + "smithy.api#documentation": "\n\t\t\t

The rolloutState of a service is only returned for services that use\n\t\t\t\tthe rolling update (ECS) deployment type that aren't behind a\n\t\t\t\tClassic Load Balancer.

\n\t\t
\n\t\t

The rollout state of the deployment. When a service deployment is started, it begins\n\t\t\tin an IN_PROGRESS state. When the service reaches a steady state, the\n\t\t\tdeployment transitions to a COMPLETED state. If the service fails to reach\n\t\t\ta steady state and circuit breaker is enabled, the deployment transitions to a\n\t\t\t\tFAILED state. A deployment in FAILED state doesn't launch\n\t\t\tany new tasks. For more information, see DeploymentCircuitBreaker.

" } }, "rolloutStateReason": { @@ -2594,20 +2624,20 @@ "enable": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether to enable the deployment circuit breaker logic for the service.

", + "smithy.api#documentation": "

Determines whether to enable the deployment circuit breaker logic for the\n\t\t\tservice.

", "smithy.api#required": {} } }, "rollback": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether to enable Amazon ECS to roll back the service if a service deployment fails. If\n\t\t\trollback is enabled, when a service deployment fails, the service is rolled back to the\n\t\t\tlast deployment that completed successfully.

", + "smithy.api#documentation": "

Determines whether to enable Amazon ECS to roll back the service if a service deployment\n\t\t\tfails. If rollback is enabled, when a service deployment fails, the service is rolled\n\t\t\tback to the last deployment that completed successfully.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "\n\t\t\t

The deployment circuit breaker can only be used for services using the rolling\n\t\t\t\tupdate (ECS) deployment type that are not behind a Classic Load Balancer.

\n\t\t
\n\t\t

The deployment circuit breaker determines whether a\n\t\t\tservice deployment will fail if the service can't reach a steady state. If enabled, a\n\t\t\tservice deployment will transition to a failed state and stop launching new tasks. You\n\t\t\tcan also enable Amazon ECS to roll back your service to the last completed deployment after a\n\t\t\tfailure. For more information, see Rolling\n\t\t\t\tupdate in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "\n\t\t\t

The deployment circuit breaker can only be used for services using the rolling\n\t\t\t\tupdate (ECS) deployment type that aren't behind a Classic Load Balancer.

\n\t\t
\n\t\t

The deployment circuit breaker determines whether a\n\t\t\tservice deployment will fail if the service can't reach a steady state. If enabled, a\n\t\t\tservice deployment will transition to a failed state and stop launching new tasks. You\n\t\t\tcan also enable Amazon ECS to roll back your service to the last completed deployment after a\n\t\t\tfailure. For more information, see Rolling\n\t\t\t\tupdate in the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#DeploymentConfiguration": { @@ -2628,7 +2658,7 @@ "minimumHealthyPercent": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

If a service is using the rolling update (ECS) deployment type, the\n\t\t\t\tminimum healthy percent represents a lower limit on\n\t\t\tthe number of tasks in a service that must remain in the RUNNING state\n\t\t\tduring a deployment, as a percentage of the desired number of tasks (rounded up to the\n\t\t\tnearest integer), and while any container instances are in the DRAINING\n\t\t\tstate if the service contains tasks using the EC2 launch type. This\n\t\t\tparameter enables you to deploy without using additional cluster capacity. For example,\n\t\t\tif your service has a desired number of four tasks and a minimum healthy percent of 50%,\n\t\t\tthe scheduler may stop two existing tasks to free up cluster capacity before starting\n\t\t\ttwo new tasks. Tasks for services that do not use a load balancer\n\t\t\tare considered healthy if they are in the RUNNING state; tasks for services\n\t\t\tthat do use a load balancer are considered healthy if they are in\n\t\t\tthe RUNNING state and they are reported as healthy by the load balancer.\n\t\t\tThe default value for minimum healthy percent is 100%.

\n\t\t

If a service is using the blue/green (CODE_DEPLOY) or\n\t\t\t\tEXTERNAL deployment types and tasks that use the EC2\n\t\t\tlaunch type, the minimum healthy percent value is set\n\t\t\tto the default value and is used to define the lower limit on the number of the tasks in\n\t\t\tthe service that remain in the RUNNING state while the container instances\n\t\t\tare in the DRAINING state. If the tasks in the service use the\n\t\t\tFargate launch type, the minimum healthy percent value is not used,\n\t\t\talthough it is returned when describing your service.

" + "smithy.api#documentation": "

If a service is using the rolling update (ECS) deployment type, the\n\t\t\t\tminimum healthy percent represents a lower limit on\n\t\t\tthe number of tasks in a service that must remain in the RUNNING state\n\t\t\tduring a deployment, as a percentage of the desired number of tasks (rounded up to the\n\t\t\tnearest integer), and while any container instances are in the DRAINING\n\t\t\tstate if the service contains tasks using the EC2 launch type. This\n\t\t\tparameter enables you to deploy without using additional cluster capacity. For example,\n\t\t\tif your service has a desired number of four tasks and a minimum healthy percent of 50%,\n\t\t\tthe scheduler may stop two existing tasks to free up cluster capacity before starting\n\t\t\ttwo new tasks. Tasks for services that do not use a load balancer\n\t\t\tare considered healthy if they're in the RUNNING state; tasks for services\n\t\t\tthat do use a load balancer are considered healthy if they're in\n\t\t\tthe RUNNING state and they're reported as healthy by the load balancer. The\n\t\t\tdefault value for minimum healthy percent is 100%.

\n\t\t

If a service is using the blue/green (CODE_DEPLOY) or\n\t\t\t\tEXTERNAL deployment types and tasks that use the EC2\n\t\t\tlaunch type, the minimum healthy percent value is set\n\t\t\tto the default value and is used to define the lower limit on the number of the tasks in\n\t\t\tthe service that remain in the RUNNING state while the container instances\n\t\t\tare in the DRAINING state. If the tasks in the service use the\n\t\t\tFargate launch type, the minimum healthy percent value is not used,\n\t\t\talthough it is returned when describing your service.

" } } }, @@ -2718,7 +2748,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deregisters an Amazon ECS container instance from the specified cluster. This instance is\n\t\t\tno longer available to run tasks.

\n\t\t

If you intend to use the container instance for some other purpose after\n\t\t\tderegistration, you should stop all of the tasks running on the container instance\n\t\t\tbefore deregistration. That prevents any orphaned tasks from consuming resources.

\n\t\t

Deregistering a container instance removes the instance from a cluster, but it does\n\t\t\tnot terminate the EC2 instance. If you are finished using the instance, be sure to\n\t\t\tterminate it in the Amazon EC2 console to stop billing.

\n\t\t \n\t\t\t

If you terminate a running container instance, Amazon ECS automatically deregisters the\n\t\t\t\tinstance from your cluster (stopped container instances or instances with\n\t\t\t\tdisconnected agents are not automatically deregistered when terminated).

\n\t\t
" + "smithy.api#documentation": "

Deregisters an Amazon ECS container instance from the specified cluster. This instance is\n\t\t\tno longer available to run tasks.

\n\t\t

If you intend to use the container instance for some other purpose after\n\t\t\tderegistration, we recommend that you stop all of the tasks running on the container\n\t\t\tinstance before deregistration. That prevents any orphaned tasks from consuming\n\t\t\tresources.

\n\t\t

Deregistering a container instance removes the instance from a cluster, but it doesn't\n\t\t\tterminate the EC2 instance. If you are finished using the instance, be sure to terminate\n\t\t\tit in the Amazon EC2 console to stop billing.

\n\t\t \n\t\t\t

If you terminate a running container instance, Amazon ECS automatically deregisters the\n\t\t\t\tinstance from your cluster (stopped container instances or instances with\n\t\t\t\tdisconnected agents aren't automatically deregistered when terminated).

\n\t\t
" } }, "com.amazonaws.ecs#DeregisterContainerInstanceRequest": { @@ -2740,7 +2770,7 @@ "force": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

Forces the deregistration of the container instance. If you have tasks running on the\n\t\t\tcontainer instance when you deregister it with the force option, these\n\t\t\ttasks remain running until you terminate the instance or the tasks stop through some\n\t\t\tother means, but they are orphaned (no longer monitored or accounted for by Amazon ECS). If\n\t\t\tan orphaned task on your container instance is part of an Amazon ECS service, then the\n\t\t\tservice scheduler starts another copy of that task, on a different container instance if\n\t\t\tpossible.

\n\t\t

Any containers in orphaned service tasks that are registered with a Classic Load Balancer or an Application Load Balancer\n\t\t\ttarget group are deregistered. They begin connection draining according to the settings\n\t\t\ton the load balancer or target group.

" + "smithy.api#documentation": "

Forces the container instance to be deregistered. If you have tasks running on the\n\t\t\tcontainer instance when you deregister it with the force option, these\n\t\t\ttasks remain running until you terminate the instance or the tasks stop through some\n\t\t\tother means, but they're orphaned (no longer monitored or accounted for by Amazon ECS). If an\n\t\t\torphaned task on your container instance is part of an Amazon ECS service, then the service\n\t\t\tscheduler starts another copy of that task, on a different container instance if\n\t\t\tpossible.

\n\t\t

Any containers in orphaned service tasks that are registered with a Classic Load Balancer or an Application Load Balancer\n\t\t\ttarget group are deregistered. They begin connection draining according to the settings\n\t\t\ton the load balancer or target group.

" } } } @@ -2776,7 +2806,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deregisters the specified task definition by family and revision. Upon deregistration,\n\t\t\tthe task definition is marked as INACTIVE. Existing tasks and services that\n\t\t\treference an INACTIVE task definition continue to run without disruption.\n\t\t\tExisting services that reference an INACTIVE task definition can still\n\t\t\tscale up or down by modifying the service's desired count.

\n\t\t

You cannot use an INACTIVE task definition to run new tasks or create new\n\t\t\tservices, and you cannot update an existing service to reference an\n\t\t\t\tINACTIVE task definition. However, there may be up to a 10-minute\n\t\t\twindow following deregistration where these restrictions have not yet taken\n\t\t\teffect.

\n\t\t \n\t\t\t

At this time, INACTIVE task definitions remain discoverable in your\n\t\t\t\taccount indefinitely. However, this behavior is subject to change in the future, so\n\t\t\t\tyou should not rely on INACTIVE task definitions persisting beyond the\n\t\t\t\tlifecycle of any associated tasks and services.

\n\t\t
" + "smithy.api#documentation": "

Deregisters the specified task definition by family and revision. Upon deregistration,\n\t\t\tthe task definition is marked as INACTIVE. Existing tasks and services that\n\t\t\treference an INACTIVE task definition continue to run without disruption.\n\t\t\tExisting services that reference an INACTIVE task definition can still\n\t\t\tscale up or down by modifying the service's desired count.

\n\t\t

You can't use an INACTIVE task definition to run new tasks or create new\n\t\t\tservices, and you can't update an existing service to reference an INACTIVE\n\t\t\ttask definition. However, there may be up to a 10-minute window following deregistration\n\t\t\twhere these restrictions have not yet taken effect.

\n\t\t \n\t\t\t

At this time, INACTIVE task definitions remain discoverable in your\n\t\t\t\taccount indefinitely. However, this behavior is subject to change in the future. We\n\t\t\t\tdon't recommend that you rely on INACTIVE task definitions persisting\n\t\t\t\tbeyond the lifecycle of any associated tasks and services.

\n\t\t
" } }, "com.amazonaws.ecs#DeregisterTaskDefinitionRequest": { @@ -2837,7 +2867,7 @@ "include": { "target": "com.amazonaws.ecs#CapacityProviderFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether or not you want to see the resource tags for the capacity provider.\n\t\t\tIf TAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags are not included in the response.

" + "smithy.api#documentation": "

Specifies whether or not you want to see the resource tags for the capacity provider.\n\t\t\tIf TAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags aren't included in the response.

" } }, "maxResults": { @@ -2912,7 +2942,7 @@ "include": { "target": "com.amazonaws.ecs#ClusterFieldList", "traits": { - "smithy.api#documentation": "

Whether to include additional information about the clusters in the response. If this\n\t\t\tfield is omitted, this information isn't included.

\n\t\t

If ATTACHMENTS is specified, the attachments for the container instances\n\t\t\tor tasks within the cluster are included.

\n\t\t

If SETTINGS is specified, the settings for the cluster are\n\t\t\tincluded.

\n\t\t

If CONFIGURATIONS is specified, the configuration for the cluster is\n\t\t\tincluded.

\n\t\t

If STATISTICS is specified, the task and service count is included,\n\t\t\tseparated by launch type.

\n\t\t

If TAGS is specified, the metadata tags associated with the cluster are\n\t\t\tincluded.

" + "smithy.api#documentation": "

Determines whether to include additional information about the clusters in the\n\t\t\tresponse. If this field is omitted, this information isn't included.

\n\t\t

If ATTACHMENTS is specified, the attachments for the container instances\n\t\t\tor tasks within the cluster are included.

\n\t\t

If SETTINGS is specified, the settings for the cluster are\n\t\t\tincluded.

\n\t\t

If CONFIGURATIONS is specified, the configuration for the cluster is\n\t\t\tincluded.

\n\t\t

If STATISTICS is specified, the task and service count is included,\n\t\t\tseparated by launch type.

\n\t\t

If TAGS is specified, the metadata tags associated with the cluster are\n\t\t\tincluded.

" } } } @@ -2979,7 +3009,7 @@ "include": { "target": "com.amazonaws.ecs#ContainerInstanceFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether you want to see the resource tags for the container instance. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags are not included in the response.

" + "smithy.api#documentation": "

Specifies whether you want to see the resource tags for the container instance. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If\n\t\t\t\tCONTAINER_INSTANCE_HEALTH is specified, the container instance health\n\t\t\tis included in the response. If this field is omitted, tags and container instance\n\t\t\thealth status aren't included in the response.

" } } } @@ -3073,7 +3103,7 @@ "include": { "target": "com.amazonaws.ecs#ServiceFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether you want to see the resource tags for the service. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags are not included in the response.

" + "smithy.api#documentation": "

Determines whether you want to see the resource tags for the service. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags aren't included in the response.

" } } } @@ -3131,7 +3161,7 @@ "include": { "target": "com.amazonaws.ecs#TaskDefinitionFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether to see the resource tags for the task definition. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags are not included in the response.

" + "smithy.api#documentation": "

Determines whether to see the resource tags for the task definition. If\n\t\t\t\tTAGS is specified, the tags are included in the response. If this field\n\t\t\tis omitted, tags aren't included in the response.

" } } } @@ -3148,7 +3178,7 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that is applied to the task definition to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value, both of which you\n\t\t\tdefine.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that's applied to the task definition to help you categorize and organize\n\t\t\tthem. Each tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } } } @@ -3217,7 +3247,7 @@ "include": { "target": "com.amazonaws.ecs#TaskSetFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether to see the resource tags for the task set. If TAGS is\n\t\t\tspecified, the tags are included in the response. If this field is omitted, tags are not\n\t\t\tincluded in the response.

" + "smithy.api#documentation": "

Specifies whether to see the resource tags for the task set. If TAGS is\n\t\t\tspecified, the tags are included in the response. If this field is omitted, tags aren't\n\t\t\tincluded in the response.

" } } } @@ -3336,7 +3366,7 @@ "include": { "target": "com.amazonaws.ecs#TaskFieldList", "traits": { - "smithy.api#documentation": "

Specifies whether you want to see the resource tags for the task. If TAGS\n\t\t\tis specified, the tags are included in the response. If this field is omitted, tags are\n\t\t\tnot included in the response.

" + "smithy.api#documentation": "

Specifies whether you want to see the resource tags for the task. If TAGS\n\t\t\tis specified, the tags are included in the response. If this field is omitted, tags\n\t\t\taren't included in the response.

" } } } @@ -3452,7 +3482,7 @@ } ], "traits": { - "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n

Returns an endpoint for\n\t\t\tthe Amazon ECS agent to poll for updates.

" + "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n\t\t

Returns an endpoint for the Amazon ECS agent to poll for updates.

" } }, "com.amazonaws.ecs#DiscoverPollEndpointRequest": { @@ -3467,7 +3497,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster to which the container instance\n\t\t\tbelongs.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that the container instance belongs\n\t\t\tto.

" } } } @@ -3510,7 +3540,7 @@ "autoprovision": { "target": "com.amazonaws.ecs#BoxedBoolean", "traits": { - "smithy.api#documentation": "

If this value is true, the Docker volume is created if it does not\n\t\t\talready exist.

\n\t\t \n\t\t\t

This field is only used if the scope is shared.

\n\t\t
" + "smithy.api#documentation": "

If this value is true, the Docker volume is created if it doesn't already\n\t\t\texist.

\n\t\t \n\t\t\t

This field is only used if the scope is shared.

\n\t\t
" } }, "driver": { @@ -3533,7 +3563,7 @@ } }, "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using Docker volumes. Docker volumes are only\n\t\t\tsupported when you are using the EC2 launch type. Windows containers only\n\t\t\tsupport the use of the local driver. To use bind mounts, specify a\n\t\t\t\thost instead.

" + "smithy.api#documentation": "

This parameter is specified when you're using Docker volumes. Docker volumes are only\n\t\t\tsupported when you're using the EC2 launch type. Windows containers only\n\t\t\tsupport the use of the local driver. To use bind mounts, specify a\n\t\t\t\thost instead.

" } }, "com.amazonaws.ecs#Double": { @@ -3551,7 +3581,7 @@ "iam": { "target": "com.amazonaws.ecs#EFSAuthorizationConfigIAM", "traits": { - "smithy.api#documentation": "

Whether or not to use the Amazon ECS task IAM role defined in a task definition when\n\t\t\tmounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the\n\t\t\t\tEFSVolumeConfiguration. If this parameter is omitted, the default value\n\t\t\tof DISABLED is used. For more information, see Using\n\t\t\t\tAmazon EFS Access Points in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Determines whether to use the Amazon ECS task IAM role defined in a task definition when\n\t\t\tmounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the\n\t\t\t\tEFSVolumeConfiguration. If this parameter is omitted, the default value\n\t\t\tof DISABLED is used. For more information, see Using\n\t\t\t\tAmazon EFS Access Points in the Amazon Elastic Container Service Developer Guide.

" } } }, @@ -3608,7 +3638,7 @@ "transitEncryption": { "target": "com.amazonaws.ecs#EFSTransitEncryption", "traits": { - "smithy.api#documentation": "

Whether or not to enable encryption for Amazon EFS data in transit between the Amazon ECS host\n\t\t\tand the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization is\n\t\t\tused. If this parameter is omitted, the default value of DISABLED is used.\n\t\t\tFor more information, see Encrypting Data in Transit in\n\t\t\tthe Amazon Elastic File System User Guide.

" + "smithy.api#documentation": "

Determines whether to enable encryption for Amazon EFS data in transit between the Amazon ECS\n\t\t\thost and the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization\n\t\t\tis used. If this parameter is omitted, the default value of DISABLED is\n\t\t\tused. For more information, see Encrypting Data in Transit in\n\t\t\tthe Amazon Elastic File System User Guide.

" } }, "transitEncryptionPort": { @@ -3625,7 +3655,7 @@ } }, "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using an Amazon Elastic File System file system for task\n\t\t\tstorage. For more information, see Amazon EFS Volumes in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

This parameter is specified when you're using an Amazon Elastic File System file system for task\n\t\t\tstorage. For more information, see Amazon EFS Volumes in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#EnvironmentFile": { @@ -3647,7 +3677,7 @@ } }, "traits": { - "smithy.api#documentation": "

A list of files containing the environment variables to pass to a container. You can\n\t\t\tspecify up to ten environment files. The file must have a .env file\n\t\t\textension. Each line in an environment file should contain an environment variable in\n\t\t\t\tVARIABLE=VALUE format. Lines beginning with # are treated\n\t\t\tas comments and are ignored. For more information on the environment variable file\n\t\t\tsyntax, see Declare default\n\t\t\t\tenvironment variables in file.

\n\t\t

If there are environment variables specified using the environment\n\t\t\tparameter in a container definition, they take precedence over the variables contained\n\t\t\twithin an environment file. If multiple environment files are specified that contain the\n\t\t\tsame variable, they are processed from the top down. It is recommended to use unique\n\t\t\tvariable names. For more information, see Specifying environment\n\t\t\t\tvariables in the Amazon Elastic Container Service Developer Guide.

\n\t\t

This parameter is only supported for tasks hosted on Fargate using the following platform versions:

\n\t\t " + "smithy.api#documentation": "

A list of files containing the environment variables to pass to a container. You can\n\t\t\tspecify up to ten environment files. The file must have a .env file\n\t\t\textension. Each line in an environment file should contain an environment variable in\n\t\t\t\tVARIABLE=VALUE format. Lines beginning with # are treated\n\t\t\tas comments and are ignored. For more information about the environment variable file\n\t\t\tsyntax, see Declare default\n\t\t\t\tenvironment variables in file.

\n\t\t

If there are environment variables specified using the environment\n\t\t\tparameter in a container definition, they take precedence over the variables contained\n\t\t\twithin an environment file. If multiple environment files are specified that contain the\n\t\t\tsame variable, they're processed from the top down. We recommend that you use unique\n\t\t\tvariable names. For more information, see Specifying environment\n\t\t\t\tvariables in the Amazon Elastic Container Service Developer Guide.

\n\t\t

This parameter is only supported for tasks hosted on Fargate using the\n\t\t\tfollowing platform versions:

\n\t\t " } }, "com.amazonaws.ecs#EnvironmentFileType": { @@ -3685,7 +3715,7 @@ } }, "traits": { - "smithy.api#documentation": "

The amount of ephemeral storage to allocate for the task. This parameter is used to\n\t\t\texpand the total amount of ephemeral storage available, beyond the default amount, for\n\t\t\ttasks hosted on Fargate. For more information, see Fargate task\n\t\t\t\tstorage in the Amazon ECS User Guide for Fargate.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate using the following platform versions:

\n\t\t\t \n\t\t
" + "smithy.api#documentation": "

The amount of ephemeral storage to allocate for the task. This parameter is used to\n\t\t\texpand the total amount of ephemeral storage available, beyond the default amount, for\n\t\t\ttasks hosted on Fargate. For more information, see Fargate task\n\t\t\t\tstorage in the Amazon ECS User Guide for Fargate.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate using\n\t\t\t\tthe following platform versions:

\n\t\t\t \n\t\t
" } }, "com.amazonaws.ecs#ExecuteCommand": { @@ -3758,7 +3788,7 @@ "cloudWatchEncryptionEnabled": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not to enable encryption on the CloudWatch logs. If not specified,\n\t\t\tencryption will be disabled.

" + "smithy.api#documentation": "

Determines whether to enable encryption on the CloudWatch logs. If not specified,\n\t\t\tencryption will be disabled.

" } }, "s3BucketName": { @@ -3770,7 +3800,7 @@ "s3EncryptionEnabled": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not to use encryption on the S3 logs. If not specified,\n\t\t\tencryption is not used.

" + "smithy.api#documentation": "

Determines whether to use encryption on the S3 logs. If not specified, encryption is\n\t\t\tnot used.

" } }, "s3KeyPrefix": { @@ -3865,7 +3895,7 @@ "interactive": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not the execute command session is running in interactive mode. Amazon ECS only\n\t\t\tsupports initiating interactive sessions, so you must specify true for this\n\t\t\tvalue.

" + "smithy.api#documentation": "

Determines whether the execute command session is running in interactive mode. Amazon ECS\n\t\t\tonly supports initiating interactive sessions, so you must specify true for\n\t\t\tthis value.

" } }, "session": { @@ -3930,7 +3960,7 @@ } }, "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using Amazon FSx for Windows File Server file system for task\n\t\t\tstorage.

\n\t\t

For more information and the input format, see Amazon FSx for Windows File Server Volumes\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

This parameter is specified when you're using Amazon FSx for Windows File Server file system for task\n\t\t\tstorage.

\n\t\t

For more information and the input format, see Amazon FSx for Windows File Server Volumes\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#Failure": { @@ -4022,7 +4052,7 @@ "command": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

A string array representing the command that the container runs to determine if it is\n\t\t\thealthy. The string array must start with CMD to execute the command\n\t\t\targuments directly, or CMD-SHELL to run the command with the container's\n\t\t\tdefault shell.

\n\t\t

When you use the Amazon Web Services Management Console JSON panel, the Command Line Interface, or the APIs, you should enclose the list of commands in brackets, as shown below.

\n\t\t

\n\t\t\t [ \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" ]\n\t\t

\n\t\t

You do not need to include the brackets when you use the Amazon Web Services Management Consoleas shown below.

\n\t\t

\n\t\t\t \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" \n\t\t

\n\t\t

An exit code of 0 indicates success, and non-zero exit code indicates failure. For\n\t\t\tmore information, see HealthCheck in the Create a container\n\t\t\tsection of the Docker Remote API.

", + "smithy.api#documentation": "

A string array representing the command that the container runs to determine if it is\n\t\t\thealthy. The string array must start with CMD to execute the command\n\t\t\targuments directly, or CMD-SHELL to run the command with the container's\n\t\t\tdefault shell.

\n\t\t

When you use the Amazon Web Services Management Console JSON panel, the Command Line Interface, or the APIs, enclose the list\n\t\t\tof commands in brackets.

\n\t\t

\n\t\t\t [ \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" ]\n\t\t

\n\t\t

You don't need to include the brackets when you use the Amazon Web Services Management Console.

\n\t\t

\n\t\t\t \"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\" \n\t\t

\n\t\t

An exit code of 0 indicates success, and non-zero exit code indicates failure. For\n\t\t\tmore information, see HealthCheck in the Create a container\n\t\t\tsection of the Docker Remote API.

", "smithy.api#required": {} } }, @@ -4047,12 +4077,12 @@ "startPeriod": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The optional grace period within which to provide containers time to bootstrap before\n\t\t\tfailed health checks count towards the maximum number of retries. You may specify\n\t\t\tbetween 0 and 300 seconds. The startPeriod is disabled by default.

\n\t\t \n\t\t\t

If a health check succeeds within the startPeriod, then the container\n\t\t\t\tis considered healthy and any subsequent failures count toward the maximum number of\n\t\t\t\tretries.

\n\t\t
" + "smithy.api#documentation": "

The optional grace period to provide containers time to bootstrap before failed health\n\t\t\tchecks count towards the maximum number of retries. You can specify between 0 and 300\n\t\t\tseconds. By default, the startPeriod is disabled.

\n\t\t \n\t\t\t

If a health check succeeds within the startPeriod, then the container\n\t\t\t\tis considered healthy and any subsequent failures count toward the maximum number of\n\t\t\t\tretries.

\n\t\t
" } } }, "traits": { - "smithy.api#documentation": "

An object representing a container health check. Health check parameters that are\n\t\t\tspecified in a container definition override any Docker health checks that exist in the\n\t\t\tcontainer image (such as those specified in a parent image or from the image's\n\t\t\tDockerfile).

\n\t\t

You can view the health status of both individual containers and a task with the\n\t\t\tDescribeTasks API operation or when viewing the task details in the console.

\n\t\t

The following describes the possible healthStatus values for a\n\t\t\tcontainer:

\n\t\t \n\t\t

The following describes the possible healthStatus values for a task. The\n\t\t\tcontainer health check status of nonessential containers do not have an effect on the\n\t\t\thealth status of a task.

\n\t\t \n\t\t

If a task is run manually, and not as part of a service, the task will continue its\n\t\t\tlifecycle regardless of its health status. For tasks that are part of a service, if the\n\t\t\ttask reports as unhealthy then the task will be stopped and the service scheduler will\n\t\t\treplace it.

\n\t\t

The following are notes about container health check support:

\n\t\t " + "smithy.api#documentation": "

An object representing a container health check. Health check parameters that are\n\t\t\tspecified in a container definition override any Docker health checks that exist in the\n\t\t\tcontainer image (such as those specified in a parent image or from the image's\n\t\t\tDockerfile).

\n\t\t

You can view the health status of both individual containers and a task with the\n\t\t\tDescribeTasks API operation or when viewing the task details in the console.

\n\t\t

The following describes the possible healthStatus values for a\n\t\t\tcontainer:

\n\t\t \n\t\t

The following describes the possible healthStatus values for a task. The\n\t\t\tcontainer health check status of nonessential containers do not have an effect on the\n\t\t\thealth status of a task.

\n\t\t \n\t\t

If a task is run manually, and not as part of a service, the task will continue its\n\t\t\tlifecycle regardless of its health status. For tasks that are part of a service, if the\n\t\t\ttask reports as unhealthy then the task will be stopped and the service scheduler will\n\t\t\treplace it.

\n\t\t

The following are notes about container health check support:

\n\t\t " } }, "com.amazonaws.ecs#HealthStatus": { @@ -4108,7 +4138,7 @@ "sourcePath": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

When the host parameter is used, specify a sourcePath to\n\t\t\tdeclare the path on the host container instance that is presented to the container. If\n\t\t\tthis parameter is empty, then the Docker daemon has assigned a host path for you. If the\n\t\t\t\thost parameter contains a sourcePath file location, then\n\t\t\tthe data volume persists at the specified location on the host container instance until\n\t\t\tyou delete it manually. If the sourcePath value does not exist on the host\n\t\t\tcontainer instance, the Docker daemon creates it. If the location does exist, the\n\t\t\tcontents of the source path folder are exported.

\n\t\t

If you are using the Fargate launch type, the sourcePath\n\t\t\tparameter is not supported.

" + "smithy.api#documentation": "

When the host parameter is used, specify a sourcePath to\n\t\t\tdeclare the path on the host container instance that's presented to the container. If\n\t\t\tthis parameter is empty, then the Docker daemon has assigned a host path for you. If the\n\t\t\t\thost parameter contains a sourcePath file location, then\n\t\t\tthe data volume persists at the specified location on the host container instance until\n\t\t\tyou delete it manually. If the sourcePath value doesn't exist on the host\n\t\t\tcontainer instance, the Docker daemon creates it. If the location does exist, the\n\t\t\tcontents of the source path folder are exported.

\n\t\t

If you're using the Fargate launch type, the sourcePath\n\t\t\tparameter is not supported.

" } } }, @@ -4135,7 +4165,7 @@ } }, "traits": { - "smithy.api#documentation": "

Details on a Elastic Inference accelerator. For more information, see Working with\n\t\t\t\tAmazon Elastic Inference on Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Details on an Elastic Inference accelerator. For more information, see Working with Amazon Elastic Inference on\n\t\t\t\tAmazon ECS in the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#InferenceAcceleratorOverride": { @@ -4155,7 +4185,7 @@ } }, "traits": { - "smithy.api#documentation": "

Details on an Elastic Inference accelerator task override. This parameter is used to\n\t\t\toverride the Elastic Inference accelerator specified in the task definition. For more\n\t\t\tinformation, see Working with Amazon Elastic Inference on Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Details on an Elastic Inference accelerator task override. This parameter is used to\n\t\t\toverride the Elastic Inference accelerator specified in the task definition. For more\n\t\t\tinformation, see Working with Amazon\n\t\t\t\tElastic Inference on Amazon ECS in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#InferenceAcceleratorOverrides": { @@ -4170,6 +4200,78 @@ "target": "com.amazonaws.ecs#InferenceAccelerator" } }, + "com.amazonaws.ecs#InstanceHealthCheckResult": { + "type": "structure", + "members": { + "type": { + "target": "com.amazonaws.ecs#InstanceHealthCheckType", + "traits": { + "smithy.api#documentation": "

The type of container instance health status that was verified.

" + } + }, + "status": { + "target": "com.amazonaws.ecs#InstanceHealthCheckState", + "traits": { + "smithy.api#documentation": "

The container instance health status.

" + } + }, + "lastUpdated": { + "target": "com.amazonaws.ecs#Timestamp", + "traits": { + "smithy.api#documentation": "

The Unix timestamp for when the container instance health status was last\n\t\t\tupdated.

" + } + }, + "lastStatusChange": { + "target": "com.amazonaws.ecs#Timestamp", + "traits": { + "smithy.api#documentation": "

The Unix timestamp for when the container instance health status last changed.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

An object representing the result of a container instance health status check.

" + } + }, + "com.amazonaws.ecs#InstanceHealthCheckResultList": { + "type": "list", + "member": { + "target": "com.amazonaws.ecs#InstanceHealthCheckResult" + } + }, + "com.amazonaws.ecs#InstanceHealthCheckState": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "OK", + "name": "OK" + }, + { + "value": "IMPAIRED", + "name": "IMPAIRED" + }, + { + "value": "INSUFFICIENT_DATA", + "name": "INSUFFICIENT_DATA" + }, + { + "value": "INITIALIZING", + "name": "INITIALIZING" + } + ] + } + }, + "com.amazonaws.ecs#InstanceHealthCheckType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "CONTAINER_RUNTIME", + "name": "CONTAINER_RUNTIME" + } + ] + } + }, "com.amazonaws.ecs#Integer": { "type": "integer" }, @@ -4181,7 +4283,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified parameter is invalid. Review the available parameters for the API\n\t\t\trequest.

", + "smithy.api#documentation": "

The specified parameter isn't valid. Review the available parameters for the API\n\t\t\trequest.

", "smithy.api#error": "client" } }, @@ -4221,7 +4323,7 @@ } }, "traits": { - "smithy.api#documentation": "

The Linux capabilities for the container that are added to or dropped from the default\n\t\t\tconfiguration provided by Docker. For more information on the default capabilities and\n\t\t\tthe non-default available capabilities, see Runtime privilege and Linux capabilities in the Docker run\n\t\t\t\treference. For more detailed information on these Linux capabilities, see\n\t\t\tthe capabilities(7) Linux manual page.

" + "smithy.api#documentation": "

The Linux capabilities for the container that are added to or dropped from the default\n\t\t\tconfiguration provided by Docker. For more information about the default capabilities\n\t\t\tand the non-default available capabilities, see Runtime privilege and Linux capabilities in the Docker run\n\t\t\t\treference. For more detailed information about these Linux capabilities,\n\t\t\tsee the capabilities(7) Linux manual page.

" } }, "com.amazonaws.ecs#KeyValuePair": { @@ -4271,7 +4373,7 @@ } }, "traits": { - "smithy.api#documentation": "

The limit for the resource has been exceeded.

", + "smithy.api#documentation": "

The limit for the resource was exceeded.

", "smithy.api#error": "client" } }, @@ -4287,7 +4389,7 @@ "devices": { "target": "com.amazonaws.ecs#DevicesList", "traits": { - "smithy.api#documentation": "

Any host devices to expose to the container. This parameter maps to\n\t\t\t\tDevices in the Create a container section of the\n\t\t\tDocker Remote API and the --device option to docker run.

\n\t\t \n\t\t\t

If you are using tasks that use the Fargate launch type, the\n\t\t\t\t\tdevices parameter is not supported.

\n\t\t
" + "smithy.api#documentation": "

Any host devices to expose to the container. This parameter maps to\n\t\t\t\tDevices in the Create a container section of the\n\t\t\tDocker Remote API and the --device option to docker run.

\n\t\t \n\t\t\t

If you're using tasks that use the Fargate launch type, the\n\t\t\t\t\tdevices parameter isn't supported.

\n\t\t
" } }, "initProcessEnabled": { @@ -4305,19 +4407,19 @@ "tmpfs": { "target": "com.amazonaws.ecs#TmpfsList", "traits": { - "smithy.api#documentation": "

The container path, mount options, and size (in MiB) of the tmpfs mount. This\n\t\t\tparameter maps to the --tmpfs option to docker run.

\n\t\t \n\t\t\t

If you are using tasks that use the Fargate launch type, the\n\t\t\t\t\ttmpfs parameter is not supported.

\n\t\t
" + "smithy.api#documentation": "

The container path, mount options, and size (in MiB) of the tmpfs mount. This\n\t\t\tparameter maps to the --tmpfs option to docker run.

\n\t\t \n\t\t\t

If you're using tasks that use the Fargate launch type, the\n\t\t\t\t\ttmpfs parameter isn't supported.

\n\t\t
" } }, "maxSwap": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The total amount of swap memory (in MiB) a container can use. This parameter will be\n\t\t\ttranslated to the --memory-swap option to docker run where the value would be the sum of\n\t\t\tthe container memory plus the maxSwap value.

\n\t\t

If a maxSwap value of 0 is specified, the container will not\n\t\t\tuse swap. Accepted values are 0 or any positive integer. If the\n\t\t\t\tmaxSwap parameter is omitted, the container will use the swap\n\t\t\tconfiguration for the container instance it is running on. A maxSwap value\n\t\t\tmust be set for the swappiness parameter to be used.

\n\t\t \n\t\t\t

If you are using tasks that use the Fargate launch type, the\n\t\t\t\t\tmaxSwap parameter is not supported.

\n\t\t
" + "smithy.api#documentation": "

The total amount of swap memory (in MiB) a container can use. This parameter will be\n\t\t\ttranslated to the --memory-swap option to docker run where the value would be the sum of\n\t\t\tthe container memory plus the maxSwap value.

\n\t\t

If a maxSwap value of 0 is specified, the container will not\n\t\t\tuse swap. Accepted values are 0 or any positive integer. If the\n\t\t\t\tmaxSwap parameter is omitted, the container will use the swap\n\t\t\tconfiguration for the container instance it is running on. A maxSwap value\n\t\t\tmust be set for the swappiness parameter to be used.

\n\t\t \n\t\t\t

If you're using tasks that use the Fargate launch type, the\n\t\t\t\t\tmaxSwap parameter isn't supported.

\n\t\t
" } }, "swappiness": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

This allows you to tune a container's memory swappiness behavior. A\n\t\t\t\tswappiness value of 0 will cause swapping to not happen\n\t\t\tunless absolutely necessary. A swappiness value of 100 will\n\t\t\tcause pages to be swapped very aggressively. Accepted values are whole numbers between\n\t\t\t\t0 and 100. If the swappiness parameter is not\n\t\t\tspecified, a default value of 60 is used. If a value is not specified for\n\t\t\t\tmaxSwap then this parameter is ignored. This parameter maps to the\n\t\t\t\t--memory-swappiness option to docker run.

\n\t\t \n\t\t\t

If you are using tasks that use the Fargate launch type, the\n\t\t\t\t\tswappiness parameter is not supported.

\n\t\t
" + "smithy.api#documentation": "

This allows you to tune a container's memory swappiness behavior. A\n\t\t\t\tswappiness value of 0 will cause swapping to not happen\n\t\t\tunless absolutely necessary. A swappiness value of 100 will\n\t\t\tcause pages to be swapped very aggressively. Accepted values are whole numbers between\n\t\t\t\t0 and 100. If the swappiness parameter is not\n\t\t\tspecified, a default value of 60 is used. If a value is not specified for\n\t\t\t\tmaxSwap then this parameter is ignored. This parameter maps to the\n\t\t\t\t--memory-swappiness option to docker run.

\n\t\t \n\t\t\t

If you're using tasks that use the Fargate launch type, the\n\t\t\t\t\tswappiness parameter isn't supported.

\n\t\t
" } } }, @@ -4366,7 +4468,7 @@ "value": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The value of the account settings with which to filter results. You must also specify\n\t\t\tan account setting name to use this parameter.

" + "smithy.api#documentation": "

The value of the account settings to filter results with. You must also specify an\n\t\t\taccount setting name to use this parameter.

" } }, "principalArn": { @@ -4378,19 +4480,19 @@ "effectiveSettings": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Specifies whether to return the effective settings. If true, the account\n\t\t\tsettings for the root user or the default setting for the principalArn are\n\t\t\treturned. If false, the account settings for the principalArn\n\t\t\tare returned if they are set. Otherwise, no account settings are returned.

" + "smithy.api#documentation": "

Determines whether to return the effective settings. If true, the account\n\t\t\tsettings for the root user or the default setting for the principalArn are\n\t\t\treturned. If false, the account settings for the principalArn\n\t\t\tare returned if they're set. Otherwise, no account settings are returned.

" } }, "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListAccountSettings\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls will be needed. If maxResults was provided, it is possible the number\n\t\t\tof results to be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListAccountSettings\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls will be needed. If maxResults was provided, it's possible the number\n\t\t\tof results to be fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#Integer", "traits": { - "smithy.api#documentation": "

The maximum number of account setting results returned by\n\t\t\t\tListAccountSettings in paginated output. When this parameter is used,\n\t\t\t\tListAccountSettings only returns maxResults results in a\n\t\t\tsingle page along with a nextToken response element. The remaining results\n\t\t\tof the initial request can be seen by sending another ListAccountSettings\n\t\t\trequest with the returned nextToken value. This value can be between\n\t\t\t1 and 10. If this\n\t\t\tparameter is not used, then ListAccountSettings returns up to\n\t\t\t10 results and a nextToken value\n\t\t\tif applicable.

" + "smithy.api#documentation": "

The maximum number of account setting results returned by\n\t\t\t\tListAccountSettings in paginated output. When this parameter is used,\n\t\t\t\tListAccountSettings only returns maxResults results in a\n\t\t\tsingle page along with a nextToken response element. The remaining results\n\t\t\tof the initial request can be seen by sending another ListAccountSettings\n\t\t\trequest with the returned nextToken value. This value can be between\n\t\t\t1 and 10. If this\n\t\t\tparameter isn't used, then ListAccountSettings returns up to\n\t\t\t10 results and a nextToken value\n\t\t\tif applicable.

" } } } @@ -4429,7 +4531,7 @@ } ], "traits": { - "smithy.api#documentation": "

Lists the attributes for Amazon ECS resources within a specified target type and cluster.\n\t\t\tWhen you specify a target type and cluster, ListAttributes returns a list\n\t\t\tof attribute objects, one for each attribute on each resource. You can filter the list\n\t\t\tof results to a single attribute name to only return results that have that name. You\n\t\t\tcan also filter the results by attribute name and value, for example, to see which\n\t\t\tcontainer instances in a cluster are running a Linux AMI\n\t\t\t(ecs.os-type=linux).

", + "smithy.api#documentation": "

Lists the attributes for Amazon ECS resources within a specified target type and cluster.\n\t\t\tWhen you specify a target type and cluster, ListAttributes returns a list\n\t\t\tof attribute objects, one for each attribute on each resource. You can filter the list\n\t\t\tof results to a single attribute name to only return results that have that name. You\n\t\t\tcan also filter the results by attribute name and value. You can do this, for example,\n\t\t\tto see which container instances in a cluster are running a Linux AMI\n\t\t\t\t(ecs.os-type=linux).

", "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", @@ -4450,32 +4552,32 @@ "targetType": { "target": "com.amazonaws.ecs#TargetType", "traits": { - "smithy.api#documentation": "

The type of the target with which to list attributes.

", + "smithy.api#documentation": "

The type of the target to list attributes with.

", "smithy.api#required": {} } }, "attributeName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of the attribute with which to filter the results.

" + "smithy.api#documentation": "

The name of the attribute to filter the results with.

" } }, "attributeValue": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The value of the attribute with which to filter results. You must also specify an\n\t\t\tattribute name to use this parameter.

" + "smithy.api#documentation": "

The value of the attribute to filter results with. You must also specify an attribute\n\t\t\tname to use this parameter.

" } }, "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListAttributes request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it is possible the number of results\n\t\t\tto be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListAttributes request\n\t\t\tindicating that more results are available to fulfill the request and further calls are\n\t\t\tneeded. If maxResults was provided, it's possible the number of results to\n\t\t\tbe fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of cluster results returned by ListAttributes in\n\t\t\tpaginated output. When this parameter is used, ListAttributes only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListAttributes request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If this\n\t\t\tparameter is not used, then ListAttributes returns up to\n\t\t\t100 results and a nextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of cluster results that ListAttributes returned in\n\t\t\tpaginated output. When this parameter is used, ListAttributes only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListAttributes request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If this\n\t\t\tparameter isn't used, then ListAttributes returns up to\n\t\t\t100 results and a nextToken value if applicable.

" } } } @@ -4532,13 +4634,13 @@ "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListClusters request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it is possible the number of results\n\t\t\tto be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListClusters request\n\t\t\tindicating that more results are available to fulfill the request and further calls are\n\t\t\tneeded. If maxResults was provided, it's possible the number of results to\n\t\t\tbe fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of cluster results returned by ListClusters in\n\t\t\tpaginated output. When this parameter is used, ListClusters only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListClusters request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If this\n\t\t\tparameter is not used, then ListClusters returns up to\n\t\t\t100 results and a nextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of cluster results that ListClusters returned in\n\t\t\tpaginated output. When this parameter is used, ListClusters only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListClusters request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If this\n\t\t\tparameter isn't used, then ListClusters returns up to 100\n\t\t\tresults and a nextToken value if applicable.

" } } } @@ -4549,7 +4651,7 @@ "clusterArns": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The list of full Amazon Resource Name (ARN) entries for each cluster associated with your\n\t\t\taccount.

" + "smithy.api#documentation": "

The list of full Amazon Resource Name (ARN) entries for each cluster that's associated with your\n\t\t\taccount.

" } }, "nextToken": { @@ -4610,19 +4712,19 @@ "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListContainerInstances\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls will be needed. If maxResults was provided, it is possible the number\n\t\t\tof results to be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListContainerInstances\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls are needed. If maxResults was provided, it's possible the number of\n\t\t\tresults to be fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of container instance results returned by\n\t\t\t\tListContainerInstances in paginated output. When this parameter is\n\t\t\tused, ListContainerInstances only returns maxResults results\n\t\t\tin a single page along with a nextToken response element. The remaining\n\t\t\tresults of the initial request can be seen by sending another\n\t\t\t\tListContainerInstances request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If this\n\t\t\tparameter is not used, then ListContainerInstances returns up to\n\t\t\t100 results and a nextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of container instance results that\n\t\t\t\tListContainerInstances returned in paginated output. When this\n\t\t\tparameter is used, ListContainerInstances only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListContainerInstances request with the returned\n\t\t\t\tnextToken value. This value can be between 1 and\n\t\t\t100. If this parameter isn't used, then\n\t\t\t\tListContainerInstances returns up to 100 results and\n\t\t\ta nextToken value if applicable.

" } }, "status": { "target": "com.amazonaws.ecs#ContainerInstanceStatus", "traits": { - "smithy.api#documentation": "

Filters the container instances by status. For example, if you specify the\n\t\t\t\tDRAINING status, the results include only container instances that have\n\t\t\tbeen set to DRAINING using UpdateContainerInstancesState.\n\t\t\tIf you do not specify this parameter, the default is to include container instances set\n\t\t\tto all states other than INACTIVE.

" + "smithy.api#documentation": "

Filters the container instances by status. For example, if you specify the\n\t\t\t\tDRAINING status, the results include only container instances that have\n\t\t\tbeen set to DRAINING using UpdateContainerInstancesState.\n\t\t\tIf you don't specify this parameter, the default is to include container instances set\n\t\t\tto all states other than INACTIVE.

" } } } @@ -4688,13 +4790,13 @@ "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListServices request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it is possible the number of results\n\t\t\tto be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListServices request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it is possible the number of results\n\t\t\tto be fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of service results returned by ListServices in\n\t\t\tpaginated output. When this parameter is used, ListServices only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListServices request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If\n\t\t\tthis parameter is not used, then ListServices returns up to\n\t\t\t10 results and a nextToken value if\n\t\t\tapplicable.

" + "smithy.api#documentation": "

The maximum number of service results that ListServices returned in\n\t\t\tpaginated output. When this parameter is used, ListServices only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListServices request with the returned nextToken\n\t\t\tvalue. This value can be between 1 and 100. If\n\t\t\tthis parameter isn't used, then ListServices returns up to\n\t\t\t10 results and a nextToken value if\n\t\t\tapplicable.

" } }, "launchType": { @@ -4717,7 +4819,7 @@ "serviceArns": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The list of full ARN entries for each service associated with the specified\n\t\t\tcluster.

" + "smithy.api#documentation": "

The list of full ARN entries for each service that's associated with the specified\n\t\t\tcluster.

" } }, "nextToken": { @@ -4760,7 +4862,7 @@ "resourceArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. Currently, the\n\t\t\tsupported resources are Amazon ECS tasks, services, task definitions, clusters, and container\n\t\t\tinstances.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) that identifies the resource to list the tags for. Currently, the\n\t\t\tsupported resources are Amazon ECS tasks, services, task definitions, clusters, and container\n\t\t\tinstances.

", "smithy.api#required": {} } } @@ -4797,7 +4899,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of task definition families that are registered to your account (which\n\t\t\tmay include task definition families that no longer have any ACTIVE task\n\t\t\tdefinition revisions).

\n\t\t

You can filter out task definition families that do not contain any\n\t\t\t\tACTIVE task definition revisions by setting the status\n\t\t\tparameter to ACTIVE. You can also filter the results with the\n\t\t\t\tfamilyPrefix parameter.

", + "smithy.api#documentation": "

Returns a list of task definition families that are registered to your account. This\n\t\t\tlist includes task definition families that no longer have any ACTIVE task\n\t\t\tdefinition revisions.

\n\t\t

You can filter out task definition families that don't contain any ACTIVE\n\t\t\ttask definition revisions by setting the status parameter to\n\t\t\t\tACTIVE. You can also filter the results with the\n\t\t\t\tfamilyPrefix parameter.

", "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", @@ -4812,25 +4914,25 @@ "familyPrefix": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The familyPrefix is a string that is used to filter the results of\n\t\t\t\tListTaskDefinitionFamilies. If you specify a familyPrefix,\n\t\t\tonly task definition family names that begin with the familyPrefix string\n\t\t\tare returned.

" + "smithy.api#documentation": "

The familyPrefix is a string that's used to filter the results of\n\t\t\t\tListTaskDefinitionFamilies. If you specify a familyPrefix,\n\t\t\tonly task definition family names that begin with the familyPrefix string\n\t\t\tare returned.

" } }, "status": { "target": "com.amazonaws.ecs#TaskDefinitionFamilyStatus", "traits": { - "smithy.api#documentation": "

The task definition family status with which to filter the\n\t\t\t\tListTaskDefinitionFamilies results. By default, both\n\t\t\t\tACTIVE and INACTIVE task definition families are listed.\n\t\t\tIf this parameter is set to ACTIVE, only task definition families that have\n\t\t\tan ACTIVE task definition revision are returned. If this parameter is set\n\t\t\tto INACTIVE, only task definition families that do not have any\n\t\t\t\tACTIVE task definition revisions are returned. If you paginate the\n\t\t\tresulting output, be sure to keep the status value constant in each\n\t\t\tsubsequent request.

" + "smithy.api#documentation": "

The task definition family status to filter the\n\t\t\t\tListTaskDefinitionFamilies results with. By default, both\n\t\t\t\tACTIVE and INACTIVE task definition families are listed.\n\t\t\tIf this parameter is set to ACTIVE, only task definition families that have\n\t\t\tan ACTIVE task definition revision are returned. If this parameter is set\n\t\t\tto INACTIVE, only task definition families that do not have any\n\t\t\t\tACTIVE task definition revisions are returned. If you paginate the\n\t\t\tresulting output, be sure to keep the status value constant in each\n\t\t\tsubsequent request.

" } }, "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a\n\t\t\t\tListTaskDefinitionFamilies request indicating that more results are\n\t\t\tavailable to fulfill the request and further calls will be needed. If\n\t\t\t\tmaxResults was provided, it is possible the number of results to be\n\t\t\tfewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a\n\t\t\t\tListTaskDefinitionFamilies request indicating that more results are\n\t\t\tavailable to fulfill the request and further calls will be needed. If\n\t\t\t\tmaxResults was provided, it is possible the number of results to be\n\t\t\tfewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of task definition family results returned by\n\t\t\t\tListTaskDefinitionFamilies in paginated output. When this parameter is\n\t\t\tused, ListTaskDefinitions only returns maxResults results in a\n\t\t\tsingle page along with a nextToken response element. The remaining results\n\t\t\tof the initial request can be seen by sending another\n\t\t\t\tListTaskDefinitionFamilies request with the returned\n\t\t\t\tnextToken value. This value can be between 1 and\n\t\t\t100. If this parameter is not used, then\n\t\t\t\tListTaskDefinitionFamilies returns up to 100 results\n\t\t\tand a nextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of task definition family results that\n\t\t\t\tListTaskDefinitionFamilies returned in paginated output. When this\n\t\t\tparameter is used, ListTaskDefinitions only returns maxResults\n\t\t\tresults in a single page along with a nextToken response element. The\n\t\t\tremaining results of the initial request can be seen by sending another\n\t\t\t\tListTaskDefinitionFamilies request with the returned\n\t\t\t\tnextToken value. This value can be between 1 and\n\t\t\t100. If this parameter isn't used, then\n\t\t\t\tListTaskDefinitionFamilies returns up to 100 results\n\t\t\tand a nextToken value if applicable.

" } } } @@ -4887,31 +4989,31 @@ "familyPrefix": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The full family name with which to filter the ListTaskDefinitions\n\t\t\tresults. Specifying a familyPrefix limits the listed task definitions to\n\t\t\ttask definition revisions that belong to that family.

" + "smithy.api#documentation": "

The full family name to filter the ListTaskDefinitions results with.\n\t\t\tSpecifying a familyPrefix limits the listed task definitions to task\n\t\t\tdefinition revisions that belong to that family.

" } }, "status": { "target": "com.amazonaws.ecs#TaskDefinitionStatus", "traits": { - "smithy.api#documentation": "

The task definition status with which to filter the ListTaskDefinitions\n\t\t\tresults. By default, only ACTIVE task definitions are listed. By setting\n\t\t\tthis parameter to INACTIVE, you can view task definitions that are\n\t\t\t\tINACTIVE as long as an active task or service still references them. If\n\t\t\tyou paginate the resulting output, be sure to keep the status value\n\t\t\tconstant in each subsequent request.

" + "smithy.api#documentation": "

The task definition status to filter the ListTaskDefinitions results\n\t\t\twith. By default, only ACTIVE task definitions are listed. By setting this\n\t\t\tparameter to INACTIVE, you can view task definitions that are\n\t\t\t\tINACTIVE as long as an active task or service still references them. If\n\t\t\tyou paginate the resulting output, be sure to keep the status value\n\t\t\tconstant in each subsequent request.

" } }, "sort": { "target": "com.amazonaws.ecs#SortOrder", "traits": { - "smithy.api#documentation": "

The order in which to sort the results. Valid values are ASC and\n\t\t\t\tDESC. By default (ASC), task definitions are listed\n\t\t\tlexicographically by family name and in ascending numerical order by revision so that\n\t\t\tthe newest task definitions in a family are listed last. Setting this parameter to\n\t\t\t\tDESC reverses the sort order on family name and revision so that the\n\t\t\tnewest task definitions in a family are listed first.

" + "smithy.api#documentation": "

The order to sort the results in. Valid values are ASC and\n\t\t\t\tDESC. By default, (ASC) task definitions are listed\n\t\t\tlexicographically by family name and in ascending numerical order by revision so that\n\t\t\tthe newest task definitions in a family are listed last. Setting this parameter to\n\t\t\t\tDESC reverses the sort order on family name and revision. This is so\n\t\t\tthat the newest task definitions in a family are listed first.

" } }, "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListTaskDefinitions\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls will be needed. If maxResults was provided, it is possible the number\n\t\t\tof results to be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListTaskDefinitions\n\t\t\trequest indicating that more results are available to fulfill the request and further\n\t\t\tcalls will be needed. If maxResults was provided, it is possible the number\n\t\t\tof results to be fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of task definition results returned by\n\t\t\t\tListTaskDefinitions in paginated output. When this parameter is used,\n\t\t\t\tListTaskDefinitions only returns maxResults results in a\n\t\t\tsingle page along with a nextToken response element. The remaining results\n\t\t\tof the initial request can be seen by sending another ListTaskDefinitions\n\t\t\trequest with the returned nextToken value. This value can be between\n\t\t\t1 and 100. If this parameter is not used, then\n\t\t\t\tListTaskDefinitions returns up to 100 results and a\n\t\t\t\tnextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of task definition results that ListTaskDefinitions\n\t\t\treturned in paginated output. When this parameter is used,\n\t\t\t\tListTaskDefinitions only returns maxResults results in a\n\t\t\tsingle page along with a nextToken response element. The remaining results\n\t\t\tof the initial request can be seen by sending another ListTaskDefinitions\n\t\t\trequest with the returned nextToken value. This value can be between\n\t\t\t1 and 100. If this parameter isn't used, then\n\t\t\t\tListTaskDefinitions returns up to 100 results and a\n\t\t\t\tnextToken value if applicable.

" } } } @@ -4992,19 +5094,19 @@ "nextToken": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The nextToken value returned from a ListTasks request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it is possible the number of results\n\t\t\tto be fewer than maxResults.

\n \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "smithy.api#documentation": "

The nextToken value returned from a ListTasks request\n\t\t\tindicating that more results are available to fulfill the request and further calls will\n\t\t\tbe needed. If maxResults was provided, it's possible the number of results\n\t\t\tto be fewer than maxResults.

\n\t\t \n

This token should be treated as an opaque identifier that is only used to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "maxResults": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The maximum number of task results returned by ListTasks in paginated\n\t\t\toutput. When this parameter is used, ListTasks only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListTasks request with the returned nextToken value.\n\t\t\tThis value can be between 1 and 100. If this parameter is\n\t\t\tnot used, then ListTasks returns up to 100 results and a\n\t\t\t\tnextToken value if applicable.

" + "smithy.api#documentation": "

The maximum number of task results that ListTasks returned in paginated\n\t\t\toutput. When this parameter is used, ListTasks only returns\n\t\t\t\tmaxResults results in a single page along with a nextToken\n\t\t\tresponse element. The remaining results of the initial request can be seen by sending\n\t\t\tanother ListTasks request with the returned nextToken value.\n\t\t\tThis value can be between 1 and 100. If this parameter\n\t\t\tisn't used, then ListTasks returns up to 100 results and\n\t\t\ta nextToken value if applicable.

" } }, "startedBy": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The startedBy value with which to filter the task results. Specifying a\n\t\t\t\tstartedBy value limits the results to tasks that were started with that\n\t\t\tvalue.

" + "smithy.api#documentation": "

The startedBy value to filter the task results with. Specifying a\n\t\t\t\tstartedBy value limits the results to tasks that were started with that\n\t\t\tvalue.

" } }, "serviceName": { @@ -5016,7 +5118,7 @@ "desiredStatus": { "target": "com.amazonaws.ecs#DesiredStatus", "traits": { - "smithy.api#documentation": "

The task desired status to use when filtering the ListTasks results.\n\t\t\tSpecifying a desiredStatus of STOPPED limits the results to\n\t\t\ttasks that Amazon ECS has set the desired status to STOPPED. This can be useful\n\t\t\tfor debugging tasks that are not starting properly or have died or finished. The default\n\t\t\tstatus filter is RUNNING, which shows tasks that Amazon ECS has set the desired\n\t\t\tstatus to RUNNING.

\n\t\t \n\t\t\t

Although you can filter results based on a desired status of PENDING,\n\t\t\t\tthis does not return any results. Amazon ECS never sets the desired status of a task to\n\t\t\t\tthat value (only a task's lastStatus may have a value of\n\t\t\t\t\tPENDING).

\n\t\t
" + "smithy.api#documentation": "

The task desired status to use when filtering the ListTasks results.\n\t\t\tSpecifying a desiredStatus of STOPPED limits the results to\n\t\t\ttasks that Amazon ECS has set the desired status to STOPPED. This can be useful\n\t\t\tfor debugging tasks that aren't starting properly or have died or finished. The default\n\t\t\tstatus filter is RUNNING, which shows tasks that Amazon ECS has set the desired\n\t\t\tstatus to RUNNING.

\n\t\t \n\t\t\t

Although you can filter results based on a desired status of PENDING,\n\t\t\t\tthis doesn't return any results. Amazon ECS never sets the desired status of a task to\n\t\t\t\tthat value (only a task's lastStatus may have a value of\n\t\t\t\t\tPENDING).

\n\t\t
" } }, "launchType": { @@ -5050,7 +5152,7 @@ "targetGroupArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or\n\t\t\ttask set.

\n\t\t

A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. If you are using a\n\t\t\tClassic Load Balancer the target group ARN should be omitted.

\n\t\t

For services using the ECS deployment controller, you can specify one or\n\t\t\tmultiple target groups. For more information, see Registering Multiple Target Groups with a Service in\n\t\t\tthe Amazon Elastic Container Service Developer Guide.

\n\t\t

For services using the CODE_DEPLOY deployment controller, you are\n\t\t\trequired to define two target groups for the load balancer. For more information, see\n\t\t\t\tBlue/Green Deployment with CodeDeploy in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If your service's task definition uses the awsvpc network mode (which\n\t\t\t\tis required for the Fargate launch type), you must choose\n\t\t\t\t\tip as the target type, not instance, when creating\n\t\t\t\tyour target groups because tasks that use the awsvpc network mode are\n\t\t\t\tassociated with an elastic network interface, not an Amazon EC2 instance.

\n\t\t
" + "smithy.api#documentation": "

The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or\n\t\t\ttask set.

\n\t\t

A target group ARN is only specified when using an Application Load Balancer or Network Load Balancer. If you're using a\n\t\t\tClassic Load Balancer, omit the target group ARN.

\n\t\t

For services using the ECS deployment controller, you can specify one or\n\t\t\tmultiple target groups. For more information, see Registering Multiple Target Groups with a Service in\n\t\t\tthe Amazon Elastic Container Service Developer Guide.

\n\t\t

For services using the CODE_DEPLOY deployment controller, you're required\n\t\t\tto define two target groups for the load balancer. For more information, see Blue/Green Deployment with CodeDeploy in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If your service's task definition uses the awsvpc network mode, you\n\t\t\t\tmust choose ip as the target type, not instance. Do this\n\t\t\t\twhen creating your target groups because tasks that use the awsvpc\n\t\t\t\tnetwork mode are associated with an elastic network interface, not an Amazon EC2\n\t\t\t\tinstance. This network mode is required for the Fargate launch\n\t\t\t\ttype.

\n\t\t
" } }, "loadBalancerName": { @@ -5068,7 +5170,7 @@ "containerPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port on the container to associate with the load balancer. This port must\n\t\t\tcorrespond to a containerPort in the task definition the tasks in the\n\t\t\tservice are using. For tasks that use the EC2 launch type, the container\n\t\t\tinstance they are launched on must allow ingress traffic on the hostPort of\n\t\t\tthe port mapping.

" + "smithy.api#documentation": "

The port on the container to associate with the load balancer. This port must\n\t\t\tcorrespond to a containerPort in the task definition the tasks in the\n\t\t\tservice are using. For tasks that use the EC2 launch type, the container\n\t\t\tinstance they're launched on must allow ingress traffic on the hostPort of\n\t\t\tthe port mapping.

" } } }, @@ -5088,7 +5190,7 @@ "logDriver": { "target": "com.amazonaws.ecs#LogDriver", "traits": { - "smithy.api#documentation": "

The log driver to use for the container.

\n\t\t

For tasks on Fargate, the supported log drivers are awslogs,\n\t\t\t\tsplunk, and awsfirelens.

\n\t\t

For tasks hosted on Amazon EC2 instances, the supported log drivers are\n\t\t\t\tawslogs, fluentd, gelf,\n\t\t\t\tjson-file, journald,\n\t\t\t\tlogentries,syslog, splunk, and\n\t\t\t\tawsfirelens.

\n\t\t

For more information about using the awslogs log driver, see Using\n\t\t\t\tthe awslogs log driver in the Amazon Elastic Container Service Developer Guide.

\n\t\t

For more information about using the awsfirelens log driver, see Custom log routing in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If you have a custom driver that is not listed, you can fork the Amazon ECS container\n\t\t\t\tagent project that is available\n\t\t\t\t\ton GitHub and customize it to work with that driver. We encourage you to\n\t\t\t\tsubmit pull requests for changes that you would like to have included. However, we\n\t\t\t\tdo not currently provide support for running modified copies of this\n\t\t\t\tsoftware.

\n\t\t
", + "smithy.api#documentation": "

The log driver to use for the container.

\n\t\t

For tasks on Fargate, the supported log drivers are awslogs,\n\t\t\t\tsplunk, and awsfirelens.

\n\t\t

For tasks hosted on Amazon EC2 instances, the supported log drivers are\n\t\t\t\tawslogs, fluentd, gelf,\n\t\t\t\tjson-file, journald,\n\t\t\t\tlogentries,syslog, splunk, and\n\t\t\t\tawsfirelens.

\n\t\t

For more information about using the awslogs log driver, see Using\n\t\t\t\tthe awslogs log driver in the Amazon Elastic Container Service Developer Guide.

\n\t\t

For more information about using the awsfirelens log driver, see Custom log routing in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If you have a custom driver that isn't listed, you can fork the Amazon ECS container\n\t\t\t\tagent project that's available\n\t\t\t\t\ton GitHub and customize it to work with that driver. We encourage you to\n\t\t\t\tsubmit pull requests for changes that you would like to have included. However, we\n\t\t\t\tdon't currently provide support for running modified copies of this software.

\n\t\t
", "smithy.api#required": {} } }, @@ -5106,7 +5208,7 @@ } }, "traits": { - "smithy.api#documentation": "

The log configuration for the container. This parameter maps to LogConfig\n\t\t\tin the Create a container section of the Docker Remote API and the\n\t\t\t\t--log-driver option to \n docker\n\t\t\t\t\trun\n .

\n\t\t

By default, containers use the same logging driver that the Docker daemon uses;\n\t\t\thowever the container may use a different logging driver than the Docker daemon by\n\t\t\tspecifying a log driver configuration in the container definition. For more information\n\t\t\ton the options for different supported log drivers, see Configure logging\n\t\t\t\tdrivers in the Docker documentation.

\n\t\t

The following should be noted when specifying a log configuration for your\n\t\t\tcontainers:

\n\t\t " + "smithy.api#documentation": "

The log configuration for the container. This parameter maps to LogConfig\n\t\t\tin the Create a container section of the Docker Remote API and the\n\t\t\t\t--log-driver option to \n docker\n\t\t\t\t\trun\n .

\n\t\t

By default, containers use the same logging driver that the Docker daemon uses.\n\t\t\tHowever, the container might use a different logging driver than the Docker daemon by\n\t\t\tspecifying a log driver configuration in the container definition. For more information\n\t\t\tabout the options for different supported log drivers, see Configure logging\n\t\t\t\tdrivers in the Docker documentation.

\n\t\t

Understand the following when specifying a log configuration for your\n\t\t\tcontainers.

\n\t\t " } }, "com.amazonaws.ecs#LogConfigurationOptionsMap": { @@ -5166,7 +5268,7 @@ "lastStartedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the managed agent was last started.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the managed agent was last started.

" } }, "name": { @@ -5209,7 +5311,7 @@ "containerName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of the container associated with the managed agent.

", + "smithy.api#documentation": "

The name of the container that's associated with the managed agent.

", "smithy.api#required": {} } }, @@ -5256,25 +5358,25 @@ "status": { "target": "com.amazonaws.ecs#ManagedScalingStatus", "traits": { - "smithy.api#documentation": "

Whether or not to enable managed scaling for the capacity provider.

" + "smithy.api#documentation": "

Determines whether to enable managed scaling for the capacity provider.

" } }, "targetCapacity": { "target": "com.amazonaws.ecs#ManagedScalingTargetCapacity", "traits": { - "smithy.api#documentation": "

The target capacity value for the capacity provider. The specified value must be\n\t\t\tgreater than 0 and less than or equal to 100. A value of\n\t\t\t\t100 will result in the Amazon EC2 instances in your Auto Scaling group being\n\t\t\tcompletely utilized.

" + "smithy.api#documentation": "

The target capacity value for the capacity provider. The specified value must be\n\t\t\tgreater than 0 and less than or equal to 100. A value of\n\t\t\t\t100 results in the Amazon EC2 instances in your Auto Scaling group being\n\t\t\tcompletely used.

" } }, "minimumScalingStepSize": { "target": "com.amazonaws.ecs#ManagedScalingStepSize", "traits": { - "smithy.api#documentation": "

The minimum number of container instances that Amazon ECS will scale in or scale out at one\n\t\t\ttime. If this parameter is omitted, the default value of 1 is used.

" + "smithy.api#documentation": "

The minimum number of container instances that Amazon ECS scales in or scales out at one\n\t\t\ttime. If this parameter is omitted, the default value of 1 is used.

" } }, "maximumScalingStepSize": { "target": "com.amazonaws.ecs#ManagedScalingStepSize", "traits": { - "smithy.api#documentation": "

The maximum number of container instances that Amazon ECS will scale in or scale out at one\n\t\t\ttime. If this parameter is omitted, the default value of 10000 is\n\t\t\tused.

" + "smithy.api#documentation": "

The maximum number of container instances that Amazon ECS scales in or scales out at one\n\t\t\ttime. If this parameter is omitted, the default value of 10000 is\n\t\t\tused.

" } }, "instanceWarmupPeriod": { @@ -5285,7 +5387,7 @@ } }, "traits": { - "smithy.api#documentation": "

The managed scaling settings for the Auto Scaling group capacity provider.

\n\t\t

When managed scaling is enabled, Amazon ECS manages the scale-in and scale-out actions of\n\t\t\tthe Auto Scaling group. Amazon ECS manages a target tracking scaling policy using an\n\t\t\tAmazon ECS-managed CloudWatch metric with the specified targetCapacity value as the\n\t\t\ttarget value for the metric. For more information, see Using Managed Scaling in the Amazon Elastic Container Service Developer Guide.

\n\t\t

If managed scaling is disabled, the user must manage the scaling of the Auto Scaling\n\t\t\tgroup.

" + "smithy.api#documentation": "

The managed scaling settings for the Auto Scaling group capacity provider.

\n\t\t

When managed scaling is enabled, Amazon ECS manages the scale-in and scale-out actions of\n\t\t\tthe Auto Scaling group. Amazon ECS manages a target tracking scaling policy using an Amazon ECS\n\t\t\tmanaged CloudWatch metric with the specified targetCapacity value as the target\n\t\t\tvalue for the metric. For more information, see Using Managed Scaling in the Amazon Elastic Container Service Developer Guide.

\n\t\t

If managed scaling is disabled, the user must manage the scaling of the Auto Scaling\n\t\t\tgroup.

" } }, "com.amazonaws.ecs#ManagedScalingInstanceWarmupPeriod": { @@ -5356,7 +5458,7 @@ } }, "traits": { - "smithy.api#documentation": "

Amazon ECS is unable to determine the current version of the Amazon ECS container agent on the\n\t\t\tcontainer instance and does not have enough information to proceed with an update. This\n\t\t\tcould be because the agent running on the container instance is an older or custom\n\t\t\tversion that does not use our version information.

", + "smithy.api#documentation": "

Amazon ECS can't determine the current version of the Amazon ECS container agent on the\n\t\t\tcontainer instance and doesn't have enough information to proceed with an update. This\n\t\t\tcould be because the agent running on the container instance is a previous or custom\n\t\t\tversion that doesn't use our version information.

", "smithy.api#error": "client" } }, @@ -5383,7 +5485,7 @@ } }, "traits": { - "smithy.api#documentation": "

Details on a volume mount point that is used in a container definition.

" + "smithy.api#documentation": "

Details for a volume mount point that's used in a container definition.

" } }, "com.amazonaws.ecs#MountPointList": { @@ -5404,13 +5506,13 @@ "containerPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port number on the container that is used with the network binding.

" + "smithy.api#documentation": "

The port number on the container that's used with the network binding.

" } }, "hostPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port number on the host that is used with the network binding.

" + "smithy.api#documentation": "

The port number on the host that's used with the network binding.

" } }, "protocol": { @@ -5436,7 +5538,7 @@ "awsvpcConfiguration": { "target": "com.amazonaws.ecs#AwsVpcConfiguration", "traits": { - "smithy.api#documentation": "

The VPC subnets and security groups associated with a task.

\n\t\t \n\t\t\t

All specified subnets and security groups must be from the same VPC.

\n\t\t
" + "smithy.api#documentation": "

The VPC subnets and security groups that are associated with a task.

\n\t\t \n\t\t\t

All specified subnets and security groups must be from the same VPC.

\n\t\t
" } } }, @@ -5507,7 +5609,7 @@ } }, "traits": { - "smithy.api#documentation": "

There is no update available for this Amazon ECS container agent. This could be because the\n\t\t\tagent is already running the latest version, or it is so old that there is no update\n\t\t\tpath to the current version.

", + "smithy.api#documentation": "

There's no update available for this Amazon ECS container agent. This might be because the\n\t\t\tagent is already running the latest version or because it's so old that there's no\n\t\t\tupdate path to the current version.

", "smithy.api#error": "client" } }, @@ -5582,7 +5684,7 @@ } }, "traits": { - "smithy.api#documentation": "

An object representing a constraint on task placement. For more information, see\n\t\t\t\tTask Placement Constraints in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If you are using the Fargate launch type, task placement constraints\n\t\t\t\tare not supported.

\n\t\t
" + "smithy.api#documentation": "

An object representing a constraint on task placement. For more information, see\n\t\t\t\tTask Placement Constraints in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

If you're using the Fargate launch type, task placement constraints\n\t\t\t\taren't supported.

\n\t\t
" } }, "com.amazonaws.ecs#PlacementConstraintType": { @@ -5618,13 +5720,13 @@ "type": { "target": "com.amazonaws.ecs#PlacementStrategyType", "traits": { - "smithy.api#documentation": "

The type of placement strategy. The random placement strategy randomly\n\t\t\tplaces tasks on available candidates. The spread placement strategy spreads\n\t\t\tplacement across available candidates evenly based on the field parameter.\n\t\t\tThe binpack strategy places tasks on available candidates that have the\n\t\t\tleast available amount of the resource that is specified with the field\n\t\t\tparameter. For example, if you binpack on memory, a task is placed on the instance with\n\t\t\tthe least amount of remaining memory (but still enough to run the task).

" + "smithy.api#documentation": "

The type of placement strategy. The random placement strategy randomly\n\t\t\tplaces tasks on available candidates. The spread placement strategy spreads\n\t\t\tplacement across available candidates evenly based on the field parameter.\n\t\t\tThe binpack strategy places tasks on available candidates that have the\n\t\t\tleast available amount of the resource that's specified with the field\n\t\t\tparameter. For example, if you binpack on memory, a task is placed on the instance with\n\t\t\tthe least amount of remaining memory but still enough to run the task.

" } }, "field": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The field to apply the placement strategy against. For the spread\n\t\t\tplacement strategy, valid values are instanceId (or host,\n\t\t\twhich has the same effect), or any platform or custom attribute that is applied to a\n\t\t\tcontainer instance, such as attribute:ecs.availability-zone. For the\n\t\t\t\tbinpack placement strategy, valid values are cpu and\n\t\t\t\tmemory. For the random placement strategy, this field is\n\t\t\tnot used.

" + "smithy.api#documentation": "

The field to apply the placement strategy against. For the spread\n\t\t\tplacement strategy, valid values are instanceId (or host,\n\t\t\twhich has the same effect), or any platform or custom attribute that's applied to a\n\t\t\tcontainer instance, such as attribute:ecs.availability-zone. For the\n\t\t\t\tbinpack placement strategy, valid values are cpu and\n\t\t\t\tmemory. For the random placement strategy, this field is\n\t\t\tnot used.

" } } }, @@ -5657,14 +5759,14 @@ "id": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The ID for the GPU(s) on the container instance. The available GPU IDs can also be\n\t\t\tobtained on the container instance in the\n\t\t\t\t/var/lib/ecs/gpu/nvidia_gpu_info.json file.

", + "smithy.api#documentation": "

The ID for the GPUs on the container instance. The available GPU IDs can also be\n\t\t\tobtained on the container instance in the\n\t\t\t\t/var/lib/ecs/gpu/nvidia_gpu_info.json file.

", "smithy.api#required": {} } }, "type": { "target": "com.amazonaws.ecs#PlatformDeviceType", "traits": { - "smithy.api#documentation": "

The type of device that is available on the container instance. The only supported\n\t\t\tvalue is GPU.

", + "smithy.api#documentation": "

The type of device that's available on the container instance. The only supported\n\t\t\tvalue is GPU.

", "smithy.api#required": {} } } @@ -5698,7 +5800,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified platform version does not satisfy the task definition's required\n\t\t\tcapabilities.

", + "smithy.api#documentation": "

The specified platform version doesn't satisfy the required capabilities of the task\n\t\t\tdefinition.

", "smithy.api#error": "client" } }, @@ -5710,7 +5812,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified platform version does not exist.

", + "smithy.api#documentation": "

The specified platform version doesn't exist.

", "smithy.api#error": "client" } }, @@ -5720,13 +5822,13 @@ "containerPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port number on the container that is bound to the user-specified or automatically\n\t\t\tassigned host port.

\n\t\t

If you are using containers in a task with the awsvpc or\n\t\t\t\thost network mode, exposed ports should be specified using\n\t\t\t\tcontainerPort.

\n\t\t

If you are using containers in a task with the bridge network mode and\n\t\t\tyou specify a container port and not a host port, your container automatically receives\n\t\t\ta host port in the ephemeral port range. For more information, see\n\t\t\thostPort. Port mappings that are automatically assigned in this way do not\n\t\t\tcount toward the 100 reserved ports limit of a container instance.

" + "smithy.api#documentation": "

The port number on the container that's bound to the user-specified or automatically\n\t\t\tassigned host port.

\n\t\t

If you use containers in a task with the awsvpc or host\n\t\t\tnetwork mode, specify the exposed ports using containerPort.

\n\t\t

If you use containers in a task with the bridge network mode and you\n\t\t\tspecify a container port and not a host port, your container automatically receives a\n\t\t\thost port in the ephemeral port range. For more information, see hostPort.\n\t\t\tPort mappings that are automatically assigned in this way do not count toward the 100\n\t\t\treserved ports limit of a container instance.

" } }, "hostPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port number on the container instance to reserve for your container.

\n\t\t

If you are using containers in a task with the awsvpc or\n\t\t\t\thost network mode, the hostPort can either be left blank\n\t\t\tor set to the same value as the containerPort.

\n\t\t

If you are using containers in a task with the bridge network mode, you\n\t\t\tcan specify a non-reserved host port for your container port mapping, or you can omit\n\t\t\tthe hostPort (or set it to 0) while specifying a\n\t\t\t\tcontainerPort and your container automatically receives a port in the\n\t\t\tephemeral port range for your container instance operating system and Docker\n\t\t\tversion.

\n\t\t

The default ephemeral port range for Docker version 1.6.0 and later is listed on the\n\t\t\tinstance under /proc/sys/net/ipv4/ip_local_port_range. If this kernel\n\t\t\tparameter is unavailable, the default ephemeral port range from 49153 through 65535 is\n\t\t\tused. Do not attempt to specify a host port in the ephemeral port range as these are\n\t\t\treserved for automatic assignment. In general, ports below 32768 are outside of the\n\t\t\tephemeral port range.

\n\t\t \n\t\t\t

The default ephemeral port range from 49153 through 65535 is always used for\n\t\t\t\tDocker versions before 1.6.0.

\n\t\t
\n\t\t

The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the\n\t\t\tAmazon ECS container agent ports 51678-51680. Any host port that was previously specified in\n\t\t\ta running task is also reserved while the task is running (after a task stops, the host\n\t\t\tport is released). The current reserved ports are displayed in the\n\t\t\t\tremainingResources of DescribeContainerInstances\n\t\t\toutput. A container instance can have up to 100 reserved ports at a time, including the\n\t\t\tdefault reserved ports. Automatically assigned ports don't count toward the 100 reserved\n\t\t\tports limit.

" + "smithy.api#documentation": "

The port number on the container instance to reserve for your container.

\n\t\t

If you use containers in a task with the awsvpc or host\n\t\t\tnetwork mode, the hostPort can either be left blank or set to the same\n\t\t\tvalue as the containerPort.

\n\t\t

If you use containers in a task with the bridge network mode, you can\n\t\t\tspecify a non-reserved host port for your container port mapping, or you can omit the\n\t\t\t\thostPort (or set it to 0) while specifying a\n\t\t\t\tcontainerPort and your container automatically receives a port in the\n\t\t\tephemeral port range for your container instance operating system and Docker\n\t\t\tversion.

\n\t\t

The default ephemeral port range for Docker version 1.6.0 and later is listed on the\n\t\t\tinstance under /proc/sys/net/ipv4/ip_local_port_range. If this kernel\n\t\t\tparameter is unavailable, the default ephemeral port range from 49153 through 65535 is\n\t\t\tused. Do not attempt to specify a host port in the ephemeral port range as these are\n\t\t\treserved for automatic assignment. In general, ports below 32768 are outside of the\n\t\t\tephemeral port range.

\n\t\t \n\t\t\t

The default ephemeral port range from 49153 through 65535 is always used for\n\t\t\t\tDocker versions before 1.6.0.

\n\t\t
\n\t\t

The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the\n\t\t\tAmazon ECS container agent ports 51678-51680. Any host port that was previously specified in\n\t\t\ta running task is also reserved while the task is running. That is, after a task stops,\n\t\t\tthe host port is released. The current reserved ports are displayed in the\n\t\t\t\tremainingResources of DescribeContainerInstances\n\t\t\toutput. A container instance can have up to 100 reserved ports at a time. This number\n\t\t\tincludes the default reserved ports. Automatically assigned ports aren't included in the\n\t\t\t100 reserved ports quota.

" } }, "protocol": { @@ -5737,7 +5839,7 @@ } }, "traits": { - "smithy.api#documentation": "

Port mappings allow containers to access ports on the host container instance to send\n\t\t\tor receive traffic. Port mappings are specified as part of the container\n\t\t\tdefinition.

\n\t\t

If you are using containers in a task with the awsvpc or\n\t\t\t\thost network mode, exposed ports should be specified using\n\t\t\t\tcontainerPort. The hostPort can be left blank or it must\n\t\t\tbe the same value as the containerPort.

\n\t\t \n\t\t\t

You cannot expose the same container port for multiple protocols. An error will be\n\t\t\t\treturned if this is attempted

\n\t\t
\n\t\t

After a task reaches the RUNNING status, manual and automatic host and\n\t\t\tcontainer port assignments are visible in the networkBindings section of\n\t\t\t\tDescribeTasks API responses.

" + "smithy.api#documentation": "

Port mappings allow containers to access ports on the host container instance to send\n\t\t\tor receive traffic. Port mappings are specified as part of the container\n\t\t\tdefinition.

\n\t\t

If you use containers in a task with the awsvpc or host\n\t\t\tnetwork mode, specify the exposed ports using containerPort. The\n\t\t\t\thostPort can be left blank or it must be the same value as the\n\t\t\t\tcontainerPort.

\n\t\t \n\t\t\t

You can't expose the same container port for multiple protocols. If you attempt\n\t\t\t\tthis, an error is returned.

\n\t\t
\n\t\t

After a task reaches the RUNNING status, manual and automatic host and\n\t\t\tcontainer port assignments are visible in the networkBindings section of\n\t\t\t\tDescribeTasks API responses.

" } }, "com.amazonaws.ecs#PortMappingList": { @@ -5785,7 +5887,7 @@ } }, "traits": { - "smithy.api#documentation": "

The configuration details for the App Mesh proxy.

\n\t\t

For tasks using the EC2 launch type, the container instances require at\n\t\t\tleast version 1.26.0 of the container agent and at least version 1.26.0-1 of the\n\t\t\t\tecs-init package to enable a proxy configuration. If your container\n\t\t\tinstances are launched from the Amazon ECS-optimized AMI version 20190301 or\n\t\t\tlater, then they contain the required versions of the container agent and\n\t\t\t\tecs-init. For more information, see Amazon ECS-optimized Linux AMI\n\t\t

" + "smithy.api#documentation": "

The configuration details for the App Mesh proxy.

\n\t\t

For tasks that use the EC2 launch type, the container instances require\n\t\t\tat least version 1.26.0 of the container agent and at least version 1.26.0-1 of the\n\t\t\t\tecs-init package to enable a proxy configuration. If your container\n\t\t\tinstances are launched from the Amazon ECS optimized AMI version 20190301 or\n\t\t\tlater, then they contain the required versions of the container agent and\n\t\t\t\tecs-init. For more information, see Amazon ECS-optimized Linux AMI\n\t\t

" } }, "com.amazonaws.ecs#ProxyConfigurationProperties": { @@ -5825,7 +5927,7 @@ } ], "traits": { - "smithy.api#documentation": "

Modifies an account setting. Account settings are set on a per-Region basis.

\n\t\t

If you change the account setting for the root user, the default settings for all of\n\t\t\tthe IAM users and roles for which no individual account setting has been specified are\n\t\t\treset. For more information, see Account\n\t\t\t\tSettings in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When serviceLongArnFormat, taskLongArnFormat, or\n\t\t\t\tcontainerInstanceLongArnFormat are specified, the Amazon Resource Name\n\t\t\t(ARN) and resource ID format of the resource type for a specified IAM user, IAM role, or\n\t\t\tthe root user for an account is affected. The opt-in and opt-out account setting must be\n\t\t\tset for each Amazon ECS resource separately. The ARN and resource ID format of a resource\n\t\t\twill be defined by the opt-in status of the IAM user or role that created the resource.\n\t\t\tYou must enable this setting to use Amazon ECS features such as resource tagging.

\n\t\t

When awsvpcTrunking is specified, the elastic network interface (ENI)\n\t\t\tlimit for any new container instances that support the feature is changed. If\n\t\t\t\tawsvpcTrunking is enabled, any new container instances that support the\n\t\t\tfeature are launched have the increased ENI limits available to them. For more\n\t\t\tinformation, see Elastic Network\n\t\t\t\tInterface Trunking in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When containerInsights is specified, the default setting indicating\n\t\t\twhether CloudWatch Container Insights is enabled for your clusters is changed. If\n\t\t\t\tcontainerInsights is enabled, any new clusters that are created will\n\t\t\thave Container Insights enabled unless you disable it during cluster creation. For more\n\t\t\tinformation, see CloudWatch\n\t\t\t\tContainer Insights in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Modifies an account setting. Account settings are set on a per-Region basis.

\n\t\t

If you change the account setting for the root user, the default settings for all of\n\t\t\tthe IAM users and roles that no individual account setting was specified are reset for.\n\t\t\tFor more information, see Account\n\t\t\t\tSettings in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When serviceLongArnFormat, taskLongArnFormat, or\n\t\t\t\tcontainerInstanceLongArnFormat are specified, the Amazon Resource Name\n\t\t\t(ARN) and resource ID format of the resource type for a specified IAM user, IAM role, or\n\t\t\tthe root user for an account is affected. The opt-in and opt-out account setting must be\n\t\t\tset for each Amazon ECS resource separately. The ARN and resource ID format of a resource is\n\t\t\tdefined by the opt-in status of the IAM user or role that created the resource. You must\n\t\t\tenable this setting to use Amazon ECS features such as resource tagging.

\n\t\t

When awsvpcTrunking is specified, the elastic network interface (ENI)\n\t\t\tlimit for any new container instances that support the feature is changed. If\n\t\t\t\tawsvpcTrunking is enabled, any new container instances that support the\n\t\t\tfeature are launched have the increased ENI limits available to them. For more\n\t\t\tinformation, see Elastic Network\n\t\t\t\tInterface Trunking in the Amazon Elastic Container Service Developer Guide.

\n\t\t

When containerInsights is specified, the default setting indicating\n\t\t\twhether CloudWatch Container Insights is enabled for your clusters is changed. If\n\t\t\t\tcontainerInsights is enabled, any new clusters that are created will\n\t\t\thave Container Insights enabled unless you disable it during cluster creation. For more\n\t\t\tinformation, see CloudWatch\n\t\t\t\tContainer Insights in the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#PutAccountSettingDefault": { @@ -5940,7 +6042,7 @@ } ], "traits": { - "smithy.api#documentation": "

Create or update an attribute on an Amazon ECS resource. If the attribute does not exist,\n\t\t\tit is created. If the attribute exists, its value is replaced with the specified value.\n\t\t\tTo delete an attribute, use DeleteAttributes. For more information,\n\t\t\tsee Attributes in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Create or update an attribute on an Amazon ECS resource. If the attribute doesn't exist,\n\t\t\tit's created. If the attribute exists, its value is replaced with the specified value.\n\t\t\tTo delete an attribute, use DeleteAttributes. For more information,\n\t\t\tsee Attributes in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#PutAttributesRequest": { @@ -5955,7 +6057,7 @@ "attributes": { "target": "com.amazonaws.ecs#Attributes", "traits": { - "smithy.api#documentation": "

The attributes to apply to your resource. You can specify up to 10 custom attributes\n\t\t\tper resource. You can specify up to 10 attributes in a single call.

", + "smithy.api#documentation": "

The attributes to apply to your resource. You can specify up to 10 custom attributes\n\t\t\tfor each resource. You can specify up to 10 attributes in a single call.

", "smithy.api#required": {} } } @@ -6001,7 +6103,7 @@ } ], "traits": { - "smithy.api#documentation": "

Modifies the available capacity providers and the default capacity provider strategy\n\t\t\tfor a cluster.

\n\t\t

You must specify both the available capacity providers and a default capacity provider\n\t\t\tstrategy for the cluster. If the specified cluster has existing capacity providers\n\t\t\tassociated with it, you must specify all existing capacity providers in addition to any\n\t\t\tnew ones you want to add. Any existing capacity providers associated with a cluster that\n\t\t\tare omitted from a PutClusterCapacityProviders API call will be\n\t\t\tdisassociated with the cluster. You can only disassociate an existing capacity provider\n\t\t\tfrom a cluster if it's not being used by any existing tasks.

\n\t\t

When creating a service or running a task on a cluster, if no capacity provider or\n\t\t\tlaunch type is specified, then the cluster's default capacity provider strategy is used.\n\t\t\tIt is recommended to define a default capacity provider strategy for your cluster,\n\t\t\thowever you may specify an empty array ([]) to bypass defining a default\n\t\t\tstrategy.

" + "smithy.api#documentation": "

Modifies the available capacity providers and the default capacity provider strategy\n\t\t\tfor a cluster.

\n\t\t

You must specify both the available capacity providers and a default capacity provider\n\t\t\tstrategy for the cluster. If the specified cluster has existing capacity providers\n\t\t\tassociated with it, you must specify all existing capacity providers in addition to any\n\t\t\tnew ones you want to add. Any existing capacity providers that are associated with a\n\t\t\tcluster that are omitted from a PutClusterCapacityProviders API call\n\t\t\twill be disassociated with the cluster. You can only disassociate an existing capacity\n\t\t\tprovider from a cluster if it's not being used by any existing tasks.

\n\t\t

When creating a service or running a task on a cluster, if no capacity provider or\n\t\t\tlaunch type is specified, then the cluster's default capacity provider strategy is used.\n\t\t\tWe recommend that you define a default capacity provider strategy for your cluster.\n\t\t\tHowever, you must specify an empty array ([]) to bypass defining a default\n\t\t\tstrategy.

" } }, "com.amazonaws.ecs#PutClusterCapacityProvidersRequest": { @@ -6010,7 +6112,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster to modify the capacity provider\n\t\t\tsettings for. If you do not specify a cluster, the default cluster is assumed.

", + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster to modify the capacity provider\n\t\t\tsettings for. If you don't specify a cluster, the default cluster is assumed.

", "smithy.api#required": {} } }, @@ -6061,7 +6163,7 @@ } ], "traits": { - "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n

Registers an EC2\n\t\t\tinstance into the specified cluster. This instance becomes available to place containers\n\t\t\ton.

" + "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n\t\t

Registers an EC2 instance into the specified cluster. This instance becomes available\n\t\t\tto place containers on.

" } }, "com.amazonaws.ecs#RegisterContainerInstanceRequest": { @@ -6070,7 +6172,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster with which to register your container\n\t\t\tinstance. If you do not specify a cluster, the default cluster is assumed.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster to register your container instance\n\t\t\twith. If you do not specify a cluster, the default cluster is assumed.

" } }, "instanceIdentityDocument": { @@ -6094,7 +6196,7 @@ "versionInfo": { "target": "com.amazonaws.ecs#VersionInfo", "traits": { - "smithy.api#documentation": "

The version information for the Amazon ECS container agent and Docker daemon running on the\n\t\t\tcontainer instance.

" + "smithy.api#documentation": "

The version information for the Amazon ECS container agent and Docker daemon that runs on\n\t\t\tthe container instance.

" } }, "containerInstanceArn": { @@ -6118,7 +6220,7 @@ "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the container instance to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value, both of which you\n\t\t\tdefine.

\n

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the container instance to help you categorize and\n\t\t\torganize them. Each tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } } } @@ -6154,7 +6256,7 @@ } ], "traits": { - "smithy.api#documentation": "

Registers a new task definition from the supplied family and\n\t\t\t\tcontainerDefinitions. Optionally, you can add data volumes to your\n\t\t\tcontainers with the volumes parameter. For more information about task\n\t\t\tdefinition parameters and defaults, see Amazon ECS Task\n\t\t\t\tDefinitions in the Amazon Elastic Container Service Developer Guide.

\n\t\t

You can specify an IAM role for your task with the taskRoleArn parameter.\n\t\t\tWhen you specify an IAM role for a task, its containers can then use the latest versions\n\t\t\tof the CLI or SDKs to make API requests to the Amazon Web Services services that are specified in\n\t\t\tthe IAM policy associated with the role. For more information, see IAM\n\t\t\t\tRoles for Tasks in the Amazon Elastic Container Service Developer Guide.

\n\t\t

You can specify a Docker networking mode for the containers in your task definition\n\t\t\twith the networkMode parameter. The available network modes correspond to\n\t\t\tthose described in Network\n\t\t\t\tsettings in the Docker run reference. If you specify the awsvpc\n\t\t\tnetwork mode, the task is allocated an elastic network interface, and you must specify a\n\t\t\t\tNetworkConfiguration when you create a service or run a task with\n\t\t\tthe task definition. For more information, see Task Networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Registers a new task definition from the supplied family and\n\t\t\t\tcontainerDefinitions. Optionally, you can add data volumes to your\n\t\t\tcontainers with the volumes parameter. For more information about task\n\t\t\tdefinition parameters and defaults, see Amazon ECS Task\n\t\t\t\tDefinitions in the Amazon Elastic Container Service Developer Guide.

\n\t\t

You can specify an IAM role for your task with the taskRoleArn parameter.\n\t\t\tWhen you specify an IAM role for a task, its containers can then use the latest versions\n\t\t\tof the CLI or SDKs to make API requests to the Amazon Web Services services that are specified in\n\t\t\tthe IAM policy that's associated with the role. For more information, see IAM\n\t\t\t\tRoles for Tasks in the Amazon Elastic Container Service Developer Guide.

\n\t\t

You can specify a Docker networking mode for the containers in your task definition\n\t\t\twith the networkMode parameter. The available network modes correspond to\n\t\t\tthose described in Network\n\t\t\t\tsettings in the Docker run reference. If you specify the awsvpc\n\t\t\tnetwork mode, the task is allocated an elastic network interface, and you must specify a\n\t\t\t\tNetworkConfiguration when you create a service or run a task with\n\t\t\tthe task definition. For more information, see Task Networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#RegisterTaskDefinitionRequest": { @@ -6163,7 +6265,7 @@ "family": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

You must specify a family for a task definition, which allows you to\n\t\t\ttrack multiple versions of the same task definition. The family is used as\n\t\t\ta name for your task definition. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.

", + "smithy.api#documentation": "

You must specify a family for a task definition. You can use it track\n\t\t\tmultiple versions of the same task definition. The family is used as a name\n\t\t\tfor your task definition. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed.

", "smithy.api#required": {} } }, @@ -6195,37 +6297,37 @@ "volumes": { "target": "com.amazonaws.ecs#VolumeList", "traits": { - "smithy.api#documentation": "

A list of volume definitions in JSON format that containers in your task may\n\t\t\tuse.

" + "smithy.api#documentation": "

A list of volume definitions in JSON format that containers in your task might\n\t\t\tuse.

" } }, "placementConstraints": { "target": "com.amazonaws.ecs#TaskDefinitionPlacementConstraints", "traits": { - "smithy.api#documentation": "

An array of placement constraint objects to use for the task. You can specify a\n\t\t\tmaximum of 10 constraints per task (this limit includes constraints in the task\n\t\t\tdefinition and those specified at runtime).

" + "smithy.api#documentation": "

An array of placement constraint objects to use for the task. You can specify a\n\t\t\tmaximum of 10 constraints for each task. This limit includes constraints in the task\n\t\t\tdefinition and those specified at runtime.

" } }, "requiresCompatibilities": { "target": "com.amazonaws.ecs#CompatibilityList", "traits": { - "smithy.api#documentation": "

The task launch type that Amazon ECS should validate the task definition against. A client\n\t\t\texception is returned if the task definition doesn't validate against the\n\t\t\tcompatibilities specified. If no value is specified, the parameter is omitted from the\n\t\t\tresponse.

" + "smithy.api#documentation": "

The task launch type that Amazon ECS validates the task definition against. A client\n\t\t\texception is returned if the task definition doesn't validate against the\n\t\t\tcompatibilities specified. If no value is specified, the parameter is omitted from the\n\t\t\tresponse.

" } }, "cpu": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The number of CPU units used by the task. It can be expressed as an integer using CPU\n\t\t\tunits, for example 1024, or as a string using vCPUs, for example 1\n\t\t\t\tvCPU or 1 vcpu, in a task definition. String values are\n\t\t\tconverted to an integer indicating the CPU units when the task definition is\n\t\t\tregistered.

\n\t\t \n\t\t\t

Task-level CPU and memory parameters are ignored for Windows containers. We\n\t\t\t\trecommend specifying container-level resources for Windows containers.

\n\t\t
\n\t\t

If you are using the EC2 launch type, this field is optional. Supported\n\t\t\tvalues are between 128 CPU units (0.125 vCPUs) and\n\t\t\t\t10240 CPU units (10 vCPUs).

\n\t\t

If you are using the Fargate launch type, this field is required and you\n\t\t\tmust use one of the following values, which determines your range of supported values\n\t\t\tfor the memory parameter:

\n " + "smithy.api#documentation": "

The number of CPU units used by the task. It can be expressed as an integer using CPU\n\t\t\tunits (for example, 1024) or as a string using vCPUs (for example, 1\n\t\t\t\tvCPU or 1 vcpu) in a task definition. String values are\n\t\t\tconverted to an integer indicating the CPU units when the task definition is\n\t\t\tregistered.

\n\t\t \n\t\t\t

Task-level CPU and memory parameters are ignored for Windows containers. We\n\t\t\t\trecommend specifying container-level resources for Windows containers.

\n\t\t
\n\t\t

If you're using the EC2 launch type, this field is optional. Supported\n\t\t\tvalues are between 128 CPU units (0.125 vCPUs) and\n\t\t\t\t10240 CPU units (10 vCPUs).

\n\t\t

If you're using the Fargate launch type, this field is required and you\n\t\t\tmust use one of the following values, which determines your range of supported values\n\t\t\tfor the memory parameter:

\n\t\t

The CPU units cannot be less than 1 vCPU when you use Windows containers on\n\t\t\tFargate.

\n\t\t " } }, "memory": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The amount of memory (in MiB) used by the task. It can be expressed as an integer\n\t\t\tusing MiB, for example 1024, or as a string using GB, for example\n\t\t\t\t1GB or 1 GB, in a task definition. String values are\n\t\t\tconverted to an integer indicating the MiB when the task definition is\n\t\t\tregistered.

\n\t\t \n\t\t\t

Task-level CPU and memory parameters are ignored for Windows containers. We\n\t\t\t\trecommend specifying container-level resources for Windows containers.

\n\t\t
\n\t\t

If using the EC2 launch type, this field is optional.

\n\t\t

If using the Fargate launch type, this field is required and you must\n\t\t\tuse one of the following values, which determines your range of supported values for the\n\t\t\t\tcpu parameter:

\n " + "smithy.api#documentation": "

The amount of memory (in MiB) used by the task. It can be expressed as an integer\n\t\t\tusing MiB (for example ,1024) or as a string using GB (for example,\n\t\t\t\t1GB or 1 GB) in a task definition. String values are\n\t\t\tconverted to an integer indicating the MiB when the task definition is\n\t\t\tregistered.

\n\t\t \n\t\t\t

Task-level CPU and memory parameters are ignored for Windows containers. We\n\t\t\t\trecommend specifying container-level resources for Windows containers.

\n\t\t
\n\t\t

If using the EC2 launch type, this field is optional.

\n\t\t

If using the Fargate launch type, this field is required and you must\n\t\t\tuse one of the following values. This determines your range of supported values for the\n\t\t\t\tcpu parameter.

\n\t\t

The CPU units cannot be less than 1 vCPU when you use Windows containers on\n\t\t\tFargate.

\n\t\t " } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the task definition to help you categorize and organize\n\t\t\tthem. Each tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the task definition to help you categorize and organize\n\t\t\tthem. Each tag consists of a key and an optional value. You define both of them.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "pidMode": { @@ -6255,13 +6357,13 @@ "ephemeralStorage": { "target": "com.amazonaws.ecs#EphemeralStorage", "traits": { - "smithy.api#documentation": "

The amount of ephemeral storage to allocate for the task. This parameter is used to\n\t\t\texpand the total amount of ephemeral storage available, beyond the default amount, for\n\t\t\ttasks hosted on Fargate. For more information, see Fargate task\n\t\t\t\tstorage in the Amazon ECS User Guide for Fargate.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate using the following platform versions:

\n\t\t\t \n\t\t
" + "smithy.api#documentation": "

The amount of ephemeral storage to allocate for the task. This parameter is used to\n\t\t\texpand the total amount of ephemeral storage available, beyond the default amount, for\n\t\t\ttasks hosted on Fargate. For more information, see Fargate task\n\t\t\t\tstorage in the Amazon ECS User Guide for Fargate.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate using\n\t\t\t\tthe following platform versions:

\n\t\t\t \n\t\t
" } }, "runtimePlatform": { "target": "com.amazonaws.ecs#RuntimePlatform", "traits": { - "smithy.api#documentation": "

The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

When you specify a task definition in a service, this value must match the runtimePlatform value of the service.

" + "smithy.api#documentation": "

The operating system that your tasks definitions run on. A platform family is\n\t\t\tspecified only for tasks using the Fargate launch type.

\n\t\t

When you specify a task definition in a service, this value must match the\n\t\t\t\truntimePlatform value of the service.

" } } } @@ -6289,7 +6391,7 @@ "credentialsParameter": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the secret containing the private repository\n\t\t\tcredentials.

\n\t\t \n\t\t\t

When you are using the Amazon ECS API, CLI, or Amazon Web Services SDK, if the secret exists in the\n\t\t\t\tsame Region as the task that you are launching then you can use either the full ARN\n\t\t\t\tor the name of the secret. When you are using the Amazon Web Services Management Console, you must specify the\n\t\t\t\tfull ARN of the secret.

\n\t\t
", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the secret containing the private repository\n\t\t\tcredentials.

\n\t\t \n\t\t\t

When you use the Amazon ECS API, CLI, or Amazon Web Services SDK, if the secret exists in the same\n\t\t\t\tRegion as the task that you're launching then you can use either the full ARN or the\n\t\t\t\tname of the secret. When you use the Amazon Web Services Management Console, you must specify the full ARN of the\n\t\t\t\tsecret.

\n\t\t
", "smithy.api#required": {} } } @@ -6316,7 +6418,7 @@ "type": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The type of the resource, such as INTEGER, DOUBLE,\n\t\t\t\tLONG, or STRINGSET.

" + "smithy.api#documentation": "

The type of the resource. Valid values: INTEGER, DOUBLE,\n\t\t\t\tLONG, or STRINGSET.

" } }, "doubleValue": { @@ -6356,7 +6458,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified resource is in-use and cannot be removed.

", + "smithy.api#documentation": "

The specified resource is in-use and can't be removed.

", "smithy.api#error": "client" } }, @@ -6368,7 +6470,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified resource could not be found.

", + "smithy.api#documentation": "

The specified resource wasn't found.

", "smithy.api#error": "client" } }, @@ -6378,7 +6480,7 @@ "value": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The value for the specified resource type.

\n\t\t

If the GPU type is used, the value is the number of physical\n\t\t\t\tGPUs the Amazon ECS container agent will reserve for the container. The\n\t\t\tnumber of GPUs reserved for all containers in a task should not exceed the number of\n\t\t\tavailable GPUs on the container instance the task is launched on.

\n\t\t

If the InferenceAccelerator type is used, the value should\n\t\t\tmatch the deviceName for an InferenceAccelerator\n\t\t\tspecified in a task definition.

", + "smithy.api#documentation": "

The value for the specified resource type.

\n\t\t

If the GPU type is used, the value is the number of physical\n\t\t\t\tGPUs the Amazon ECS container agent reserves for the container. The number\n\t\t\tof GPUs that's reserved for all containers in a task can't exceed the number of\n\t\t\tavailable GPUs on the container instance that the task is launched on.

\n\t\t

If the InferenceAccelerator type is used, the value matches\n\t\t\tthe deviceName for an InferenceAccelerator specified in a\n\t\t\ttask definition.

", "smithy.api#required": {} } }, @@ -6391,7 +6493,7 @@ } }, "traits": { - "smithy.api#documentation": "

The type and amount of a resource to assign to a container. The supported resource\n\t\t\ttypes are GPUs and Elastic Inference accelerators. For more information, see Working with\n\t\t\t\tGPUs on Amazon ECS or Working with Amazon Elastic Inference on Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide\n

" + "smithy.api#documentation": "

The type and amount of a resource to assign to a container. The supported resource\n\t\t\ttypes are GPUs and Elastic Inference accelerators. For more information, see Working with\n\t\t\t\tGPUs on Amazon ECS or Working with\n\t\t\t\tAmazon Elastic Inference on Amazon ECS in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide\n

" } }, "com.amazonaws.ecs#ResourceRequirements": { @@ -6459,7 +6561,7 @@ } ], "traits": { - "smithy.api#documentation": "

Starts a new task using the specified task definition.

\n\t\t

You can allow Amazon ECS to place tasks for you, or you can customize how Amazon ECS places\n\t\t\ttasks using placement constraints and placement strategies. For more information, see\n\t\t\t\tScheduling Tasks in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

Alternatively, you can use StartTask to use your own scheduler or\n\t\t\tplace tasks manually on specific container instances.

\n\t\t

The Amazon ECS API follows an eventual consistency model, due to the distributed nature of\n\t\t\tthe system supporting the API. This means that the result of an API command you run that\n\t\t\taffects your Amazon ECS resources might not be immediately visible to all subsequent commands\n\t\t\tyou run. Keep this in mind when you carry out an API command that immediately follows a\n\t\t\tprevious API command.

\n\t\t

To manage eventual consistency, you can do the following:

\n\t\t " + "smithy.api#documentation": "

Starts a new task using the specified task definition.

\n\t\t

You can allow Amazon ECS to place tasks for you, or you can customize how Amazon ECS places\n\t\t\ttasks using placement constraints and placement strategies. For more information, see\n\t\t\t\tScheduling Tasks in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t

Alternatively, you can use StartTask to use your own scheduler or\n\t\t\tplace tasks manually on specific container instances.

\n\t\t

The Amazon ECS API follows an eventual consistency model. This is because the distributed\n\t\t\tnature of the system supporting the API. This means that the result of an API command\n\t\t\tyou run that affects your Amazon ECS resources might not be immediately visible to all\n\t\t\tsubsequent commands you run. Keep this in mind when you carry out an API command that\n\t\t\timmediately follows a previous API command.

\n\t\t

To manage eventual consistency, you can do the following:

\n\t\t " } }, "com.amazonaws.ecs#RunTaskRequest": { @@ -6468,19 +6570,19 @@ "capacityProviderStrategy": { "target": "com.amazonaws.ecs#CapacityProviderStrategy", "traits": { - "smithy.api#documentation": "

The capacity provider strategy to use for the task.

\n\t\t

If a capacityProviderStrategy is specified, the launchType\n\t\t\tparameter must be omitted. If no capacityProviderStrategy or\n\t\t\t\tlaunchType is specified, the\n\t\t\t\tdefaultCapacityProviderStrategy for the cluster is used.

\n\t\t

When you use cluster auto scaling, you must specify capacityProviderStrategy and not launchType.

\n\t\t

A capacity provider strategy may contain a maximum of 6 capacity providers.

" + "smithy.api#documentation": "

The capacity provider strategy to use for the task.

\n\t\t

If a capacityProviderStrategy is specified, the launchType\n\t\t\tparameter must be omitted. If no capacityProviderStrategy or\n\t\t\t\tlaunchType is specified, the\n\t\t\t\tdefaultCapacityProviderStrategy for the cluster is used.

\n\t\t

When you use cluster auto scaling, you must specify\n\t\t\t\tcapacityProviderStrategy and not launchType.

\n\t\t

A capacity provider strategy may contain a maximum of 6 capacity providers.

" } }, "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster on which to run your task.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster to run your task on.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" } }, "count": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The number of instantiations of the specified task to place on your cluster. You can\n\t\t\tspecify up to 10 tasks per call.

" + "smithy.api#documentation": "

The number of instantiations of the specified task to place on your cluster. You can\n\t\t\tspecify up to 10 tasks for each call.

" } }, "enableECSManagedTags": { @@ -6492,7 +6594,7 @@ "enableExecuteCommand": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not to enable the execute command functionality for the containers in this\n\t\t\ttask. If true, this enables execute command functionality on all containers\n\t\t\tin the task.

" + "smithy.api#documentation": "

Determines whether to enable the execute command functionality for the containers in\n\t\t\tthis task. If true, this enables execute command functionality on all\n\t\t\tcontainers in the task.

" } }, "group": { @@ -6504,43 +6606,43 @@ "launchType": { "target": "com.amazonaws.ecs#LaunchType", "traits": { - "smithy.api#documentation": "

The infrastructure on which to run your standalone task. For more information, see\n\t\t\t\tAmazon ECS launch types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

The FARGATE launch type runs your tasks on Fargate On-Demand\n\t\t\tinfrastructure.

\n\t\t \n\t\t\t

Fargate Spot infrastructure is available for use but a capacity provider\n\t\t\t\tstrategy must be used. For more information, see Fargate capacity providers in the\n\t\t\t\t\tAmazon ECS User Guide for Fargate.

\n\t\t
\n\t\t

The EC2 launch type runs your tasks on Amazon EC2 instances registered to your\n\t\t\tcluster.

\n\t\t

The EXTERNAL launch type runs your tasks on your on-premise server or\n\t\t\tvirtual machine (VM) capacity registered to your cluster.

\n\t\t

A task can use either a launch type or a capacity provider strategy. If a\n\t\t\t\tlaunchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

\n\t\t

When you use cluster auto scaling, you must specify capacityProviderStrategy and not launchType.

" + "smithy.api#documentation": "

The infrastructure to run your standalone task on. For more information, see Amazon ECS\n\t\t\t\tlaunch types in the Amazon Elastic Container Service Developer Guide.

\n\t\t

The FARGATE launch type runs your tasks on Fargate On-Demand\n\t\t\tinfrastructure.

\n\t\t \n\t\t\t

Fargate Spot infrastructure is available for use but a capacity provider\n\t\t\t\tstrategy must be used. For more information, see Fargate capacity providers in the\n\t\t\t\t\tAmazon ECS User Guide for Fargate.

\n\t\t
\n\t\t

The EC2 launch type runs your tasks on Amazon EC2 instances registered to your\n\t\t\tcluster.

\n\t\t

The EXTERNAL launch type runs your tasks on your on-premises server or\n\t\t\tvirtual machine (VM) capacity registered to your cluster.

\n\t\t

A task can use either a launch type or a capacity provider strategy. If a\n\t\t\t\tlaunchType is specified, the capacityProviderStrategy\n\t\t\tparameter must be omitted.

\n\t\t

When you use cluster auto scaling, you must specify\n\t\t\t\tcapacityProviderStrategy and not launchType.

" } }, "networkConfiguration": { "target": "com.amazonaws.ecs#NetworkConfiguration", "traits": { - "smithy.api#documentation": "

The network configuration for the task. This parameter is required for task\n\t\t\tdefinitions that use the awsvpc network mode to receive their own elastic\n\t\t\tnetwork interface, and it is not supported for other network modes. For more\n\t\t\tinformation, see Task networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The network configuration for the task. This parameter is required for task\n\t\t\tdefinitions that use the awsvpc network mode to receive their own elastic\n\t\t\tnetwork interface, and it isn't supported for other network modes. For more information,\n\t\t\tsee Task networking\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" } }, "overrides": { "target": "com.amazonaws.ecs#TaskOverride", "traits": { - "smithy.api#documentation": "

A list of container overrides in JSON format that specify the name of a container in\n\t\t\tthe specified task definition and the overrides it should receive. You can override the\n\t\t\tdefault command for a container (that is specified in the task definition or Docker\n\t\t\timage) with a command override. You can also override existing environment\n\t\t\tvariables (that are specified in the task definition or Docker image) on a container or\n\t\t\tadd new environment variables to it with an environment override.

\n\t\t

A total of 8192 characters are allowed for overrides. This limit includes the JSON\n\t\t\tformatting characters of the override structure.

" + "smithy.api#documentation": "

A list of container overrides in JSON format that specify the name of a container in\n\t\t\tthe specified task definition and the overrides it should receive. You can override the\n\t\t\tdefault command for a container (that's specified in the task definition or Docker\n\t\t\timage) with a command override. You can also override existing environment\n\t\t\tvariables (that are specified in the task definition or Docker image) on a container or\n\t\t\tadd new environment variables to it with an environment override.

\n\t\t

A total of 8192 characters are allowed for overrides. This limit includes the JSON\n\t\t\tformatting characters of the override structure.

" } }, "placementConstraints": { "target": "com.amazonaws.ecs#PlacementConstraints", "traits": { - "smithy.api#documentation": "

An array of placement constraint objects to use for the task. You can specify up to 10\n\t\t\tconstraints per task (including constraints in the task definition and those specified\n\t\t\tat runtime).

" + "smithy.api#documentation": "

An array of placement constraint objects to use for the task. You can specify up to 10\n\t\t\tconstraints for each task (including constraints in the task definition and those\n\t\t\tspecified at runtime).

" } }, "placementStrategy": { "target": "com.amazonaws.ecs#PlacementStrategies", "traits": { - "smithy.api#documentation": "

The placement strategy objects to use for the task. You can specify a maximum of 5\n\t\t\tstrategy rules per task.

" + "smithy.api#documentation": "

The placement strategy objects to use for the task. You can specify a maximum of 5\n\t\t\tstrategy rules for each task.

" } }, "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version the task should use. A platform version is only specified for\n\t\t\ttasks hosted on Fargate. If one is not specified, the LATEST\n\t\t\tplatform version is used by default. For more information, see Fargate platform versions in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version the task uses. A platform version is only specified for tasks\n\t\t\thosted on Fargate. If one isn't specified, the LATEST\n\t\t\tplatform version is used. For more information, see Fargate platform\n\t\t\t\tversions in the Amazon Elastic Container Service Developer Guide.

" } }, "propagateTags": { "target": "com.amazonaws.ecs#PropagateTags", "traits": { - "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition to the task. If no\n\t\t\tvalue is specified, the tags are not propagated. Tags can only be propagated to the task\n\t\t\tduring task creation. To add tags to a task after task creation, use the TagResource API action.

\n\t\t \n\t\t\t

An error will be received if you specify the SERVICE option when\n\t\t\t\trunning a task.

\n\t\t
" + "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition to the task. If no\n\t\t\tvalue is specified, the tags aren't propagated. Tags can only be propagated to the task\n\t\t\tduring task creation. To add tags to a task after task creation, use the TagResource API action.

\n\t\t \n\t\t\t

An error will be received if you specify the SERVICE option when\n\t\t\t\trunning a task.

\n\t\t
" } }, "referenceId": { @@ -6552,7 +6654,7 @@ "startedBy": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

An optional tag specified when a task is started. For example, if you automatically\n\t\t\ttrigger a task to run a batch process job, you could apply a unique identifier for that\n\t\t\tjob to your task with the startedBy parameter. You can then identify which\n\t\t\ttasks belong to that job by filtering the results of a ListTasks call\n\t\t\twith the startedBy value. Up to 36 letters (uppercase and lowercase),\n\t\t\tnumbers, hyphens, and underscores are allowed.

\n\t\t

If a task is started by an Amazon ECS service, then the startedBy parameter\n\t\t\tcontains the deployment ID of the service that starts it.

" + "smithy.api#documentation": "

An optional tag specified when a task is started. For example, if you automatically\n\t\t\ttrigger a task to run a batch process job, you could apply a unique identifier for that\n\t\t\tjob to your task with the startedBy parameter. You can then identify which\n\t\t\ttasks belong to that job by filtering the results of a ListTasks call\n\t\t\twith the startedBy value. Up to 36 letters (uppercase and lowercase),\n\t\t\tnumbers, hyphens (-), and underscores (_) are allowed.

\n\t\t

If a task is started by an Amazon ECS service, then the startedBy parameter\n\t\t\tcontains the deployment ID of the service that starts it.

" } }, "tags": { @@ -6564,7 +6666,7 @@ "taskDefinition": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to run. If a revision is not specified,\n\t\t\tthe latest ACTIVE revision is used.

\n\t\t

The full ARN value must match the value that you specified ias the Resource\n\t\t\tof the IAM principal's permissions policy. For example, if the Resource is\n\t\t\tarn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:*, the\n\t\t\t\ttaskDefinition ARN value must be\n\t\t\t\tarn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName.

", + "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to run. If a revision isn't specified,\n\t\t\tthe latest ACTIVE revision is used.

\n\t\t

The full ARN value must match the value that you specified as the\n\t\t\t\tResource of the IAM principal's permissions policy. For example, if the\n\t\t\t\tResource is\n\t\t\tarn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:*, the\n\t\t\t\ttaskDefinition ARN value must be\n\t\t\t\tarn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName.

", "smithy.api#required": {} } } @@ -6681,7 +6783,7 @@ "valueFrom": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The secret to expose to the container. The supported values are either the full ARN of\n\t\t\tthe Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store.

\n\t\t \n\t\t\t

If the SSM Parameter Store parameter exists in the same Region as the task you\n\t\t\t\tare launching, then you can use either the full ARN or name of the parameter. If the\n\t\t\t\tparameter exists in a different Region, then the full ARN must be specified.

\n\t\t
", + "smithy.api#documentation": "

The secret to expose to the container. The supported values are either the full ARN of\n\t\t\tthe Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store.

\n\t\t \n\t\t\t

If the SSM Parameter Store parameter exists in the same Region as the task\n\t\t\t\tyou're launching, then you can use either the full ARN or name of the parameter. If\n\t\t\t\tthe parameter exists in a different Region, then the full ARN must be\n\t\t\t\tspecified.

\n\t\t
", "smithy.api#required": {} } } @@ -6726,7 +6828,7 @@ "serviceName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of your service. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. Service names must be unique within\n\t\t\ta cluster, but you can have similarly named services in multiple clusters within a\n\t\t\tRegion or across multiple Regions.

" + "smithy.api#documentation": "

The name of your service. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed. Service names must be unique within\n\t\t\ta cluster. However, you can have similarly named services in multiple clusters within a\n\t\t\tRegion or across multiple Regions.

" } }, "clusterArn": { @@ -6738,13 +6840,13 @@ "loadBalancers": { "target": "com.amazonaws.ecs#LoadBalancers", "traits": { - "smithy.api#documentation": "

A list of Elastic Load Balancing load balancer objects, containing the load balancer name, the\n\t\t\tcontainer name (as it appears in a container definition), and the container port to\n\t\t\taccess from the load balancer.

" + "smithy.api#documentation": "

A list of Elastic Load Balancing load balancer objects. It contains the load balancer name, the\n\t\t\tcontainer name, and the container port to access from the load balancer. The container\n\t\t\tname is as it appears in a container definition.

" } }, "serviceRegistries": { "target": "com.amazonaws.ecs#ServiceRegistries", "traits": { - "smithy.api#documentation": "

The details of the service discovery registries to assign to this service. For more\n\t\t\tinformation, see Service\n\t\t\t\tDiscovery.

" + "smithy.api#documentation": "

The details for the service discovery registries to assign to this service. For more\n\t\t\tinformation, see Service\n\t\t\t\tDiscovery.

" } }, "status": { @@ -6780,19 +6882,19 @@ "capacityProviderStrategy": { "target": "com.amazonaws.ecs#CapacityProviderStrategy", "traits": { - "smithy.api#documentation": "

The capacity provider strategy the service is using. When using the DescribeServices\n\t\t\tAPI, this field is omitted if the service was created using a launch type.

" + "smithy.api#documentation": "

The capacity provider strategy the service uses. When using the DescribeServices API,\n\t\t\tthis field is omitted if the service was created using a launch type.

" } }, "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version on which to run your service. A platform version is only\n\t\t\tspecified for tasks hosted on Fargate. If one is not specified, the\n\t\t\t\tLATEST platform version is used by default. For more information, see\n\t\t\t\tFargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version to run your service on. A platform version is only specified for\n\t\t\ttasks that are hosted on Fargate. If one isn't specified, the LATEST\n\t\t\tplatform version is used. For more information, see Fargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" } }, "platformFamily": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The operating system that your tasks in the service are running on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same platformFamily value as the service, for example, LINUX.

" + "smithy.api#documentation": "

The operating system that your tasks in the service run on. A platform family is\n\t\t\tspecified only for tasks using the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same\n\t\t\t\tplatformFamily value as the service (for example,\n\t\t\tLINUX).

" } }, "taskDefinition": { @@ -6822,7 +6924,7 @@ "roleArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The ARN of the IAM role associated with the service that allows the Amazon ECS container\n\t\t\tagent to register container instances with an Elastic Load Balancing load balancer.

" + "smithy.api#documentation": "

The ARN of the IAM role that's associated with the service. It allows the Amazon ECS\n\t\t\tcontainer agent to register container instances with an Elastic Load Balancing load balancer.

" } }, "events": { @@ -6834,7 +6936,7 @@ "createdAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the service was created.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the service was created.

" } }, "placementConstraints": { @@ -6864,19 +6966,19 @@ "schedulingStrategy": { "target": "com.amazonaws.ecs#SchedulingStrategy", "traits": { - "smithy.api#documentation": "

The scheduling strategy to use for the service. For more information, see Services.

\n\t\t

There are two service scheduler strategies available:

\n\t\t " + "smithy.api#documentation": "

The scheduling strategy to use for the service. For more information, see Services.

\n\t\t

There are two service scheduler strategies available.

\n\t\t " } }, "deploymentController": { "target": "com.amazonaws.ecs#DeploymentController", "traits": { - "smithy.api#documentation": "

The deployment controller type the service is using. When using the DescribeServices\n\t\t\tAPI, this field is omitted if the service is using the ECS deployment\n\t\t\tcontroller type.

" + "smithy.api#documentation": "

The deployment controller type the service is using. When using the DescribeServices\n\t\t\tAPI, this field is omitted if the service uses the ECS deployment\n\t\t\tcontroller type.

" } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the service to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the service to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define bot the key and\n\t\t\tvalue.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "createdBy": { @@ -6888,19 +6990,19 @@ "enableECSManagedTags": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Specifies whether to enable Amazon ECS managed tags for the tasks in the service. For more\n\t\t\tinformation, see Tagging Your Amazon ECS\n\t\t\t\tResources in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Determines whether to enable Amazon ECS managed tags for the tasks in the service. For more\n\t\t\tinformation, see Tagging Your Amazon ECS\n\t\t\t\tResources in the Amazon Elastic Container Service Developer Guide.

" } }, "propagateTags": { "target": "com.amazonaws.ecs#PropagateTags", "traits": { - "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition or the service to the\n\t\t\ttask. If no value is specified, the tags are not propagated.

" + "smithy.api#documentation": "

Determines whether to propagate the tags from the task definition or the service to\n\t\t\tthe task. If no value is specified, the tags aren't propagated.

" } }, "enableExecuteCommand": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not the execute command functionality is enabled for the service. If\n\t\t\t\ttrue, the execute command functionality is enabled for all containers\n\t\t\tin tasks as part of the service.

" + "smithy.api#documentation": "

Determines whether the execute command functionality is enabled for the service. If\n\t\t\t\ttrue, the execute command functionality is enabled for all containers\n\t\t\tin tasks as part of the service.

" } } }, @@ -6914,13 +7016,13 @@ "id": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The ID string of the event.

" + "smithy.api#documentation": "

The ID string for the event.

" } }, "createdAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the event was triggered.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the event was triggered.

" } }, "message": { @@ -6931,7 +7033,7 @@ } }, "traits": { - "smithy.api#documentation": "

Details on an event associated with a service.

" + "smithy.api#documentation": "

The details for an event that's associated with a service.

" } }, "com.amazonaws.ecs#ServiceEvents": { @@ -6965,7 +7067,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified service is not active. You can't update a service that is inactive. If\n\t\t\tyou have previously deleted a service, you can re-create it with CreateService.

", + "smithy.api#documentation": "

The specified service isn't active. You can't update a service that's inactive. If you\n\t\t\thave previously deleted a service, you can re-create it with CreateService.

", "smithy.api#error": "client" } }, @@ -6977,7 +7079,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified service could not be found. You can view your available services with\n\t\t\t\tListServices. Amazon ECS services are cluster-specific and\n\t\t\tRegion-specific.

", + "smithy.api#documentation": "

The specified service wasn't found. You can view your available services with ListServices. Amazon ECS services are cluster specific and Region\n\t\t\tspecific.

", "smithy.api#error": "client" } }, @@ -6999,24 +7101,24 @@ "port": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port value used if your service discovery service specified an SRV record. This\n\t\t\tfield may be used if both the awsvpc network mode and SRV records are\n\t\t\tused.

" + "smithy.api#documentation": "

The port value used if your service discovery service specified an SRV record. This\n\t\t\tfield might be used if both the awsvpc network mode and SRV records are\n\t\t\tused.

" } }, "containerName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The container name value, already specified in the task definition, to be used for\n\t\t\tyour service discovery service. If the task definition that your service task specifies\n\t\t\tuses the bridge or host network mode, you must specify a\n\t\t\t\tcontainerName and containerPort combination from the task\n\t\t\tdefinition. If the task definition that your service task specifies uses the\n\t\t\t\tawsvpc network mode and a type SRV DNS record is used, you must specify\n\t\t\teither a containerName and containerPort combination or a\n\t\t\t\tport value, but not both.

" + "smithy.api#documentation": "

The container name value to be used for your service discovery service. It's already\n\t\t\tspecified in the task definition. If the task definition that your service task\n\t\t\tspecifies uses the bridge or host network mode, you must\n\t\t\tspecify a containerName and containerPort combination from the\n\t\t\ttask definition. If the task definition that your service task specifies uses the\n\t\t\t\tawsvpc network mode and a type SRV DNS record is used, you must specify\n\t\t\teither a containerName and containerPort combination or a\n\t\t\t\tport value. However, you can't specify both.

" } }, "containerPort": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The port value, already specified in the task definition, to be used for your service\n\t\t\tdiscovery service. If the task definition your service task specifies uses the\n\t\t\t\tbridge or host network mode, you must specify a\n\t\t\t\tcontainerName and containerPort combination from the task\n\t\t\tdefinition. If the task definition your service task specifies uses the\n\t\t\t\tawsvpc network mode and a type SRV DNS record is used, you must specify\n\t\t\teither a containerName and containerPort combination or a\n\t\t\t\tport value, but not both.

" + "smithy.api#documentation": "

The port value to be used for your service discovery service. It's already specified\n\t\t\tin the task definition. If the task definition your service task specifies uses the\n\t\t\t\tbridge or host network mode, you must specify a\n\t\t\t\tcontainerName and containerPort combination from the task\n\t\t\tdefinition. If the task definition your service task specifies uses the\n\t\t\t\tawsvpc network mode and a type SRV DNS record is used, you must specify\n\t\t\teither a containerName and containerPort combination or a\n\t\t\t\tport value. However, you can't specify both.

" } } }, "traits": { - "smithy.api#documentation": "

Details of the service registry.

" + "smithy.api#documentation": "

The details for the service registry.

" } }, "com.amazonaws.ecs#Services": { @@ -7037,18 +7139,18 @@ "streamUrl": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

A URL back to managed agent on the container that the SSM Session Manager client uses\n\t\t\tto send commands and receive output from the container.

" + "smithy.api#documentation": "

A URL\n\t\t\tback\n\t\t\tto managed agent on the container that the SSM Session Manager client\n\t\t\tuses to send commands and receive output from the container.

" } }, "tokenValue": { "target": "com.amazonaws.ecs#SensitiveString", "traits": { - "smithy.api#documentation": "

An encrypted token value containing session and caller information. Used to\n\t\t\tauthenticate the connection to the container.

" + "smithy.api#documentation": "

An encrypted token value containing session and caller information. It's used to\n\t\t\tauthenticate the connection to the container.

" } } }, "traits": { - "smithy.api#documentation": "

The details of the execute command session.

" + "smithy.api#documentation": "

The details for the execute command session.

" } }, "com.amazonaws.ecs#Setting": { @@ -7063,13 +7165,13 @@ "value": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

Whether the account setting is enabled or disabled for the specified resource.

" + "smithy.api#documentation": "

Determines whether the account setting is enabled or disabled for the specified\n\t\t\tresource.

" } }, "principalArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The ARN of the principal, which can be an IAM user, IAM role, or the root user. If\n\t\t\tthis field is omitted, the authenticated user is assumed.

" + "smithy.api#documentation": "

The ARN of the principal. It can be an IAM user, IAM role, or the root user. If this\n\t\t\tfield is omitted, the authenticated user is assumed.

" } } }, @@ -7172,13 +7274,13 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster on which to start your task.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster where to start your task.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" } }, "containerInstances": { "target": "com.amazonaws.ecs#StringList", "traits": { - "smithy.api#documentation": "

The container instance IDs or full ARN entries for the container instances on which\n\t\t\tyou would like to place your task. You can specify up to 10 container instances.

", + "smithy.api#documentation": "

The container instance IDs or full ARN entries for the container instances where you\n\t\t\twould like to place your task. You can specify up to 10 container instances.

", "smithy.api#required": {} } }, @@ -7209,13 +7311,13 @@ "overrides": { "target": "com.amazonaws.ecs#TaskOverride", "traits": { - "smithy.api#documentation": "

A list of container overrides in JSON format that specify the name of a container in\n\t\t\tthe specified task definition and the overrides it should receive. You can override the\n\t\t\tdefault command for a container (that is specified in the task definition or Docker\n\t\t\timage) with a command override. You can also override existing environment\n\t\t\tvariables (that are specified in the task definition or Docker image) on a container or\n\t\t\tadd new environment variables to it with an environment override.

\n\t\t \n\t\t\t

A total of 8192 characters are allowed for overrides. This limit includes the JSON\n\t\t\t\tformatting characters of the override structure.

\n\t\t
" + "smithy.api#documentation": "

A list of container overrides in JSON format that specify the name of a container in\n\t\t\tthe specified task definition and the overrides it receives. You can override the\n\t\t\tdefault command for a container (that's specified in the task definition or Docker\n\t\t\timage) with a command override. You can also override existing environment\n\t\t\tvariables (that are specified in the task definition or Docker image) on a container or\n\t\t\tadd new environment variables to it with an environment override.

\n\t\t \n\t\t\t

A total of 8192 characters are allowed for overrides. This limit includes the JSON\n\t\t\t\tformatting characters of the override structure.

\n\t\t
" } }, "propagateTags": { "target": "com.amazonaws.ecs#PropagateTags", "traits": { - "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition or the service to the\n\t\t\ttask. If no value is specified, the tags are not propagated.

" + "smithy.api#documentation": "

Specifies whether to propagate the tags from the task definition or the service to the\n\t\t\ttask. If no value is specified, the tags aren't propagated.

" } }, "referenceId": { @@ -7227,7 +7329,7 @@ "startedBy": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

An optional tag specified when a task is started. For example, if you automatically\n\t\t\ttrigger a task to run a batch process job, you could apply a unique identifier for that\n\t\t\tjob to your task with the startedBy parameter. You can then identify which\n\t\t\ttasks belong to that job by filtering the results of a ListTasks call\n\t\t\twith the startedBy value. Up to 36 letters (uppercase and lowercase),\n\t\t\tnumbers, hyphens, and underscores are allowed.

\n\t\t

If a task is started by an Amazon ECS service, then the startedBy parameter\n\t\t\tcontains the deployment ID of the service that starts it.

" + "smithy.api#documentation": "

An optional tag specified when a task is started. For example, if you automatically\n\t\t\ttrigger a task to run a batch process job, you could apply a unique identifier for that\n\t\t\tjob to your task with the startedBy parameter. You can then identify which\n\t\t\ttasks belong to that job by filtering the results of a ListTasks call\n\t\t\twith the startedBy value. Up to 36 letters (uppercase and lowercase),\n\t\t\tnumbers, hyphens (-), and underscores (_) are allowed.

\n\t\t

If a task is started by an Amazon ECS service, the startedBy parameter\n\t\t\tcontains the deployment ID of the service that starts it.

" } }, "tags": { @@ -7239,7 +7341,7 @@ "taskDefinition": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to start. If a revision is not specified,\n\t\t\tthe latest ACTIVE revision is used.

", + "smithy.api#documentation": "

The family and revision (family:revision) or\n\t\t\tfull ARN of the task definition to start. If a revision isn't specified,\n\t\t\tthe latest ACTIVE revision is used.

", "smithy.api#required": {} } } @@ -7313,7 +7415,7 @@ "reason": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

An optional message specified when a task is stopped. For example, if you are using a\n\t\t\tcustom scheduler, you can use this parameter to specify the reason for stopping the task\n\t\t\there, and the message appears in subsequent DescribeTasks API\n\t\t\toperations on this task. Up to 255 characters are allowed in this message.

" + "smithy.api#documentation": "

An optional message specified when a task is stopped. For example, if you're using a\n\t\t\tcustom scheduler, you can use this parameter to specify the reason for stopping the task\n\t\t\there, and the message appears in subsequent DescribeTasks API\n\t\t\toperations on this task. Up to 255 characters are allowed in this message.

" } } } @@ -7370,7 +7472,7 @@ } ], "traits": { - "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n

Sent to\n\t\t\tacknowledge that an attachment changed states.

" + "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n\t\t

Sent to acknowledge that an attachment changed states.

" } }, "com.amazonaws.ecs#SubmitAttachmentStateChangesRequest": { @@ -7422,7 +7524,7 @@ } ], "traits": { - "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n

Sent to\n\t\t\tacknowledge that a container changed states.

" + "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n\t\t

Sent to acknowledge that a container changed states.

" } }, "com.amazonaws.ecs#SubmitContainerStateChangeRequest": { @@ -7461,7 +7563,7 @@ "exitCode": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The exit code returned for the state change request.

" + "smithy.api#documentation": "

The exit code that's returned for the state change request.

" } }, "reason": { @@ -7512,7 +7614,7 @@ } ], "traits": { - "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n

Sent to acknowledge\n\t\t\tthat a task changed states.

" + "smithy.api#documentation": "\n

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

\n
\n\t\t

Sent to acknowledge that a task changed states.

" } }, "com.amazonaws.ecs#SubmitTaskStateChangeRequest": { @@ -7545,7 +7647,7 @@ "containers": { "target": "com.amazonaws.ecs#ContainerStateChanges", "traits": { - "smithy.api#documentation": "

Any containers associated with the state change request.

" + "smithy.api#documentation": "

Any containers that's associated with the state change request.

" } }, "attachments": { @@ -7557,25 +7659,25 @@ "managedAgents": { "target": "com.amazonaws.ecs#ManagedAgentStateChanges", "traits": { - "smithy.api#documentation": "

The details for the managed agent associated with the task.

" + "smithy.api#documentation": "

The details for the managed agent that's associated with the task.

" } }, "pullStartedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the container image pull began.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the container image pull started.

" } }, "pullStoppedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the container image pull completed.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the container image pull completed.

" } }, "executionStoppedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task execution stopped.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task execution stopped.

" } } } @@ -7597,18 +7699,18 @@ "namespace": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The namespaced kernel parameter for which to set a value.

" + "smithy.api#documentation": "

The namespaced kernel parameter to set a value for.

" } }, "value": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The value for the namespaced kernel parameter specified in\n\t\t\tnamespace.

" + "smithy.api#documentation": "

The value for the namespaced kernel parameter that's specified in\n\t\t\t\tnamespace.

" } } }, "traits": { - "smithy.api#documentation": "

A list of namespaced kernel parameters to set in the container. This parameter maps to\n\t\t\t\tSysctls in the Create a container section of the\n\t\t\tDocker Remote API and the --sysctl option to docker run.

\n\t\t

It is not recommended that you specify network-related systemControls\n\t\t\tparameters for multiple containers in a single task that also uses either the\n\t\t\t\tawsvpc or host network mode for the following\n\t\t\treasons:

\n\t\t " + "smithy.api#documentation": "

A list of namespaced kernel parameters to set in the container. This parameter maps to\n\t\t\t\tSysctls in the Create a container section of the\n\t\t\tDocker Remote API and the --sysctl option to docker run.

\n\t\t

We don't recommend that you specify network-related systemControls\n\t\t\tparameters for multiple containers in a single task. This task also uses either the\n\t\t\t\tawsvpc or host network mode. It does it for the following\n\t\t\treasons.

\n\t\t " } }, "com.amazonaws.ecs#SystemControls": { @@ -7634,7 +7736,7 @@ } }, "traits": { - "smithy.api#documentation": "

The metadata that you apply to a resource to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to a resource to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define them.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "com.amazonaws.ecs#TagKey": { @@ -7679,7 +7781,7 @@ } ], "traits": { - "smithy.api#documentation": "

Associates the specified tags to a resource with the specified\n\t\t\t\tresourceArn. If existing tags on a resource are not specified in the\n\t\t\trequest parameters, they are not changed. When a resource is deleted, the tags\n\t\t\tassociated with that resource are deleted as well.

" + "smithy.api#documentation": "

Associates the specified tags to a resource with the specified\n\t\t\t\tresourceArn. If existing tags on a resource aren't specified in the\n\t\t\trequest parameters, they aren't changed. When a resource is deleted, the tags that are\n\t\t\tassociated with that resource are deleted as well.

" } }, "com.amazonaws.ecs#TagResourceRequest": { @@ -7688,7 +7790,7 @@ "resourceArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, the supported resources\n\t\t\tare Amazon ECS capacity providers, tasks, services, task definitions, clusters, and container\n\t\t\tinstances.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the supported resources are\n\t\t\tAmazon ECS capacity providers, tasks, services, task definitions, clusters, and container\n\t\t\tinstances.

", "smithy.api#required": {} } }, @@ -7735,7 +7837,7 @@ } }, "traits": { - "smithy.api#documentation": "

The target container is not properly configured with the execute command agent or the\n\t\t\tcontainer is no longer active or running.

", + "smithy.api#documentation": "

The target container isn't properly configured with the execute command agent or the\n\t\t\tcontainer is no longer active or running.

", "smithy.api#error": "client" } }, @@ -7747,7 +7849,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified target could not be found. You can view your available container\n\t\t\tinstances with ListContainerInstances. Amazon ECS container instances are\n\t\t\tcluster-specific and Region-specific.

", + "smithy.api#documentation": "

The specified target wasn't found. You can view your available container instances\n\t\t\twith ListContainerInstances. Amazon ECS container instances are\n\t\t\tcluster-specific and Region-specific.

", "smithy.api#error": "client" } }, @@ -7768,7 +7870,7 @@ "attachments": { "target": "com.amazonaws.ecs#Attachments", "traits": { - "smithy.api#documentation": "

The Elastic Network Adapter associated with the task if the task uses the\n\t\t\t\tawsvpc network mode.

" + "smithy.api#documentation": "

The Elastic Network Adapter that's associated with the task if the task uses the\n\t\t\t\tawsvpc network mode.

" } }, "attributes": { @@ -7780,13 +7882,13 @@ "availabilityZone": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The availability zone of the task.

" + "smithy.api#documentation": "

The Availability Zone for the task.

" } }, "capacityProviderName": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The capacity provider associated with the task.

" + "smithy.api#documentation": "

The capacity provider that's associated with the task.

" } }, "clusterArn": { @@ -7804,7 +7906,7 @@ "connectivityAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task last went into CONNECTED\n\t\t\tstatus.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task last went into CONNECTED\n\t\t\tstatus.

" } }, "containerInstanceArn": { @@ -7816,19 +7918,19 @@ "containers": { "target": "com.amazonaws.ecs#Containers", "traits": { - "smithy.api#documentation": "

The containers associated with the task.

" + "smithy.api#documentation": "

The containers that's associated with the task.

" } }, "cpu": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The number of CPU units used by the task as expressed in a task definition. It can be\n\t\t\texpressed as an integer using CPU units, for example 1024. It can also be\n\t\t\texpressed as a string using vCPUs, for example 1 vCPU or 1\n\t\t\t\tvcpu. String values are converted to an integer indicating the CPU units when\n\t\t\tthe task definition is registered.

\n\t\t

If you are using the EC2 launch type, this field is optional. Supported\n\t\t\tvalues are between 128 CPU units (0.125 vCPUs) and\n\t\t\t\t10240 CPU units (10 vCPUs).

\n\t\t

If you are using the Fargate launch type, this field is required and you\n\t\t\tmust use one of the following values, which determines your range of supported values\n\t\t\tfor the memory parameter:

\n " + "smithy.api#documentation": "

The number of CPU units used by the task as expressed in a task definition. It can be\n\t\t\texpressed as an integer using CPU units (for example, 1024). It can also be\n\t\t\texpressed as a string using vCPUs (for example, 1 vCPU or 1\n\t\t\t\tvcpu). String values are converted to an integer that indicates the CPU units\n\t\t\twhen the task definition is registered.

\n\t\t

If you use the EC2 launch type, this field is optional. Supported values\n\t\t\tare between 128 CPU units (0.125 vCPUs) and 10240\n\t\t\tCPU units (10 vCPUs).

\n\t\t

If you use the Fargate launch type, this field is required. You must use\n\t\t\tone of the following values. These values determine the range of supported values for\n\t\t\tthe memory parameter:

\n\t\t

The CPU units cannot be less than 1 vCPU when you use Windows containers on\n\t\t\tFargate.

\n\t\t " } }, "createdAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task was created (the task entered the\n\t\t\t\tPENDING state).

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task was created. More specifically, it's for\n\t\t\tthe time when the task entered the PENDING state.

" } }, "desiredStatus": { @@ -7840,49 +7942,49 @@ "enableExecuteCommand": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether or not execute command functionality is enabled for this task. If\n\t\t\t\ttrue, this enables execute command functionality on all containers in\n\t\t\tthe task.

" + "smithy.api#documentation": "

Determines whether execute command functionality is enabled for this task. If\n\t\t\t\ttrue, execute command functionality is enabled on all the containers in\n\t\t\tthe task.

" } }, "executionStoppedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task execution stopped.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task execution stopped.

" } }, "group": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of the task group associated with the task.

" + "smithy.api#documentation": "

The name of the task group that's associated with the task.

" } }, "healthStatus": { "target": "com.amazonaws.ecs#HealthStatus", "traits": { - "smithy.api#documentation": "

The health status for the task, which is determined by the health of the essential\n\t\t\tcontainers in the task. If all essential containers in the task are reporting as\n\t\t\t\tHEALTHY, then the task status also reports as HEALTHY. If\n\t\t\tany essential containers in the task are reporting as UNHEALTHY or\n\t\t\t\tUNKNOWN, then the task status also reports as UNHEALTHY or\n\t\t\t\tUNKNOWN, accordingly.

\n\t\t \n\t\t\t

The Amazon ECS container agent does not monitor or report on Docker health checks that\n\t\t\t\tare embedded in a container image (such as those specified in a parent image or from\n\t\t\t\tthe image's Dockerfile) and not specified in the container definition. Health check\n\t\t\t\tparameters that are specified in a container definition override any Docker health\n\t\t\t\tchecks that exist in the container image.

\n\t\t
" + "smithy.api#documentation": "

The health status for the task. It's determined by the health of the essential\n\t\t\tcontainers in the task. If all essential containers in the task are reporting as\n\t\t\t\tHEALTHY, the task status also reports as HEALTHY. If any\n\t\t\tessential containers in the task are reporting as UNHEALTHY or\n\t\t\t\tUNKNOWN, the task status also reports as UNHEALTHY or\n\t\t\t\tUNKNOWN.

\n\t\t \n\t\t\t

The Amazon ECS container agent doesn't monitor or report on Docker health checks that\n\t\t\t\tare embedded in a container image and not specified in the container definition. For\n\t\t\t\texample, this includes those specified in a parent image or from the image's\n\t\t\t\tDockerfile. Health check parameters that are specified in a container definition\n\t\t\t\toverride any Docker health checks that are found in the container image.

\n\t\t
" } }, "inferenceAccelerators": { "target": "com.amazonaws.ecs#InferenceAccelerators", "traits": { - "smithy.api#documentation": "

The Elastic Inference accelerator associated with the task.

" + "smithy.api#documentation": "

The Elastic Inference accelerator that's associated with the task.

" } }, "lastStatus": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The last known status of the task. For more information, see Task\n\t\t\t\tLifecycle.

" + "smithy.api#documentation": "

The last known status for the task. For more information, see Task\n\t\t\t\tLifecycle.

" } }, "launchType": { "target": "com.amazonaws.ecs#LaunchType", "traits": { - "smithy.api#documentation": "

The infrastructure on which your task is running. For more information, see Amazon ECS\n\t\t\t\tlaunch types in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The infrastructure where your task runs on. For more information, see Amazon ECS\n\t\t\t\tlaunch types in the Amazon Elastic Container Service Developer Guide.

" } }, "memory": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The amount of memory (in MiB) used by the task as expressed in a task definition. It\n\t\t\tcan be expressed as an integer using MiB, for example 1024. It can also be\n\t\t\texpressed as a string using GB, for example 1GB or 1 GB.\n\t\t\tString values are converted to an integer indicating the MiB when the task definition is\n\t\t\tregistered.

\n\t\t

If you are using the EC2 launch type, this field is optional.

\n\t\t

If you are using the Fargate launch type, this field is required and you\n\t\t\tmust use one of the following values, which determines your range of supported values\n\t\t\tfor the cpu parameter:

\n " + "smithy.api#documentation": "

The amount of memory (in MiB) that the task uses as expressed in a task definition. It\n\t\t\tcan be expressed as an integer using MiB (for example, 1024). If it's\n\t\t\texpressed as a string using GB (for example, 1GB or 1 GB),\n\t\t\tit's converted to an integer indicating the MiB when the task definition is\n\t\t\tregistered.

\n\t\t

If you use the EC2 launch type, this field is optional.

\n\t\t

If you use the Fargate launch type, this field is required. You must use\n\t\t\tone of the following values. The value that you choose determines the range of supported\n\t\t\tvalues for the cpu parameter.

\n\t\t " } }, "overrides": { @@ -7894,49 +7996,49 @@ "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version on which your task is running. A platform version is only\n\t\t\tspecified for tasks using the Fargate launch type. If one is not\n\t\t\tspecified, the LATEST platform version is used by default. For more\n\t\t\tinformation, see Fargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version where your task runs on. A platform version is only specified for\n\t\t\ttasks that use the Fargate launch type. If you didn't specify one, the\n\t\t\t\tLATEST platform version is used. For more information, see Fargate Platform Versions in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "platformFamily": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The operating system that your tasks are running on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same platformFamily value as the service, for example, LINUX..

" + "smithy.api#documentation": "

The operating system that your tasks are running on. A platform family is specified\n\t\t\tonly for tasks that use the Fargate launch type.

\n\t\t

All tasks that run as part of this service must use the same\n\t\t\t\tplatformFamily value as the service (for example,\n\t\t\tLINUX.).

" } }, "pullStartedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the container image pull began.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the container image pull began.

" } }, "pullStoppedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the container image pull completed.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the container image pull completed.

" } }, "startedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task started (the task transitioned from the\n\t\t\t\tPENDING state to the RUNNING state).

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task started. More specifically, it's for the\n\t\t\ttime when the task transitioned from the PENDING state to the\n\t\t\t\tRUNNING state.

" } }, "startedBy": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The tag specified when a task is started. If the task is started by an Amazon ECS service,\n\t\t\tthen the startedBy parameter contains the deployment ID of the service that\n\t\t\tstarts it.

" + "smithy.api#documentation": "

The tag specified when a task is started. If an Amazon ECS service started the task, the\n\t\t\t\tstartedBy parameter contains the deployment ID of that service.

" } }, "stopCode": { "target": "com.amazonaws.ecs#TaskStopCode", "traits": { - "smithy.api#documentation": "

The stop code indicating why a task was stopped. The stoppedReason may\n\t\t\tcontain additional details.

" + "smithy.api#documentation": "

The stop code indicating why a task was stopped. The stoppedReason might\n\t\t\tcontain additional details.

" } }, "stoppedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task was stopped (the task transitioned from the\n\t\t\t\tRUNNING state to the STOPPED state).

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task was stopped. More specifically, it's for\n\t\t\tthe time when the task transitioned from the RUNNING state to the\n\t\t\t\tSTOPPED state.

" } }, "stoppedReason": { @@ -7948,13 +8050,13 @@ "stoppingAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task stops (transitions from the RUNNING\n\t\t\tstate to STOPPED).

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task stops. More specifically, it's for the\n\t\t\ttime when the task transitions from the RUNNING state to\n\t\t\t\tSTOPPED.

" } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the task to help you categorize and organize them. Each\n\t\t\ttag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the task to help you categorize and organize the task.\n\t\t\tEach tag consists of a key and an optional value. You define both the key and\n\t\t\tvalue.

\n\t\t

The following basic restrictions apply to tags:

\n " } }, "taskArn": { @@ -7972,7 +8074,7 @@ "version": { "target": "com.amazonaws.ecs#Long", "traits": { - "smithy.api#documentation": "

The version counter for the task. Every time a task experiences a change that triggers\n\t\t\ta CloudWatch event, the version counter is incremented. If you are replicating your Amazon ECS task\n\t\t\tstate with CloudWatch Events, you can compare the version of a task reported by the Amazon ECS API\n\t\t\tactions with the version reported in CloudWatch Events for the task (inside the\n\t\t\t\tdetail object) to verify that the version in your event stream is\n\t\t\tcurrent.

" + "smithy.api#documentation": "

The version counter for the task. Every time a task experiences a change that starts a\n\t\t\tCloudWatch event, the version counter is incremented. If you replicate your Amazon ECS task state\n\t\t\twith CloudWatch Events, you can compare the version of a task reported by the Amazon ECS API\n\t\t\tactions with the version reported in CloudWatch Events for the task (inside the\n\t\t\t\tdetail object) to verify that the version in your event stream is\n\t\t\tcurrent.

" } }, "ephemeralStorage": { @@ -8004,13 +8106,13 @@ "family": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of a family that this task definition is registered to. Up to 255 letters\n\t\t\t(uppercase and lowercase), numbers, hyphens, and underscores are allowed.

\n\t\t

A family groups multiple versions of a task definition. Amazon ECS gives the first task\n\t\t\tdefinition that you registered to a family a revision number of 1. Amazon ECS gives\n\t\t\tsequential revision numbers to each task definition that you add.

" + "smithy.api#documentation": "

The name of a family that this task definition is registered to. Up to 255 characters\n\t\t\tare allowed. Letters (both uppercase and lowercase letters), numbers, hyphens (-), and\n\t\t\tunderscores (_) are allowed.

\n\t\t

A family groups multiple versions of a task definition. Amazon ECS gives the first task\n\t\t\tdefinition that you registered to a family a revision number of 1. Amazon ECS gives\n\t\t\tsequential revision numbers to each task definition that you add.

" } }, "taskRoleArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the Identity and Access Management role that grants containers in the\n\t\t\ttask permission to call Amazon Web Services APIs on your behalf. For more information, see Amazon ECS\n\t\t\t\tTask Role in the Amazon Elastic Container Service Developer Guide.

\n\t\t

IAM roles for tasks on Windows require that the -EnableTaskIAMRole option\n\t\t\tis set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some\n\t\t\tconfiguration code in order to take advantage of the feature. For more information, see\n\t\t\t\tWindows IAM roles\n\t\t\t\tfor tasks in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the Identity and Access Management role that grants containers in the\n\t\t\ttask permission to call Amazon Web Services APIs on your behalf. For more information, see Amazon ECS\n\t\t\t\tTask Role in the Amazon Elastic Container Service Developer Guide.

\n\t\t

IAM roles for tasks on Windows require that the -EnableTaskIAMRole option\n\t\t\tis set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some\n\t\t\tconfiguration code to use the feature. For more information, see Windows IAM roles\n\t\t\t\tfor tasks in the Amazon Elastic Container Service Developer Guide.

" } }, "executionRoleArn": { @@ -8028,13 +8130,13 @@ "revision": { "target": "com.amazonaws.ecs#Integer", "traits": { - "smithy.api#documentation": "

The revision of the task in a particular family. The revision is a version number of a\n\t\t\ttask definition in a family. When you register a task definition for the first time, the\n\t\t\trevision is 1. Each time that you register a new revision of a task\n\t\t\tdefinition in the same family, the revision value always increases by one, even if you\n\t\t\thave deregistered previous revisions in this family.

" + "smithy.api#documentation": "

The revision of the task in a particular family. The revision is a version number of a\n\t\t\ttask definition in a family. When you register a task definition for the first time, the\n\t\t\trevision is 1. Each time that you register a new revision of a task\n\t\t\tdefinition in the same family, the revision value always increases by one. This is even\n\t\t\tif you deregistered previous revisions in this family.

" } }, "volumes": { "target": "com.amazonaws.ecs#VolumeList", "traits": { - "smithy.api#documentation": "

The list of data volume definitions for the task. For more information, see Using data volumes in tasks in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

The host and sourcePath parameters are not supported for\n\t\t\t\ttasks run on Fargate.

\n\t\t
" + "smithy.api#documentation": "

The list of data volume definitions for the task. For more information, see Using data volumes in tasks in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

The host and sourcePath parameters aren't supported for\n\t\t\t\ttasks run on Fargate.

\n\t\t
" } }, "status": { @@ -8046,13 +8148,13 @@ "requiresAttributes": { "target": "com.amazonaws.ecs#RequiresAttributes", "traits": { - "smithy.api#documentation": "

The container instance attributes required by your task. When an Amazon EC2 instance is\n\t\t\tregistered to your cluster, the Amazon ECS container agent assigns some standard attributes\n\t\t\tto the instance. You can apply custom attributes, specified as key-value pairs using the\n\t\t\tAmazon ECS console or the PutAttributes API. These attributes are used when\n\t\t\tconsidering task placement for tasks hosted on Amazon EC2 instances. For more information,\n\t\t\tsee Attributes in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

This parameter is not supported for tasks run on Fargate.

\n\t\t
" + "smithy.api#documentation": "

The container instance attributes required by your task. When an Amazon EC2 instance is\n\t\t\tregistered to your cluster, the Amazon ECS container agent assigns some standard attributes\n\t\t\tto the instance. You can apply custom attributes. These are specified as key-value pairs\n\t\t\tusing the Amazon ECS console or the PutAttributes API. These attributes are\n\t\t\tused when determining task placement for tasks hosted on Amazon EC2 instances. For more\n\t\t\tinformation, see Attributes in the Amazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

This parameter isn't supported for tasks run on Fargate.

\n\t\t
" } }, "placementConstraints": { "target": "com.amazonaws.ecs#TaskDefinitionPlacementConstraints", "traits": { - "smithy.api#documentation": "

An array of placement constraint objects to use for tasks.

\n\t\t \n\t\t\t

This parameter is not supported for tasks run on Fargate.

\n\t\t
" + "smithy.api#documentation": "

An array of placement constraint objects to use for tasks.

\n\t\t \n\t\t\t

This parameter isn't supported for tasks run on Fargate.

\n\t\t
" } }, "compatibilities": { @@ -8064,7 +8166,7 @@ "runtimePlatform": { "target": "com.amazonaws.ecs#RuntimePlatform", "traits": { - "smithy.api#documentation": "

The operating system that your task definitions are running on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

When you specify a task in a service, this value must match the runtimePlatform value of the service.

" + "smithy.api#documentation": "

The operating system that your task definitions are running on. A platform family is\n\t\t\tspecified only for tasks using the Fargate launch type.

\n\t\t

When you specify a task in a service, this value must match the\n\t\t\t\truntimePlatform value of the service.

" } }, "requiresCompatibilities": { @@ -8076,19 +8178,19 @@ "cpu": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The number of cpu units used by the task. If you are using the EC2 launch\n\t\t\ttype, this field is optional and any value can be used. If you are using the Fargate\n\t\t\tlaunch type, this field is required and you must use one of the following values, which\n\t\t\tdetermines your range of valid values for the memory parameter:

\n\t\t " + "smithy.api#documentation": "

The number of cpu units used by the task. If you use the EC2 launch type,\n\t\t\tthis field is optional. Any value can be used. If you use the Fargate launch type, this\n\t\t\tfield is required. You must use one of the following values. The value that you choose\n\t\t\tdetermines your range of valid values for the memory parameter.

\n\t\t

The CPU units cannot be less than 1 vCPU when you use Windows containers on\n\t\t\tFargate.

\n\t\t " } }, "memory": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The amount (in MiB) of memory used by the task.

\n\t\t

If your tasks will be run on Amazon EC2 instances, you must specify either a task-level\n\t\t\tmemory value or a container-level memory value. This field is optional and any value can\n\t\t\tbe used. If a task-level memory value is specified then the container-level memory value\n\t\t\tis optional. For more information regarding container-level memory and memory\n\t\t\treservation, see ContainerDefinition.

\n\t\t

If your tasks will be run on Fargate, this field is required and you must use one of\n\t\t\tthe following values, which determines your range of valid values for the\n\t\t\t\tcpu parameter:

\n " + "smithy.api#documentation": "

The amount (in MiB) of memory used by the task.

\n\t\t

If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory\n\t\t\tvalue or a container-level memory value. This field is optional and any value can be\n\t\t\tused. If a task-level memory value is specified, the container-level memory value is\n\t\t\toptional. For more information regarding container-level memory and memory reservation,\n\t\t\tsee ContainerDefinition.

\n\t\t

If your tasks runs on Fargate, this field is required. You must use one of the\n\t\t\tfollowing values. The value you choose determines your range of valid values for the\n\t\t\t\tcpu parameter.

\n\t\t " } }, "inferenceAccelerators": { "target": "com.amazonaws.ecs#InferenceAccelerators", "traits": { - "smithy.api#documentation": "

The Elastic Inference accelerator associated with the task.

" + "smithy.api#documentation": "

The Elastic Inference accelerator that's associated with the task.

" } }, "pidMode": { @@ -8106,19 +8208,19 @@ "proxyConfiguration": { "target": "com.amazonaws.ecs#ProxyConfiguration", "traits": { - "smithy.api#documentation": "

The configuration details for the App Mesh proxy.

\n\t\t

Your Amazon ECS container instances require at least version 1.26.0 of the container agent\n\t\t\tand at least version 1.26.0-1 of the ecs-init package to enable a proxy\n\t\t\tconfiguration. If your container instances are launched from the Amazon ECS-optimized AMI\n\t\t\tversion 20190301 or later, then they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The configuration details for the App Mesh proxy.

\n\t\t

Your Amazon ECS container instances require at least version 1.26.0 of the container agent\n\t\t\tand at least version 1.26.0-1 of the ecs-init package to enable a proxy\n\t\t\tconfiguration. If your container instances are launched from the Amazon ECS optimized AMI\n\t\t\tversion 20190301 or later, they contain the required versions of the\n\t\t\tcontainer agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide.

" } }, "registeredAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task definition was registered.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task definition was registered.

" } }, "deregisteredAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task definition was deregistered.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task definition was deregistered.

" } }, "registeredBy": { @@ -8191,7 +8293,7 @@ } }, "traits": { - "smithy.api#documentation": "

An object representing a constraint on task placement in the task definition. For more\n\t\t\tinformation, see Task placement constraints in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

Task placement constraints are not supported for tasks run on Fargate.

\n\t\t
" + "smithy.api#documentation": "

An object representing a constraint on task placement in the task definition. For more\n\t\t\tinformation, see Task placement constraints in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t \n\t\t\t

Task placement constraints aren't supported for tasks run on Fargate.

\n\t\t
" } }, "com.amazonaws.ecs#TaskDefinitionPlacementConstraintType": { @@ -8249,7 +8351,7 @@ "containerOverrides": { "target": "com.amazonaws.ecs#ContainerOverrides", "traits": { - "smithy.api#documentation": "

One or more container overrides sent to a task.

" + "smithy.api#documentation": "

One or more container overrides that are sent to a task.

" } }, "cpu": { @@ -8267,7 +8369,7 @@ "executionRoleArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the task execution IAM role override for the task. For more information,\n\t\t\tsee Amazon ECS task\n\t\t\t\texecution IAM role in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the task execution IAM role override for the task. For more\n\t\t\tinformation, see Amazon ECS task\n\t\t\t\texecution IAM role in the Amazon Elastic Container Service Developer Guide.

" } }, "memory": { @@ -8279,18 +8381,18 @@ "taskRoleArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in\n\t\t\tthis task are granted the permissions that are specified in this role. For more\n\t\t\tinformation, see IAM Role for Tasks\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers\n\t\t\tin this task are granted the permissions that are specified in this role. For more\n\t\t\tinformation, see IAM Role for Tasks\n\t\t\tin the Amazon Elastic Container Service Developer Guide.

" } }, "ephemeralStorage": { "target": "com.amazonaws.ecs#EphemeralStorage", "traits": { - "smithy.api#documentation": "

The ephemeral storage setting override for the task.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate using the following platform versions:

\n\t\t\t \n\t\t
" + "smithy.api#documentation": "

The ephemeral storage setting override for the task.

\n\t\t \n\t\t\t

This parameter is only supported for tasks hosted on Fargate that\n\t\t\t\tuse the following platform versions:

\n\t\t\t \n\t\t
" } } }, "traits": { - "smithy.api#documentation": "

The overrides associated with a task.

" + "smithy.api#documentation": "

The overrides that are associated with a task.

" } }, "com.amazonaws.ecs#TaskSet": { @@ -8323,25 +8425,25 @@ "startedBy": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The tag specified when a task set is started. If the task set is created by an CodeDeploy\n\t\t\tdeployment, the startedBy parameter is CODE_DEPLOY. For a task\n\t\t\tset created for an external deployment, the startedBy field isn't used.

" + "smithy.api#documentation": "

The tag specified when a task set is started. If an CodeDeploy deployment created the task\n\t\t\tset, the startedBy parameter is CODE_DEPLOY. If an external\n\t\t\tdeployment created the task set, the startedBy field isn't used.

" } }, "externalId": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The external ID associated with the task set.

\n\t\t

If a task set is created by an CodeDeploy deployment, the externalId parameter\n\t\t\tcontains the CodeDeploy deployment ID.

\n\t\t

If a task set is created for an external deployment and is associated with a service\n\t\t\tdiscovery registry, the externalId parameter contains the\n\t\t\t\tECS_TASK_SET_EXTERNAL_ID Cloud Map attribute.

" + "smithy.api#documentation": "

The external ID associated with the task set.

\n\t\t

If an CodeDeploy deployment created a task set, the externalId parameter\n\t\t\tcontains the CodeDeploy deployment ID.

\n\t\t

If a task set is created for an external deployment and is associated with a service\n\t\t\tdiscovery registry, the externalId parameter contains the\n\t\t\t\tECS_TASK_SET_EXTERNAL_ID Cloud Map attribute.

" } }, "status": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The status of the task set. The following describes each state:

\n\t\t
\n
PRIMARY
\n
\n\t\t\t\t\t

The task set is serving production traffic.

\n\t\t\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

The task set is not serving production traffic.

\n\t\t\t\t
\n
DRAINING
\n
\n\t\t\t\t\t

The tasks in the task set are being stopped and their corresponding\n\t\t\t\t\t\ttargets are being deregistered from their target group.

\n\t\t\t\t
\n
" + "smithy.api#documentation": "

The status of the task set. The following describes each state.

\n\t\t
\n
PRIMARY
\n
\n\t\t\t\t\t

The task set is serving production traffic.

\n\t\t\t\t
\n
ACTIVE
\n
\n\t\t\t\t\t

The task set isn't serving production traffic.

\n\t\t\t\t
\n
DRAINING
\n
\n\t\t\t\t\t

The tasks in the task set are being stopped, and their corresponding\n\t\t\t\t\t\ttargets are being deregistered from their target group.

\n\t\t\t\t
\n
" } }, "taskDefinition": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The task definition the task set is using.

" + "smithy.api#documentation": "

The task definition that the task set is using.

" } }, "computedDesiredCount": { @@ -8353,7 +8455,7 @@ "pendingCount": { "target": "com.amazonaws.ecs#Integer", "traits": { - "smithy.api#documentation": "

The number of tasks in the task set that are in the PENDING status during\n\t\t\ta deployment. A task in the PENDING state is preparing to enter the\n\t\t\t\tRUNNING state. A task set enters the PENDING status when\n\t\t\tit launches for the first time or when it is restarted after being in the\n\t\t\t\tSTOPPED state.

" + "smithy.api#documentation": "

The number of tasks in the task set that are in the PENDING status during\n\t\t\ta deployment. A task in the PENDING state is preparing to enter the\n\t\t\t\tRUNNING state. A task set enters the PENDING status when\n\t\t\tit launches for the first time or when it's restarted after being in the\n\t\t\t\tSTOPPED state.

" } }, "runningCount": { @@ -8365,13 +8467,13 @@ "createdAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task set was created.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task set was created.

" } }, "updatedAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task set was last updated.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task set was last updated.

" } }, "launchType": { @@ -8383,19 +8485,19 @@ "capacityProviderStrategy": { "target": "com.amazonaws.ecs#CapacityProviderStrategy", "traits": { - "smithy.api#documentation": "

The capacity provider strategy associated with the task set.

" + "smithy.api#documentation": "

The capacity provider strategy that are associated with the task set.

" } }, "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Fargate platform version on which the tasks in the task set are running. A\n\t\t\tplatform version is only specified for tasks run on Fargate. For more information, see\n\t\t\t\tFargate platform\n\t\t\t\tversions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The Fargate platform version where the tasks in the task set are running. A platform\n\t\t\tversion is only specified for tasks run on Fargate. For more information, see Fargate platform versions in the\n\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "platformFamily": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The operating system that your tasks in the set are running on. A platform family is specified only for tasks using the Fargate launch type.

\n\t\t

All tasks in the set must have the same value.

" + "smithy.api#documentation": "

The operating system that your tasks in the set are running on. A platform family is\n\t\t\tspecified only for tasks that use the Fargate launch type.

\n\t\t

All tasks in the set must have the same value.

" } }, "networkConfiguration": { @@ -8407,37 +8509,37 @@ "loadBalancers": { "target": "com.amazonaws.ecs#LoadBalancers", "traits": { - "smithy.api#documentation": "

Details on a load balancer that is used with a task set.

" + "smithy.api#documentation": "

Details on a load balancer that are used with a task set.

" } }, "serviceRegistries": { "target": "com.amazonaws.ecs#ServiceRegistries", "traits": { - "smithy.api#documentation": "

The details of the service discovery registries to assign to this task set. For more\n\t\t\tinformation, see Service\n\t\t\t\tdiscovery.

" + "smithy.api#documentation": "

The details for the service discovery registries to assign to this task set. For more\n\t\t\tinformation, see Service\n\t\t\t\tdiscovery.

" } }, "scale": { "target": "com.amazonaws.ecs#Scale", "traits": { - "smithy.api#documentation": "

A floating-point percentage of the desired number of tasks to place and keep running\n\t\t\tin the task set.

" + "smithy.api#documentation": "

A floating-point percentage of your desired number of tasks to place and keep running\n\t\t\tin the task set.

" } }, "stabilityStatus": { "target": "com.amazonaws.ecs#StabilityStatus", "traits": { - "smithy.api#documentation": "

The stability status, which indicates whether the task set has reached a steady state.\n\t\t\tIf the following conditions are met, the task set will be in\n\t\t\tSTEADY_STATE:

\n\t\t \n\t\t

If any of those conditions are not met, the stability status returns\n\t\t\t\tSTABILIZING.

" + "smithy.api#documentation": "

The stability status. This indicates whether the task set has reached a steady state.\n\t\t\tIf the following conditions are met, the task set sre in\n\t\t\tSTEADY_STATE:

\n\t\t \n\t\t

If any of those conditions aren't met, the stability status returns\n\t\t\t\tSTABILIZING.

" } }, "stabilityStatusAt": { "target": "com.amazonaws.ecs#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix timestamp for when the task set stability status was retrieved.

" + "smithy.api#documentation": "

The Unix timestamp for the time when the task set stability status was\n\t\t\tretrieved.

" } }, "tags": { "target": "com.amazonaws.ecs#Tags", "traits": { - "smithy.api#documentation": "

The metadata that you apply to the task set to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value, both of which you define.

\n\t\t

The following basic restrictions apply to tags:

\n " + "smithy.api#documentation": "

The metadata that you apply to the task set to help you categorize and organize them.\n\t\t\tEach tag consists of a key and an optional value. You define both.

\n\t\t

The following basic restrictions apply to tags:

\n " } } }, @@ -8470,7 +8572,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified task set could not be found. You can view your available task sets with\n\t\t\t\tDescribeTaskSets. Task sets are specific to each cluster, service\n\t\t\tand Region.

", + "smithy.api#documentation": "

The specified task set wasn't found. You can view your available task sets with DescribeTaskSets. Task sets are specific to each cluster, service and\n\t\t\tRegion.

", "smithy.api#error": "client" } }, @@ -8667,7 +8769,7 @@ } }, "traits": { - "smithy.api#documentation": "

The specified task is not supported in this Region.

", + "smithy.api#documentation": "

The specified task isn't supported in this Region.

", "smithy.api#error": "client" } }, @@ -8706,7 +8808,7 @@ "resourceArn": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource from which to delete tags. Currently, the supported\n\t\t\tresources are Amazon ECS capacity providers, tasks, services, task definitions, clusters, and\n\t\t\tcontainer instances.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource to delete tags from. Currently, the supported resources\n\t\t\tare Amazon ECS capacity providers, tasks, services, task definitions, clusters, and container\n\t\t\tinstances.

", "smithy.api#required": {} } }, @@ -8759,7 +8861,7 @@ "autoScalingGroupProvider": { "target": "com.amazonaws.ecs#AutoScalingGroupProviderUpdate", "traits": { - "smithy.api#documentation": "

An object representing the parameters to update for the Auto Scaling group capacity\n\t\t\tprovider.

", + "smithy.api#documentation": "

An object that represent the parameters to update for the Auto Scaling group capacity\n\t\t\tprovider.

", "smithy.api#required": {} } } @@ -8876,7 +8978,7 @@ "settings": { "target": "com.amazonaws.ecs#ClusterSettings", "traits": { - "smithy.api#documentation": "

The setting to use by default for a cluster. This parameter is used to enable CloudWatch\n\t\t\tContainer Insights for a cluster. If this value is specified, it will override the\n\t\t\t\tcontainerInsights value set with PutAccountSetting or\n\t\t\t\tPutAccountSettingDefault.

", + "smithy.api#documentation": "

The setting to use by default for a cluster. This parameter is used to enable CloudWatch\n\t\t\tContainer Insights for a cluster. If this value is specified, it overrides the\n\t\t\t\tcontainerInsights value set with PutAccountSetting or\n\t\t\t\tPutAccountSettingDefault.

", "smithy.api#required": {} } } @@ -8925,7 +9027,7 @@ } ], "traits": { - "smithy.api#documentation": "

Updates the Amazon ECS container agent on a specified container instance. Updating the\n\t\t\tAmazon ECS container agent does not interrupt running tasks or services on the container\n\t\t\tinstance. The process for updating the agent differs depending on whether your container\n\t\t\tinstance was launched with the Amazon ECS-optimized AMI or another operating system.

\n\t\t \n\t\t\t

The UpdateContainerAgent API isn't supported for container instances\n\t\t\t\tusing the Amazon ECS-optimized Amazon Linux 2 (arm64) AMI. To update the container agent,\n\t\t\t\tyou can update the ecs-init package which will update the agent. For\n\t\t\t\tmore information, see Updating the\n\t\t\t\t\tAmazon ECS container agent in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

The UpdateContainerAgent API requires an Amazon ECS-optimized AMI or Amazon\n\t\t\tLinux AMI with the ecs-init service installed and running. For help\n\t\t\tupdating the Amazon ECS container agent on other operating systems, see Manually updating the Amazon ECS container agent in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

Updates the Amazon ECS container agent on a specified container instance. Updating the\n\t\t\tAmazon ECS container agent doesn't interrupt running tasks or services on the container\n\t\t\tinstance. The process for updating the agent differs depending on whether your container\n\t\t\tinstance was launched with the Amazon ECS-optimized AMI or another operating system.

\n\t\t \n\t\t\t

The UpdateContainerAgent API isn't supported for container instances\n\t\t\t\tusing the Amazon ECS-optimized Amazon Linux 2 (arm64) AMI. To update the container agent,\n\t\t\t\tyou can update the ecs-init package. This updates the agent. For more\n\t\t\t\tinformation, see Updating the\n\t\t\t\t\tAmazon ECS container agent in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

\n\t\t
\n\t\t

The UpdateContainerAgent API requires an Amazon ECS-optimized AMI or Amazon\n\t\t\tLinux AMI with the ecs-init service installed and running. For help\n\t\t\tupdating the Amazon ECS container agent on other operating systems, see Manually updating the Amazon ECS container agent in the\n\t\t\t\tAmazon Elastic Container Service Developer Guide.

" } }, "com.amazonaws.ecs#UpdateContainerAgentRequest": { @@ -8940,7 +9042,7 @@ "containerInstance": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The container instance ID or full ARN entries for the container instance on which\n\t\t\tyou would like to update the Amazon ECS container agent.

", + "smithy.api#documentation": "

The container instance ID or full ARN entries for the container instance where you\n\t\t\twould like to update the Amazon ECS container agent.

", "smithy.api#required": {} } } @@ -8952,7 +9054,7 @@ "containerInstance": { "target": "com.amazonaws.ecs#ContainerInstance", "traits": { - "smithy.api#documentation": "

The container instance for which the container agent was updated.

" + "smithy.api#documentation": "

The container instance that the container agent was updated for.

" } } } @@ -8980,7 +9082,7 @@ } ], "traits": { - "smithy.api#documentation": "

Modifies the status of an Amazon ECS container instance.

\n\t\t

Once a container instance has reached an ACTIVE state, you can change the\n\t\t\tstatus of a container instance to DRAINING to manually remove an instance\n\t\t\tfrom a cluster, for example to perform system updates, update the Docker daemon, or\n\t\t\tscale down the cluster size.

\n\t\t \n\t\t\t

A container instance cannot be changed to DRAINING until it has\n\t\t\t\treached an ACTIVE status. If the instance is in any other status, an\n\t\t\t\terror will be received.

\n\t\t
\n\t\t

When you set a container instance to DRAINING, Amazon ECS prevents new tasks\n\t\t\tfrom being scheduled for placement on the container instance and replacement service\n\t\t\ttasks are started on other container instances in the cluster if the resources are\n\t\t\tavailable. Service tasks on the container instance that are in the PENDING\n\t\t\tstate are stopped immediately.

\n\t\t

Service tasks on the container instance that are in the RUNNING state are\n\t\t\tstopped and replaced according to the service's deployment configuration parameters,\n\t\t\t\tminimumHealthyPercent and maximumPercent. You can change\n\t\t\tthe deployment configuration of your service using UpdateService.

\n\t\t \n\t\t

Any PENDING or RUNNING tasks that do not belong to a service\n\t\t\tare not affected. You must wait for them to finish or stop them manually.

\n\t\t

A container instance has completed draining when it has no more RUNNING\n\t\t\ttasks. You can verify this using ListTasks.

\n\t\t

When a container instance has been drained, you can set a container instance to\n\t\t\t\tACTIVE status and once it has reached that status the Amazon ECS scheduler\n\t\t\tcan begin scheduling tasks on the instance again.

" + "smithy.api#documentation": "

Modifies the status of an Amazon ECS container instance.

\n\t\t

Once a container instance has reached an ACTIVE state, you can change the\n\t\t\tstatus of a container instance to DRAINING to manually remove an instance\n\t\t\tfrom a cluster, for example to perform system updates, update the Docker daemon, or\n\t\t\tscale down the cluster size.

\n\t\t \n\t\t\t

A container instance can't be changed to DRAINING until it has\n\t\t\t\treached an ACTIVE status. If the instance is in any other status, an\n\t\t\t\terror will be received.

\n\t\t
\n\t\t

When you set a container instance to DRAINING, Amazon ECS prevents new tasks\n\t\t\tfrom being scheduled for placement on the container instance and replacement service\n\t\t\ttasks are started on other container instances in the cluster if the resources are\n\t\t\tavailable. Service tasks on the container instance that are in the PENDING\n\t\t\tstate are stopped immediately.

\n\t\t

Service tasks on the container instance that are in the RUNNING state are\n\t\t\tstopped and replaced according to the service's deployment configuration parameters,\n\t\t\t\tminimumHealthyPercent and maximumPercent. You can change\n\t\t\tthe deployment configuration of your service using UpdateService.

\n\t\t \n\t\t

Any PENDING or RUNNING tasks that do not belong to a service\n\t\t\taren't affected. You must wait for them to finish or stop them manually.

\n\t\t

A container instance has completed draining when it has no more RUNNING\n\t\t\ttasks. You can verify this using ListTasks.

\n\t\t

When a container instance has been drained, you can set a container instance to\n\t\t\t\tACTIVE status and once it has reached that status the Amazon ECS scheduler\n\t\t\tcan begin scheduling tasks on the instance again.

" } }, "com.amazonaws.ecs#UpdateContainerInstancesStateRequest": { @@ -9002,7 +9104,7 @@ "status": { "target": "com.amazonaws.ecs#ContainerInstanceStatus", "traits": { - "smithy.api#documentation": "

The container instance state with which to update the container instance. The only\n\t\t\tvalid values for this action are ACTIVE and DRAINING. A\n\t\t\tcontainer instance can only be updated to DRAINING status once it has\n\t\t\treached an ACTIVE state. If a container instance is in\n\t\t\t\tREGISTERING, DEREGISTERING, or\n\t\t\t\tREGISTRATION_FAILED state you can describe the container instance but\n\t\t\twill be unable to update the container instance state.

", + "smithy.api#documentation": "

The container instance state to update the container instance with. The only valid\n\t\t\tvalues for this action are ACTIVE and DRAINING. A container\n\t\t\tinstance can only be updated to DRAINING status once it has reached an\n\t\t\t\tACTIVE state. If a container instance is in REGISTERING,\n\t\t\t\tDEREGISTERING, or REGISTRATION_FAILED state you can\n\t\t\tdescribe the container instance but can't update the container instance state.

", "smithy.api#required": {} } } @@ -9033,7 +9135,7 @@ } }, "traits": { - "smithy.api#documentation": "

There is already a current Amazon ECS container agent update in progress on the specified\n\t\t\tcontainer instance. If the container agent becomes disconnected while it is in a\n\t\t\ttransitional stage, such as PENDING or STAGING, the update\n\t\t\tprocess can get stuck in that state. However, when the agent reconnects, it resumes\n\t\t\twhere it stopped previously.

", + "smithy.api#documentation": "

There's already a current Amazon ECS container agent update in progress on the container\n\t\t\tinstance that's specified. If the container agent becomes disconnected while it's in a\n\t\t\ttransitional stage, such as PENDING or STAGING, the update\n\t\t\tprocess can get stuck in that state. However, when the agent reconnects, it resumes\n\t\t\twhere it stopped previously.

", "smithy.api#error": "client" } }, @@ -9075,7 +9177,7 @@ } ], "traits": { - "smithy.api#documentation": "\n\t\t\t

Updating the task placement strategies and constraints on an Amazon ECS service remains\n\t\t\t\tin preview and is a Beta Service as defined by and subject to the Beta Service\n\t\t\t\tParticipation Service Terms located at https://aws.amazon.com/service-terms (\"Beta Terms\"). These Beta Terms\n\t\t\t\tapply to your participation in this preview.

\n\t\t
\n\t\t

Modifies the parameters of a service.

\n\t\t

For services using the rolling update (ECS) deployment controller, the\n\t\t\tdesired count, deployment configuration, network configuration, task placement\n\t\t\tconstraints and strategies, or task definition used can be updated.

\n\t\t

For services using the blue/green (CODE_DEPLOY) deployment controller,\n\t\t\tonly the desired count, deployment configuration, task placement constraints and\n\t\t\tstrategies, and health check grace period can be updated using this API. If the network\n\t\t\tconfiguration, platform version, or task definition need to be updated, a new CodeDeploy\n\t\t\tdeployment should be created. For more information, see CreateDeployment in the CodeDeploy API Reference.

\n\t\t

For services using an external deployment controller, you can update only the desired\n\t\t\tcount, task placement constraints and strategies, and health check grace period using\n\t\t\tthis API. If the launch type, load balancer, network configuration, platform version, or\n\t\t\ttask definition need to be updated, you should create a new task set. For more\n\t\t\tinformation, see CreateTaskSet.

\n\t\t

You can add to or subtract from the number of instantiations of a task definition in a\n\t\t\tservice by specifying the cluster that the service is running in and a new\n\t\t\t\tdesiredCount parameter.

\n\t\t

If you have updated the Docker image of your application, you can create a new task\n\t\t\tdefinition with that image and deploy it to your service. The service scheduler uses the\n\t\t\tminimum healthy percent and maximum percent parameters (in the service's deployment\n\t\t\tconfiguration) to determine the deployment strategy.

\n\t\t \n\t\t\t

If your updated Docker image uses the same tag as what is in the existing task\n\t\t\t\tdefinition for your service (for example, my_image:latest), you do not\n\t\t\t\tneed to create a new revision of your task definition. You can update the service\n\t\t\t\tusing the forceNewDeployment option. The new tasks launched by the\n\t\t\t\tdeployment pull the current image/tag combination from your repository when they\n\t\t\t\tstart.

\n\t\t
\n\t\t

You can also update the deployment configuration of a service. When a deployment is\n\t\t\ttriggered by updating the task definition of a service, the service scheduler uses the\n\t\t\tdeployment configuration parameters, minimumHealthyPercent and\n\t\t\t\tmaximumPercent, to determine the deployment strategy.

\n\t\t \n\t\t

When UpdateService stops a task during a deployment, the equivalent\n\t\t\tof docker stop is issued to the containers running in the task. This\n\t\t\tresults in a SIGTERM and a 30-second timeout, after which\n\t\t\t\tSIGKILL is sent and the containers are forcibly stopped. If the\n\t\t\tcontainer handles the SIGTERM gracefully and exits within 30 seconds from\n\t\t\treceiving it, no SIGKILL is sent.

\n\t\t

When the service scheduler launches new tasks, it determines task placement in your\n\t\t\tcluster with the following logic:

\n\t\t \n\t\t

When the service scheduler stops running tasks, it attempts to maintain balance across\n\t\t\tthe Availability Zones in your cluster using the following logic:

\n\t\t " + "smithy.api#documentation": "\n\t\t\t

Updating the task placement strategies and constraints on an Amazon ECS service remains\n\t\t\t\tin preview and is a Beta Service as defined by and subject to the Beta Service\n\t\t\t\tParticipation Service Terms located at https://aws.amazon.com/service-terms (\"Beta Terms\"). These Beta Terms\n\t\t\t\tapply to your participation in this preview.

\n\t\t
\n\t\t

Modifies the parameters of a service.

\n\t\t

For services using the rolling update (ECS) deployment controller, the\n\t\t\tdesired count, deployment configuration, network configuration, task placement\n\t\t\tconstraints and strategies, or task definition used can be updated.

\n\t\t

For services using the blue/green (CODE_DEPLOY) deployment controller,\n\t\t\tonly the desired count, deployment configuration, task placement constraints and\n\t\t\tstrategies, and health check grace period can be updated using this API. If the network\n\t\t\tconfiguration, platform version, or task definition need to be updated, a new CodeDeploy\n\t\t\tdeployment is created. For more information, see CreateDeployment in the CodeDeploy API Reference.

\n\t\t

For services using an external deployment controller, you can update only the desired\n\t\t\tcount, task placement constraints and strategies, and health check grace period using\n\t\t\tthis API. If the launch type, load balancer, network configuration, platform version, or\n\t\t\ttask definition need to be updated, create a new task set. For more information, see\n\t\t\t\tCreateTaskSet.

\n\t\t

You can add to or subtract from the number of instantiations of a task definition in a\n\t\t\tservice by specifying the cluster that the service is running in and a new\n\t\t\t\tdesiredCount parameter.

\n\t\t

If you have updated the Docker image of your application, you can create a new task\n\t\t\tdefinition with that image and deploy it to your service. The service scheduler uses the\n\t\t\tminimum healthy percent and maximum percent parameters (in the service's deployment\n\t\t\tconfiguration) to determine the deployment strategy.

\n\t\t \n\t\t\t

If your updated Docker image uses the same tag as what is in the existing task\n\t\t\t\tdefinition for your service (for example, my_image:latest), you don't\n\t\t\t\tneed to create a new revision of your task definition. You can update the service\n\t\t\t\tusing the forceNewDeployment option. The new tasks launched by the\n\t\t\t\tdeployment pull the current image/tag combination from your repository when they\n\t\t\t\tstart.

\n\t\t
\n\t\t

You can also update the deployment configuration of a service. When a deployment is\n\t\t\ttriggered by updating the task definition of a service, the service scheduler uses the\n\t\t\tdeployment configuration parameters, minimumHealthyPercent and\n\t\t\t\tmaximumPercent, to determine the deployment strategy.

\n\t\t \n\t\t

When UpdateService stops a task during a deployment, the equivalent\n\t\t\tof docker stop is issued to the containers running in the task. This\n\t\t\tresults in a SIGTERM and a 30-second timeout. After this,\n\t\t\t\tSIGKILL is sent and the containers are forcibly stopped. If the\n\t\t\tcontainer handles the SIGTERM gracefully and exits within 30 seconds from\n\t\t\treceiving it, no SIGKILL is sent.

\n\t\t

When the service scheduler launches new tasks, it determines task placement in your\n\t\t\tcluster with the following logic.

\n\t\t \n\t\t

When the service scheduler stops running tasks, it attempts to maintain balance across\n\t\t\tthe Availability Zones in your cluster using the following logic:

\n\t\t " } }, "com.amazonaws.ecs#UpdateServicePrimaryTaskSet": { @@ -9162,7 +9264,7 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that your service is running on.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that your service runs on.\n\t\t\tIf you do not specify a cluster, the default cluster is assumed.

" } }, "service": { @@ -9187,7 +9289,7 @@ "capacityProviderStrategy": { "target": "com.amazonaws.ecs#CapacityProviderStrategy", "traits": { - "smithy.api#documentation": "

The capacity provider strategy to update the service to use.

\n\t\t

If the service is using the default capacity provider strategy for the cluster, the\n\t\t\tservice can be updated to use one or more capacity providers as opposed to the default\n\t\t\tcapacity provider strategy. However, when a service is using a capacity provider\n\t\t\tstrategy that is not the default capacity provider strategy, the service cannot be\n\t\t\tupdated to use the cluster's default capacity provider strategy.

\n\t\t

A capacity provider strategy consists of one or more capacity providers along with the\n\t\t\t\tbase and weight to assign to them. A capacity provider\n\t\t\tmust be associated with the cluster to be used in a capacity provider strategy. The\n\t\t\t\tPutClusterCapacityProviders API is used to associate a capacity\n\t\t\tprovider with a cluster. Only capacity providers with an ACTIVE or\n\t\t\t\tUPDATING status can be used.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must already be created. New capacity providers can be created with the CreateCapacityProvider API operation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be\n\t\t\tused.

\n\t\t

The PutClusterCapacityProviders API operation is used to update the\n\t\t\tlist of available capacity providers for a cluster after the cluster is created.

\n\t\t

" + "smithy.api#documentation": "

The capacity provider strategy to update the service to use.

\n\t\t

if the service uses the default capacity provider strategy for the cluster, the\n\t\t\tservice can be updated to use one or more capacity providers as opposed to the default\n\t\t\tcapacity provider strategy. However, when a service is using a capacity provider\n\t\t\tstrategy that's not the default capacity provider strategy, the service can't be updated\n\t\t\tto use the cluster's default capacity provider strategy.

\n\t\t

A capacity provider strategy consists of one or more capacity providers along with the\n\t\t\t\tbase and weight to assign to them. A capacity provider\n\t\t\tmust be associated with the cluster to be used in a capacity provider strategy. The\n\t\t\t\tPutClusterCapacityProviders API is used to associate a capacity\n\t\t\tprovider with a cluster. Only capacity providers with an ACTIVE or\n\t\t\t\tUPDATING status can be used.

\n\t\t

If specifying a capacity provider that uses an Auto Scaling group, the capacity\n\t\t\tprovider must already be created. New capacity providers can be created with the CreateCapacityProvider API operation.

\n\t\t

To use a Fargate capacity provider, specify either the FARGATE or\n\t\t\t\tFARGATE_SPOT capacity providers. The Fargate capacity providers are\n\t\t\tavailable to all accounts and only need to be associated with a cluster to be\n\t\t\tused.

\n\t\t

The PutClusterCapacityProviders API operation is used to update the\n\t\t\tlist of available capacity providers for a cluster after the cluster is created.

\n\t\t

" } }, "deploymentConfiguration": { @@ -9205,31 +9307,31 @@ "placementConstraints": { "target": "com.amazonaws.ecs#PlacementConstraints", "traits": { - "smithy.api#documentation": "

An array of task placement constraint objects to update the service to use. If no\n\t\t\tvalue is specified, the existing placement constraints for the service will remain\n\t\t\tunchanged. If this value is specified, it will override any existing placement\n\t\t\tconstraints defined for the service. To remove all existing placement constraints,\n\t\t\tspecify an empty array.

\n\t\t

You can specify a maximum of 10 constraints per task (this limit includes constraints\n\t\t\tin the task definition and those specified at runtime).

" + "smithy.api#documentation": "

An array of task placement constraint objects to update the service to use. If no\n\t\t\tvalue is specified, the existing placement constraints for the service will remain\n\t\t\tunchanged. If this value is specified, it will override any existing placement\n\t\t\tconstraints defined for the service. To remove all existing placement constraints,\n\t\t\tspecify an empty array.

\n\t\t

You can specify a maximum of 10 constraints for each task. This limit includes\n\t\t\tconstraints in the task definition and those specified at runtime.

" } }, "placementStrategy": { "target": "com.amazonaws.ecs#PlacementStrategies", "traits": { - "smithy.api#documentation": "

The task placement strategy objects to update the service to use. If no value is\n\t\t\tspecified, the existing placement strategy for the service will remain unchanged. If\n\t\t\tthis value is specified, it will override the existing placement strategy defined for\n\t\t\tthe service. To remove an existing placement strategy, specify an empty object.

\n\t\t

You can specify a maximum of five strategy rules per service.

" + "smithy.api#documentation": "

The task placement strategy objects to update the service to use. If no value is\n\t\t\tspecified, the existing placement strategy for the service will remain unchanged. If\n\t\t\tthis value is specified, it will override the existing placement strategy defined for\n\t\t\tthe service. To remove an existing placement strategy, specify an empty object.

\n\t\t

You can specify a maximum of five strategy rules for each service.

" } }, "platformVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The platform version on which your tasks in the service are running. A platform\n\t\t\tversion is only specified for tasks using the Fargate launch type. If a\n\t\t\tplatform version is not specified, the LATEST platform version is used by\n\t\t\tdefault. For more information, see Fargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" + "smithy.api#documentation": "

The platform version that your tasks in the service run on. A platform version is only\n\t\t\tspecified for tasks using the Fargate launch type. If a platform version\n\t\t\tis not specified, the LATEST platform version is used. For more\n\t\t\tinformation, see Fargate Platform\n\t\t\t\tVersions in the Amazon Elastic Container Service Developer Guide.

" } }, "forceNewDeployment": { "target": "com.amazonaws.ecs#Boolean", "traits": { - "smithy.api#documentation": "

Whether to force a new deployment of the service. Deployments are not forced by\n\t\t\tdefault. You can use this option to trigger a new deployment with no service definition\n\t\t\tchanges. For example, you can update a service's tasks to use a newer Docker image with\n\t\t\tthe same image/tag combination (my_image:latest) or to roll Fargate tasks\n\t\t\tonto a newer platform version.

" + "smithy.api#documentation": "

Determines whether to force a new deployment of the service. By default, deployments\n\t\t\taren't forced. You can use this option to start a new deployment with no service\n\t\t\tdefinition changes. For example, you can update a service's tasks to use a newer Docker\n\t\t\timage with the same image/tag combination (my_image:latest) or to roll\n\t\t\tFargate tasks onto a newer platform version.

" } }, "healthCheckGracePeriodSeconds": { "target": "com.amazonaws.ecs#BoxedInteger", "traits": { - "smithy.api#documentation": "

The period of time, in seconds, that the Amazon ECS service scheduler should ignore\n\t\t\tunhealthy Elastic Load Balancing target health checks after a task has first started. This is only valid\n\t\t\tif your service is configured to use a load balancer. If your service's tasks take a\n\t\t\twhile to start and respond to Elastic Load Balancing health checks, you can specify a health check grace\n\t\t\tperiod of up to 2,147,483,647 seconds. During that time, the Amazon ECS service\n\t\t\tscheduler ignores the Elastic Load Balancing health check status. This grace period can prevent the ECS\n\t\t\tservice scheduler from marking tasks as unhealthy and stopping them before they have\n\t\t\ttime to come up.

" + "smithy.api#documentation": "

The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy\n\t\t\tElastic Load Balancing target health checks after a task has first started. This is only valid if your\n\t\t\tservice is configured to use a load balancer. If your service's tasks take a while to\n\t\t\tstart and respond to Elastic Load Balancing health checks, you can specify a health check grace period of\n\t\t\tup to 2,147,483,647 seconds. During that time, the Amazon ECS service scheduler ignores\n\t\t\tthe Elastic Load Balancing health check status. This grace period can prevent the ECS service scheduler\n\t\t\tfrom marking tasks as unhealthy and stopping them before they have time to come\n\t\t\tup.

" } }, "enableExecuteCommand": { @@ -9298,14 +9400,14 @@ "cluster": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task\n\t\t\tset exists in.

", + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the service that the task\n\t\t\tset is found in.

", "smithy.api#required": {} } }, "service": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the service that the task set exists in.

", + "smithy.api#documentation": "

The short name or full Amazon Resource Name (ARN) of the service that the task set is found in.

", "smithy.api#required": {} } }, @@ -9354,7 +9456,7 @@ "dockerVersion": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The Docker version running on the container instance.

" + "smithy.api#documentation": "

The Docker version that's running on the container instance.

" } } }, @@ -9374,30 +9476,30 @@ "host": { "target": "com.amazonaws.ecs#HostVolumeProperties", "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using bind mount host volumes. The contents\n\t\t\tof the host parameter determine whether your bind mount host volume\n\t\t\tpersists on the host container instance and where it is stored. If the host\n\t\t\tparameter is empty, then the Docker daemon assigns a host path for your data volume.\n\t\t\tHowever, the data is not guaranteed to persist after the containers associated with it\n\t\t\tstop running.

\n\t\t

Windows containers can mount whole directories on the same drive as\n\t\t\t\t$env:ProgramData. Windows containers cannot mount directories on a\n\t\t\tdifferent drive, and mount point cannot be across drives. For example, you can mount\n\t\t\t\tC:\\my\\path:C:\\my\\path and D:\\:D:\\, but not\n\t\t\t\tD:\\my\\path:C:\\my\\path or D:\\:C:\\my\\path.

" + "smithy.api#documentation": "

This parameter is specified when you use bind mount host volumes. The contents of the\n\t\t\t\thost parameter determine whether your bind mount host volume persists\n\t\t\ton the host container instance and where it's stored. If the host parameter\n\t\t\tis empty, then the Docker daemon assigns a host path for your data volume. However, the\n\t\t\tdata isn't guaranteed to persist after the containers that are associated with it stop\n\t\t\trunning.

\n\t\t

Windows containers can mount whole directories on the same drive as\n\t\t\t\t$env:ProgramData. Windows containers can't mount directories on a\n\t\t\tdifferent drive, and mount point can't be across drives. For example, you can mount\n\t\t\t\tC:\\my\\path:C:\\my\\path and D:\\:D:\\, but not\n\t\t\t\tD:\\my\\path:C:\\my\\path or D:\\:C:\\my\\path.

" } }, "dockerVolumeConfiguration": { "target": "com.amazonaws.ecs#DockerVolumeConfiguration", "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using Docker volumes.

\n\t\t

Windows containers only support the use of the local driver. To use bind\n\t\t\tmounts, specify the host parameter instead.

\n\t\t \n\t\t\t

Docker volumes are not supported by tasks run on Fargate.

\n\t\t
" + "smithy.api#documentation": "

This parameter is specified when you use Docker volumes.

\n\t\t

Windows containers only support the use of the local driver. To use bind\n\t\t\tmounts, specify the host parameter instead.

\n\t\t \n\t\t\t

Docker volumes aren't supported by tasks run on Fargate.

\n\t\t
" } }, "efsVolumeConfiguration": { "target": "com.amazonaws.ecs#EFSVolumeConfiguration", "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using an Amazon Elastic File System file system for task\n\t\t\tstorage.

" + "smithy.api#documentation": "

This parameter is specified when you use an Amazon Elastic File System file system for task\n\t\t\tstorage.

" } }, "fsxWindowsFileServerVolumeConfiguration": { "target": "com.amazonaws.ecs#FSxWindowsFileServerVolumeConfiguration", "traits": { - "smithy.api#documentation": "

This parameter is specified when you are using Amazon FSx for Windows File Server file system for task\n\t\t\tstorage.

" + "smithy.api#documentation": "

This parameter is specified when you use Amazon FSx for Windows File Server file system for task\n\t\t\tstorage.

" } } }, "traits": { - "smithy.api#documentation": "

A data volume used in a task definition. For tasks that use the Amazon Elastic File\n\t\t\tSystem (Amazon EFS), specify an efsVolumeConfiguration. For Windows tasks\n\t\t\tthat use Amazon FSx for Windows File Server file system, specify a\n\t\t\t\tfsxWindowsFileServerVolumeConfiguration. For tasks that use a Docker\n\t\t\tvolume, specify a DockerVolumeConfiguration. For tasks that use a bind\n\t\t\tmount host volume, specify a host and optional sourcePath. For\n\t\t\tmore information, see Using Data Volumes in\n\t\t\t\tTasks.

" + "smithy.api#documentation": "

A data volume that's used in a task definition. For tasks that use the Amazon Elastic\n\t\t\tFile System (Amazon EFS), specify an efsVolumeConfiguration. For Windows\n\t\t\ttasks that use Amazon FSx for Windows File Server file system, specify a\n\t\t\t\tfsxWindowsFileServerVolumeConfiguration. For tasks that use a Docker\n\t\t\tvolume, specify a DockerVolumeConfiguration. For tasks that use a bind\n\t\t\tmount host volume, specify a host and optional sourcePath. For\n\t\t\tmore information, see Using Data Volumes in\n\t\t\t\tTasks.

" } }, "com.amazonaws.ecs#VolumeFrom": { @@ -9406,7 +9508,7 @@ "sourceContainer": { "target": "com.amazonaws.ecs#String", "traits": { - "smithy.api#documentation": "

The name of another container within the same task definition from which to mount\n\t\t\tvolumes.

" + "smithy.api#documentation": "

The name of another container within the same task definition to mount volumes\n\t\t\tfrom.

" } }, "readOnly": { diff --git a/codegen/sdk-codegen/aws-models/greengrassv2.2020-11-30.json b/codegen/sdk-codegen/aws-models/greengrassv2.2020-11-30.json index 2a77f5ed023..8b7b51a59f5 100644 --- a/codegen/sdk-codegen/aws-models/greengrassv2.2020-11-30.json +++ b/codegen/sdk-codegen/aws-models/greengrassv2.2020-11-30.json @@ -681,13 +681,19 @@ "posixUser": { "target": "com.amazonaws.greengrassv2#NonEmptyString", "traits": { - "smithy.api#documentation": "

The POSIX system user and (optional) group to use to run this component. Specify the user\n and group separated by a colon (:) in the following format:\n user:group. The group is optional. If you don't specify a group, the IoT Greengrass Core\n software uses the primary user for the group.

\n

If you omit this parameter, the IoT Greengrass Core software uses the default system user and group that\n you configure on the Greengrass nucleus component. For more information, see Configure the user and group that run components.

" + "smithy.api#documentation": "

The POSIX system user and, optionally, group to use to run this component on Linux core\n devices. The user, and group if specified, must exist on each Linux core device. Specify the\n user and group separated by a colon (:) in the following format:\n user:group. The group is optional. If you don't specify a group, the IoT Greengrass Core\n software uses the primary user for the group.

\n

If you omit this parameter, the IoT Greengrass Core software uses the default system user and group that\n you configure on the Greengrass nucleus component. For more information, see Configure the user and group that run components.

" } }, "systemResourceLimits": { "target": "com.amazonaws.greengrassv2#SystemResourceLimits", "traits": { - "smithy.api#documentation": "

The system resource limits to apply to this component's process on the core device.

\n

If you omit this parameter, the IoT Greengrass Core software uses the default system resource limits\n that you configure on the Greengrass nucleus component. For more information, see Configure system resource limits for components.

" + "smithy.api#documentation": "

The system resource limits to apply to this component's process on the core device. IoT Greengrass\n currently supports this feature on only Linux core devices.

\n

If you omit this parameter, the IoT Greengrass Core software uses the default system resource limits\n that you configure on the Greengrass nucleus component. For more information, see Configure system resource limits for components.

" + } + }, + "windowsUser": { + "target": "com.amazonaws.greengrassv2#NonEmptyString", + "traits": { + "smithy.api#documentation": "

The Windows user to use to run this component on Windows core devices. The user must exist\n on each Windows core device, and its name and password must be in the LocalSystem account's\n Credentials Manager instance.

\n

If you omit this parameter, the IoT Greengrass Core software uses the default Windows user that you\n configure on the Greengrass nucleus component. For more information, see Configure the user and group that run components.

" } } }, @@ -903,7 +909,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a component. Components are software that run on Greengrass core devices. After you\n develop and test a component on your core device, you can use this operation to upload your\n component to IoT Greengrass. Then, you can deploy the component to other core devices.

\n

You can use this operation to do the following:

\n ", + "smithy.api#documentation": "

Creates a component. Components are software that run on Greengrass core devices. After you\n develop and test a component on your core device, you can use this operation to upload your\n component to IoT Greengrass. Then, you can deploy the component to other core devices.

\n

You can use this operation to do the following:

\n ", "smithy.api#http": { "method": "POST", "uri": "/greengrass/v2/createComponentVersion", @@ -2102,6 +2108,21 @@ }, "com.amazonaws.greengrassv2#GreengrassV2": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "GreengrassV2", + "arnNamespace": "greengrass", + "cloudFormationName": "GreengrassV2", + "cloudTrailEventSource": "greengrassv2.amazonaws.com", + "endpointPrefix": "greengrass" + }, + "aws.auth#sigv4": { + "name": "greengrass" + }, + "aws.protocols#restJson1": {}, + "smithy.api#documentation": "

IoT Greengrass brings local compute, messaging, data management, sync, and ML inference capabilities\n to edge devices. This enables devices to collect and analyze data closer to the source of\n information, react autonomously to local events, and communicate securely with each other on\n local networks. Local devices can also communicate securely with Amazon Web Services IoT Core and export IoT data\n to the Amazon Web Services Cloud. IoT Greengrass developers can use Lambda functions and components to create and\n deploy applications to fleets of edge devices for local operation.

\n

IoT Greengrass Version 2 provides a new major version of the IoT Greengrass Core software, new APIs, and a new console.\n Use this API reference to learn how to use the IoT Greengrass V2 API operations to manage components,\n manage deployments, and core devices.

\n

For more information, see What is IoT Greengrass? in\n the IoT Greengrass V2 Developer Guide.

", + "smithy.api#title": "AWS IoT Greengrass V2" + }, "version": "2020-11-30", "operations": [ { @@ -2173,22 +2194,7 @@ { "target": "com.amazonaws.greengrassv2#UntagResource" } - ], - "traits": { - "aws.api#service": { - "sdkId": "GreengrassV2", - "arnNamespace": "greengrass", - "cloudFormationName": "GreengrassV2", - "cloudTrailEventSource": "greengrassv2.amazonaws.com", - "endpointPrefix": "greengrass" - }, - "aws.auth#sigv4": { - "name": "greengrass" - }, - "aws.protocols#restJson1": {}, - "smithy.api#documentation": "

IoT Greengrass brings local compute, messaging, data management, sync, and ML inference capabilities\n to edge devices. This enables devices to collect and analyze data closer to the source of\n information, react autonomously to local events, and communicate securely with each other on\n local networks. Local devices can also communicate securely with Amazon Web Services IoT Core and export IoT data\n to the Amazon Web Services Cloud. IoT Greengrass developers can use Lambda functions and components to create and\n deploy applications to fleets of edge devices for local operation.

\n

IoT Greengrass Version 2 provides a new major version of the IoT Greengrass Core software, new APIs, and a new console.\n Use this API reference to learn how to use the IoT Greengrass V2 API operations to manage components,\n manage deployments, and core devices.

\n

For more information, see What is IoT Greengrass? in\n the IoT Greengrass V2 Developer Guide.

", - "smithy.api#title": "AWS IoT Greengrass V2" - } + ] }, "com.amazonaws.greengrassv2#InstalledComponent": { "type": "structure", diff --git a/codegen/sdk-codegen/aws-models/health.2016-08-04.json b/codegen/sdk-codegen/aws-models/health.2016-08-04.json index a2242baa351..19416997dc1 100644 --- a/codegen/sdk-codegen/aws-models/health.2016-08-04.json +++ b/codegen/sdk-codegen/aws-models/health.2016-08-04.json @@ -31,6 +31,21 @@ "shapes": { "com.amazonaws.health#AWSHealth_20160804": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Health", + "arnNamespace": "health", + "cloudFormationName": "Health", + "cloudTrailEventSource": "health.amazonaws.com", + "endpointPrefix": "health" + }, + "aws.auth#sigv4": { + "name": "health" + }, + "aws.protocols#awsJson1_1": {}, + "smithy.api#documentation": "Health\n \n

The Health API provides programmatic access to the Health information that\n appears in the Personal Health Dashboard. You\n can use the API operations to get information about events that might affect your Amazon Web Services\n services and resources.

\n \n \n \n

For authentication of requests, Health uses the Signature Version 4 Signing\n Process.

\n

If your Amazon Web Services account is part of Organizations, you can use the Health organizational\n view feature. This feature provides a centralized view of Health events across all\n accounts in your organization. You can aggregate Health events in real time to\n identify accounts in your organization that are affected by an operational event or get\n notified of security vulnerabilities. Use the organizational view API operations to enable\n this feature and return event information. For more information, see Aggregating\n Health events in the Health User Guide.

\n \n

When you use the Health API operations to return Health events, see the\n following recommendations:

\n \n
", + "smithy.api#title": "AWS Health APIs and Notifications" + }, "version": "2016-08-04", "operations": [ { @@ -72,22 +87,7 @@ { "target": "com.amazonaws.health#EnableHealthServiceAccessForOrganization" } - ], - "traits": { - "aws.api#service": { - "sdkId": "Health", - "arnNamespace": "health", - "cloudFormationName": "Health", - "cloudTrailEventSource": "health.amazonaws.com", - "endpointPrefix": "health" - }, - "aws.auth#sigv4": { - "name": "health" - }, - "aws.protocols#awsJson1_1": {}, - "smithy.api#documentation": "AWS Health\n \n

The AWS Health API provides programmatic access to the AWS Health information that\n appears in the AWS Personal Health Dashboard. You\n can use the API operations to get information about AWS Health events that affect your\n AWS services and resources.

\n \n \n \n

For authentication of requests, AWS Health uses the Signature Version 4 Signing\n Process.

\n

If your AWS account is part of AWS Organizations, you can use the AWS Health organizational\n view feature. This feature provides a centralized view of AWS Health events across all\n accounts in your organization. You can aggregate AWS Health events in real time to\n identify accounts in your organization that are affected by an operational event or get\n notified of security vulnerabilities. Use the organizational view API operations to enable\n this feature and return event information. For more information, see Aggregating\n AWS Health events in the AWS Health User Guide.

\n \n

When you use the AWS Health API operations to return AWS Health events, see the\n following recommendations:

\n \n
", - "smithy.api#title": "AWS Health APIs and Notifications" - } + ] }, "com.amazonaws.health#AffectedEntity": { "type": "structure", @@ -119,7 +119,7 @@ "awsAccountId": { "target": "com.amazonaws.health#accountId", "traits": { - "smithy.api#documentation": "

The 12-digit AWS account number that contains the affected entity.

" + "smithy.api#documentation": "

The 12-digit Amazon Web Services account number that contains the affected entity.

" } }, "lastUpdatedTime": { @@ -191,7 +191,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of accounts in the organization from AWS Organizations that are affected by the\n provided event. For more information about the different types of AWS Health events, see\n Event.

\n

Before you can call this operation, you must first enable AWS Health to work with\n AWS Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", + "smithy.api#documentation": "

Returns a list of accounts in the organization from Organizations that are affected by the\n provided event. For more information about the different types of Health events, see\n Event.

\n

Before you can call this operation, you must first enable Health to work with\n Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -237,7 +237,7 @@ "eventScopeCode": { "target": "com.amazonaws.health#eventScopeCode", "traits": { - "smithy.api#documentation": "

This parameter specifies if the AWS Health event is a public AWS service event or an account-specific event.

\n " + "smithy.api#documentation": "

This parameter specifies if the Health event is a public Amazon Web Services service event or an account-specific event.

\n " } }, "nextToken": { @@ -265,7 +265,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of entities that have been affected by the specified events, based on the\n specified filter criteria. Entities can refer to individual customer resources, groups of\n customer resources, or any other construct, depending on the AWS service. Events that\n have impact beyond that of the affected entities, or where the extent of impact is unknown,\n include at least one entity indicating this.

\n

At least one event ARN is required. Results are sorted by the\n lastUpdatedTime of the entity, starting with the most recent.

\n \n \n \n ", + "smithy.api#documentation": "

Returns a list of entities that have been affected by the specified events, based on the\n specified filter criteria. Entities can refer to individual customer resources, groups of\n customer resources, or any other construct, depending on the Amazon Web Services service. Events that\n have impact beyond that of the affected entities, or where the extent of impact is unknown,\n include at least one entity indicating this.

\n

At least one event ARN is required.

\n \n \n \n ", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -292,7 +292,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of entities that have been affected by one or more events for one or more\n accounts in your organization in AWS Organizations, based on the filter criteria. Entities can refer\n to individual customer resources, groups of customer resources, or any other construct,\n depending on the AWS service.

\n

At least one event Amazon Resource Name (ARN) and account ID are required. Results are\n sorted by the lastUpdatedTime of the entity, starting with the most\n recent.

\n

Before you can call this operation, you must first enable AWS Health to work with\n AWS Organizations. To do this, call the EnableHealthServiceAccessForOrganization\n operation from your organization's management account.

\n \n \n \n ", + "smithy.api#documentation": "

Returns a list of entities that have been affected by one or more events for one or more\n accounts in your organization in Organizations, based on the filter criteria. Entities can refer\n to individual customer resources, groups of customer resources, or any other construct,\n depending on the Amazon Web Services service.

\n

At least one event Amazon Resource Name (ARN) and account ID are required.

\n

Before you can call this operation, you must first enable Health to work with\n Organizations. To do this, call the EnableHealthServiceAccessForOrganization\n operation from your organization's management account.

\n \n \n \n ", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -417,7 +417,7 @@ "target": "com.amazonaws.health#DescribeEntityAggregatesResponse" }, "traits": { - "smithy.api#documentation": "

Returns the number of entities that are affected by each of the specified events. If no\n events are specified, the counts of all affected entities are returned.

", + "smithy.api#documentation": "

Returns the number of entities that are affected by each of the specified events.

", "smithy.api#idempotent": {} } }, @@ -528,7 +528,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns detailed information about one or more specified events. Information includes\n standard event data (AWS Region, service, and so on, as returned by DescribeEvents), a detailed event description, and possible additional metadata\n that depends upon the nature of the event. Affected entities are not included. To retrieve\n the entities, use the DescribeAffectedEntities operation.

\n

If a specified event can't be retrieved, an error message is returned for that\n event.

\n \n

This operation supports resource-level permissions. You can use this operation to allow or deny access to specific AWS Health events. For more\n information, see Resource- and action-based conditions in the AWS Health User Guide.

\n
", + "smithy.api#documentation": "

Returns detailed information about one or more specified events. Information includes\n standard event data (Amazon Web Services Region, service, and so on, as returned by DescribeEvents), a detailed event description, and possible additional metadata\n that depends upon the nature of the event. Affected entities are not included. To retrieve\n the entities, use the DescribeAffectedEntities operation.

\n

If a specified event can't be retrieved, an error message is returned for that\n event.

\n \n

This operation supports resource-level permissions. You can use this operation to allow or deny access to specific Health events. For more\n information, see Resource- and action-based conditions in the Health User Guide.

\n
", "smithy.api#idempotent": {} } }, @@ -552,7 +552,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns detailed information about one or more specified events for one or more AWS\n accounts in your organization. This information includes standard event data (such as the\n AWS Region and service), an event description, and (depending on the event) possible\n metadata. This operation doesn't return affected entities, such as the resources related to\n the event. To return affected entities, use the DescribeAffectedEntitiesForOrganization operation.

\n \n

Before you can call this operation, you must first enable AWS Health to work with\n AWS Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n
\n

When you call the DescribeEventDetailsForOrganization operation, specify\n the organizationEventDetailFilters object in the request. Depending on the\n AWS Health event type, note the following differences:

\n \n

For more information, see Event.

\n\n \n

This operation doesn't support resource-level permissions. You can't use this operation to allow or deny access to specific AWS Health events. For more\n information, see Resource- and action-based conditions in the AWS Health User Guide.

\n
", + "smithy.api#documentation": "

Returns detailed information about one or more specified events for one or more\n Amazon Web Services accounts in your organization. This information includes standard event data (such as the\n Amazon Web Services Region and service), an event description, and (depending on the event) possible\n metadata. This operation doesn't return affected entities, such as the resources related to\n the event. To return affected entities, use the DescribeAffectedEntitiesForOrganization operation.

\n \n

Before you can call this operation, you must first enable Health to work with\n Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n
\n

When you call the DescribeEventDetailsForOrganization operation, specify\n the organizationEventDetailFilters object in the request. Depending on the\n Health event type, note the following differences:

\n \n

For more information, see Event.

\n\n \n

This operation doesn't support resource-level permissions. You can't use this operation to allow or deny access to specific Health events. For more\n information, see Resource- and action-based conditions in the Health User Guide.

\n
", "smithy.api#idempotent": {} } }, @@ -661,7 +661,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns the event types that meet the specified filter criteria. You can use this API\n operation to find information about the AWS Health event, such as the category, AWS\n service, and event code. The metadata for each event appears in the EventType object.

\n

If you don't specify a filter criteria, the API operation returns all event types, in no\n particular order.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", + "smithy.api#documentation": "

Returns the event types that meet the specified filter criteria. You can use this API\n operation to find information about the Health event, such as the category, Amazon Web Services\n service, and event code. The metadata for each event appears in the EventType object.

\n

If you don't specify a filter criteria, the API operation returns all event types, in no\n particular order.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -734,7 +734,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns information about events that meet the specified filter criteria. Events are\n returned in a summary form and do not include the detailed description, any additional\n metadata that depends on the event type, or any affected resources. To retrieve that\n information, use the DescribeEventDetails and DescribeAffectedEntities operations.

\n

If no filter criteria are specified, all events are returned. Results are sorted by\n lastModifiedTime, starting with the most recent event.

\n \n \n ", + "smithy.api#documentation": "

Returns information about events that meet the specified filter criteria. Events are\n returned in a summary form and do not include the detailed description, any additional\n metadata that depends on the event type, or any affected resources. To retrieve that\n information, use the DescribeEventDetails and DescribeAffectedEntities operations.

\n

If no filter criteria are specified, all events are returned. Results are sorted by\n lastModifiedTime, starting with the most recent event.

\n \n \n ", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -761,7 +761,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns information about events across your organization in AWS Organizations. You can use\n thefilters parameter to specify the events that you want to return. Events\n are returned in a summary form and don't include the affected accounts, detailed\n description, any additional metadata that depends on the event type, or any affected\n resources. To retrieve that information, use the following operations:

\n \n

If you don't specify a filter, the\n DescribeEventsForOrganizations returns all events across your organization.\n Results are sorted by lastModifiedTime, starting with the most recent event.

\n

For more information about the different types of AWS Health events, see Event.

\n

Before you can call this operation, you must first enable AWS Health to work with\n AWS Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", + "smithy.api#documentation": "

Returns information about events across your organization in Organizations. You can use\n thefilters parameter to specify the events that you want to return. Events\n are returned in a summary form and don't include the affected accounts, detailed\n description, any additional metadata that depends on the event type, or any affected\n resources. To retrieve that information, use the following operations:

\n \n

If you don't specify a filter, the\n DescribeEventsForOrganizations returns all events across your organization.\n Results are sorted by lastModifiedTime, starting with the most recent event.

\n

For more information about the different types of Health events, see Event.

\n

Before you can call this operation, you must first enable Health to work with\n Organizations. To do this, call the EnableHealthServiceAccessForOrganization operation from your organization's\n management account.

\n \n

This API operation uses pagination. Specify the nextToken parameter in the next request to return more results.

\n
", "smithy.api#idempotent": {}, "smithy.api#paginated": { "inputToken": "nextToken", @@ -869,7 +869,7 @@ "target": "com.amazonaws.health#DescribeHealthServiceStatusForOrganizationResponse" }, "traits": { - "smithy.api#documentation": "

This operation provides status information on enabling or disabling AWS Health to work\n with your organization. To call this operation, you must sign in as an IAM user, assume\n an IAM role, or sign in as the root user (not recommended) in the organization's\n management account.

", + "smithy.api#documentation": "

This operation provides status information on enabling or disabling Health to work\n with your organization. To call this operation, you must sign in as an IAM user, assume\n an IAM role, or sign in as the root user (not recommended) in the organization's\n management account.

", "smithy.api#idempotent": {} } }, @@ -879,7 +879,7 @@ "healthServiceAccessStatusForOrganization": { "target": "com.amazonaws.health#healthServiceAccessStatusForOrganization", "traits": { - "smithy.api#documentation": "

Information about the status of enabling or disabling AWS Health Organizational View in\n your organization.

\n

Valid values are ENABLED | DISABLED | PENDING.

" + "smithy.api#documentation": "

Information about the status of enabling or disabling the Health organizational\n view feature in\n your organization.

\n

Valid values are ENABLED | DISABLED | PENDING.

" } } } @@ -892,7 +892,7 @@ } ], "traits": { - "smithy.api#documentation": "

Disables AWS Health from working with AWS Organizations. To call this operation, you must sign\n in as an AWS Identity and Access Management (IAM) user, assume an IAM role, or sign in as the root user (not\n recommended) in the organization's management account. For more information, see Aggregating\n AWS Health events in the\n AWS Health User Guide.

\n

This operation doesn't remove the service-linked role from the management account in your organization. You must use the IAM console, API, or AWS Command Line Interface (AWS CLI) to\n remove the service-linked role. For more information, see Deleting a Service-Linked Role in the\n IAM User Guide.

\n \n

You can also disable the organizational feature by using the Organizations DisableAWSServiceAccess API operation. After you call this operation,\n AWS Health stops aggregating events for all other AWS accounts in your organization.\n If you call the AWS Health API operations for organizational view, AWS Health returns\n an error. AWS Health continues to aggregate health events for your AWS\n account.

\n
", + "smithy.api#documentation": "

Disables Health from working with Organizations. To call this operation, you must sign\n in as an Identity and Access Management (IAM) user, assume an IAM role, or sign in as the root user (not\n recommended) in the organization's management account. For more information, see Aggregating\n Health events in the\n Health User Guide.

\n

This operation doesn't remove the service-linked role from the management account in your organization. You must use the IAM console, API, or Command Line Interface (CLI) to\n remove the service-linked role. For more information, see Deleting a Service-Linked Role in the\n IAM User Guide.

\n \n

You can also disable the organizational feature by using the Organizations DisableAWSServiceAccess API operation. After you call this operation,\n Health stops aggregating events for all other Amazon Web Services accounts in your organization.\n If you call the Health API operations for organizational view, Health returns\n an error. Health continues to aggregate health events for your Amazon Web Services account.

\n
", "smithy.api#idempotent": {} } }, @@ -904,7 +904,7 @@ } ], "traits": { - "smithy.api#documentation": "

Enables AWS Health to work with AWS Organizations. You can use the organizational view feature\n to aggregate events from all AWS accounts in your organization in a centralized location.

\n

This operation also creates a service-linked role for the management account in the\n organization.

\n \n

To call this operation, you must meet the following requirements:

\n \n
\n

If you don't have the required support plan, you can instead use the AWS Health console\n to enable the organizational view feature. For more information, see Aggregating\n AWS Health events in the AWS Health User Guide.

", + "smithy.api#documentation": "

Enables Health to work with Organizations. You can use the organizational view feature\n to aggregate events from all Amazon Web Services accounts in your organization in a centralized location.

\n

This operation also creates a service-linked role for the management account in the\n organization.

\n \n

To call this operation, you must meet the following requirements:

\n \n
\n

If you don't have the required support plan, you can instead use the Health console\n to enable the organizational view feature. For more information, see Aggregating\n Health events in the Health User Guide.

", "smithy.api#idempotent": {} } }, @@ -976,7 +976,7 @@ } }, "traits": { - "smithy.api#documentation": "

The values to use to filter results from the EntityFilter\n operation.

" + "smithy.api#documentation": "

The values to use to filter results from the DescribeAffectedEntities\n operation.

" } }, "com.amazonaws.health#EntityList": { @@ -997,7 +997,7 @@ "service": { "target": "com.amazonaws.health#service", "traits": { - "smithy.api#documentation": "

The AWS service that is affected by the event. For example, EC2, RDS.

" + "smithy.api#documentation": "

The Amazon Web Services service that is affected by the event. For example, EC2, RDS.

" } }, "eventTypeCode": { @@ -1009,19 +1009,19 @@ "eventTypeCategory": { "target": "com.amazonaws.health#eventTypeCategory", "traits": { - "smithy.api#documentation": "

The category of the event. Possible values are issue,\n scheduledChange, and accountNotification.

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } }, "region": { "target": "com.amazonaws.health#region", "traits": { - "smithy.api#documentation": "

The AWS Region name of the event.

" + "smithy.api#documentation": "

The Amazon Web Services Region name of the event.

" } }, "availabilityZone": { "target": "com.amazonaws.health#availabilityZone", "traits": { - "smithy.api#documentation": "

The AWS Availability Zone of the event. For example, us-east-1a.

" + "smithy.api#documentation": "

The Amazon Web Services Availability Zone of the event. For example, us-east-1a.

" } }, "startTime": { @@ -1051,12 +1051,12 @@ "eventScopeCode": { "target": "com.amazonaws.health#eventScopeCode", "traits": { - "smithy.api#documentation": "

This parameter specifies if the AWS Health event is a public AWS service event or an account-specific event.

\n " + "smithy.api#documentation": "

This parameter specifies if the Health event is a public Amazon Web Services service event or an account-specific event.

\n " } } }, "traits": { - "smithy.api#documentation": "

Summary information about an AWS Health event.

\n

AWS Health events can be public or account-specific:

\n \n

You can determine if an event is public or account-specific by using the\n eventScopeCode parameter. For more information, see eventScopeCode.

" + "smithy.api#documentation": "

Summary information about an Health event.

\n

Health events can be public or account-specific:

\n \n

You can determine if an event is public or account-specific by using the\n eventScopeCode parameter. For more information, see eventScopeCode.

" } }, "com.amazonaws.health#EventAccountFilter": { @@ -1072,7 +1072,7 @@ "awsAccountId": { "target": "com.amazonaws.health#accountId", "traits": { - "smithy.api#documentation": "

The 12-digit AWS account numbers that contains the affected entities.

" + "smithy.api#documentation": "

The 12-digit Amazon Web Services account numbers that contains the affected entities.

" } } }, @@ -1205,19 +1205,19 @@ "services": { "target": "com.amazonaws.health#serviceList", "traits": { - "smithy.api#documentation": "

The AWS services associated with the event. For example, EC2, RDS.

" + "smithy.api#documentation": "

The Amazon Web Services services associated with the event. For example, EC2, RDS.

" } }, "regions": { "target": "com.amazonaws.health#regionList", "traits": { - "smithy.api#documentation": "

A list of AWS Regions.

" + "smithy.api#documentation": "

A list of Amazon Web Services Regions.

" } }, "availabilityZones": { "target": "com.amazonaws.health#availabilityZones", "traits": { - "smithy.api#documentation": "

A list of AWS Availability Zones.

" + "smithy.api#documentation": "

A list of Amazon Web Services Availability Zones.

" } }, "startTimes": { @@ -1253,7 +1253,7 @@ "eventTypeCategories": { "target": "com.amazonaws.health#eventTypeCategoryList2", "traits": { - "smithy.api#documentation": "

A list of event type category codes (issue, scheduledChange,\n or accountNotification).

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } }, "tags": { @@ -1285,7 +1285,7 @@ "service": { "target": "com.amazonaws.health#service", "traits": { - "smithy.api#documentation": "

The AWS service that is affected by the event. For example, EC2, RDS.

" + "smithy.api#documentation": "

The Amazon Web Services service that is affected by the event. For example, EC2, RDS.

" } }, "code": { @@ -1297,12 +1297,12 @@ "category": { "target": "com.amazonaws.health#eventTypeCategory", "traits": { - "smithy.api#documentation": "

A list of event type category codes (issue, scheduledChange,\n or accountNotification).

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } } }, "traits": { - "smithy.api#documentation": "

Contains the metadata about a type of event that is reported by AWS Health. The\n EventType shows the category, service, and the event type code of the\n event. For example, an issue might be the category, EC2 the\n service, and AWS_EC2_SYSTEM_MAINTENANCE_EVENT the event type code.

\n

You can use the DescribeEventTypes API operation to return this information\n about an event.

\n

You can also use the Amazon CloudWatch Events console to create a rule so that you can get notified or\n take action when AWS Health delivers a specific event to your AWS account. For more\n information, see Monitor for AWS Health events with Amazon CloudWatch Events in the\n AWS Health User Guide.

" + "smithy.api#documentation": "

Contains the metadata about a type of event that is reported by Health. The\n EventType shows the category, service, and the event type code of the\n event. For example, an issue might be the category, EC2 the\n service, and AWS_EC2_SYSTEM_MAINTENANCE_EVENT the event type code.

\n

You can use the DescribeEventTypes API operation to return this information\n about an event.

\n

You can also use the Amazon CloudWatch Events console to create a rule so that you can get notified or\n take action when Health delivers a specific event to your Amazon Web Services account. For more\n information, see Monitor for Health events with Amazon CloudWatch Events in the\n Health User Guide.

" } }, "com.amazonaws.health#EventType2": { @@ -1351,13 +1351,13 @@ "services": { "target": "com.amazonaws.health#serviceList", "traits": { - "smithy.api#documentation": "

The AWS services associated with the event. For example, EC2, RDS.

" + "smithy.api#documentation": "

The Amazon Web Services services associated with the event. For example, EC2, RDS.

" } }, "eventTypeCategories": { "target": "com.amazonaws.health#EventTypeCategoryList", "traits": { - "smithy.api#documentation": "

A list of event type category codes (issue, scheduledChange,\n or accountNotification).

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } } }, @@ -1389,7 +1389,7 @@ "awsAccountId": { "target": "com.amazonaws.health#accountId", "traits": { - "smithy.api#documentation": "

The 12-digit AWS account numbers that contains the affected entities.

" + "smithy.api#documentation": "

The 12-digit Amazon Web Services account numbers that contains the affected entities.

" } }, "eventArn": { @@ -1439,7 +1439,7 @@ "service": { "target": "com.amazonaws.health#service", "traits": { - "smithy.api#documentation": "

The AWS service that is affected by the event, such as EC2 and RDS.

" + "smithy.api#documentation": "

The Amazon Web Services service that is affected by the event, such as EC2 and RDS.

" } }, "eventTypeCode": { @@ -1451,19 +1451,19 @@ "eventTypeCategory": { "target": "com.amazonaws.health#eventTypeCategory", "traits": { - "smithy.api#documentation": "

The category of the event type.

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } }, "eventScopeCode": { "target": "com.amazonaws.health#eventScopeCode", "traits": { - "smithy.api#documentation": "

This parameter specifies if the AWS Health event is a public AWS service event or an account-specific event.

\n " + "smithy.api#documentation": "

This parameter specifies if the Health event is a public Amazon Web Services service event or an account-specific event.

\n " } }, "region": { "target": "com.amazonaws.health#region", "traits": { - "smithy.api#documentation": "

The AWS Region name of the event.

" + "smithy.api#documentation": "

The Amazon Web Services Region name of the event.

" } }, "startTime": { @@ -1513,7 +1513,7 @@ "awsAccountId": { "target": "com.amazonaws.health#accountId", "traits": { - "smithy.api#documentation": "

The 12-digit AWS account numbers that contains the affected entities.

" + "smithy.api#documentation": "

The 12-digit Amazon Web Services account numbers that contains the affected entities.

" } }, "event": { @@ -1557,7 +1557,7 @@ "errorMessage": { "target": "com.amazonaws.health#string", "traits": { - "smithy.api#documentation": "

A message that describes the error.

\n

If you call the DescribeEventDetailsForOrganization\noperation and receive one of the following errors, follow the recommendations in the message:

\n " + "smithy.api#documentation": "

A message that describes the error.

\n

If you call the DescribeEventDetailsForOrganization operation and receive one of the following errors, follow the recommendations in the message:

\n " } } }, @@ -1577,19 +1577,19 @@ "awsAccountIds": { "target": "com.amazonaws.health#awsAccountIdsList", "traits": { - "smithy.api#documentation": "

A list of 12-digit AWS account numbers that contains the affected entities.

" + "smithy.api#documentation": "

A list of 12-digit Amazon Web Services account numbers that contains the affected entities.

" } }, "services": { "target": "com.amazonaws.health#serviceList", "traits": { - "smithy.api#documentation": "

The AWS services associated with the event. For example, EC2, RDS.

" + "smithy.api#documentation": "

The Amazon Web Services services associated with the event. For example, EC2, RDS.

" } }, "regions": { "target": "com.amazonaws.health#regionList", "traits": { - "smithy.api#documentation": "

A list of AWS Regions.

" + "smithy.api#documentation": "

A list of Amazon Web Services Regions.

" } }, "startTime": { @@ -1616,7 +1616,7 @@ "eventTypeCategories": { "target": "com.amazonaws.health#eventTypeCategoryList2", "traits": { - "smithy.api#documentation": "

A list of event type category codes (issue, scheduledChange, or accountNotification).

" + "smithy.api#documentation": "

A list of event type category codes. Possible values are\nissue, accountNotification, or scheduledChange. Currently,\nthe investigation value isn't supported at this time.

" } }, "eventStatusCodes": { diff --git a/codegen/sdk-codegen/aws-models/iotwireless.2020-11-22.json b/codegen/sdk-codegen/aws-models/iotwireless.2020-11-22.json index 281a86e7f91..e420074280b 100644 --- a/codegen/sdk-codegen/aws-models/iotwireless.2020-11-22.json +++ b/codegen/sdk-codegen/aws-models/iotwireless.2020-11-22.json @@ -215,6 +215,183 @@ } } }, + "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Associate a multicast group with a FUOTA task.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/fuota-tasks/{Id}/multicast-group", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "MulticastGroupId": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Associate a wireless device with a FUOTA task.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/fuota-tasks/{Id}/wireless-device", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "WirelessDeviceId": { + "target": "com.amazonaws.iotwireless#WirelessDeviceId", + "traits": { + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Associates a wireless device with a multicast group.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/multicast-groups/{Id}/wireless-device", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "WirelessDeviceId": { + "target": "com.amazonaws.iotwireless#WirelessDeviceId", + "traits": { + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroupResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#AssociateWirelessDeviceWithThing": { "type": "operation", "input": { @@ -428,6 +605,59 @@ ] } }, + "com.amazonaws.iotwireless#CancelMulticastGroupSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#CancelMulticastGroupSessionRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#CancelMulticastGroupSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Cancels an existing multicast group session.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/multicast-groups/{Id}/session", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#CancelMulticastGroupSessionRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#CancelMulticastGroupSessionResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#CertificateList": { "type": "structure", "members": { @@ -502,6 +732,7 @@ "com.amazonaws.iotwireless#ClientRequestToken": { "type": "string", "traits": { + "smithy.api#documentation": "

Each resource must have a unique client request token. If you try to create a new resource with the same token as a resource that already exists, an exception occurs. If you omit this value, AWS SDKs will automatically generate a unique client request.

", "smithy.api#length": { "min": 1, "max": 64 @@ -746,13 +977,13 @@ } } }, - "com.amazonaws.iotwireless#CreateServiceProfile": { + "com.amazonaws.iotwireless#CreateFuotaTask": { "type": "operation", "input": { - "target": "com.amazonaws.iotwireless#CreateServiceProfileRequest" + "target": "com.amazonaws.iotwireless#CreateFuotaTaskRequest" }, "output": { - "target": "com.amazonaws.iotwireless#CreateServiceProfileResponse" + "target": "com.amazonaws.iotwireless#CreateFuotaTaskResponse" }, "errors": [ { @@ -764,6 +995,9 @@ { "target": "com.amazonaws.iotwireless#InternalServerException" }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, { "target": "com.amazonaws.iotwireless#ThrottlingException" }, @@ -772,68 +1006,67 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a new service profile.

", + "smithy.api#documentation": "

Creates a FUOTA task.

", "smithy.api#http": { "method": "POST", - "uri": "/service-profiles", + "uri": "/fuota-tasks", "code": 201 } } }, - "com.amazonaws.iotwireless#CreateServiceProfileRequest": { + "com.amazonaws.iotwireless#CreateFuotaTaskRequest": { "type": "structure", "members": { "Name": { - "target": "com.amazonaws.iotwireless#ServiceProfileName", + "target": "com.amazonaws.iotwireless#FuotaTaskName" + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description" + }, + "ClientRequestToken": { + "target": "com.amazonaws.iotwireless#ClientRequestToken", "traits": { - "smithy.api#documentation": "

The name of the new resource.

" + "smithy.api#idempotencyToken": {} } }, "LoRaWAN": { - "target": "com.amazonaws.iotwireless#LoRaWANServiceProfile", - "traits": { - "smithy.api#documentation": "

The service profile information to use to create the service profile.

" - } + "target": "com.amazonaws.iotwireless#LoRaWANFuotaTask" }, - "Tags": { - "target": "com.amazonaws.iotwireless#TagList", + "FirmwareUpdateImage": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateImage", "traits": { - "smithy.api#documentation": "

The tags to attach to the new service profile. Tags are metadata that you can use to manage a resource.

" + "smithy.api#required": {} } }, - "ClientRequestToken": { - "target": "com.amazonaws.iotwireless#ClientRequestToken", + "FirmwareUpdateRole": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateRole", "traits": { - "smithy.api#documentation": "

Each resource must have a unique client request token. If you try to create a new resource with the same token as a resource that already exists, an exception occurs. If you omit this value, AWS SDKs will automatically generate a unique client request.

", - "smithy.api#idempotencyToken": {} + "smithy.api#required": {} } + }, + "Tags": { + "target": "com.amazonaws.iotwireless#TagList" } } }, - "com.amazonaws.iotwireless#CreateServiceProfileResponse": { + "com.amazonaws.iotwireless#CreateFuotaTaskResponse": { "type": "structure", "members": { "Arn": { - "target": "com.amazonaws.iotwireless#ServiceProfileArn", - "traits": { - "smithy.api#documentation": "

The Amazon Resource Name of the new resource.

" - } + "target": "com.amazonaws.iotwireless#FuotaTaskArn" }, "Id": { - "target": "com.amazonaws.iotwireless#ServiceProfileId", - "traits": { - "smithy.api#documentation": "

The ID of the new service profile.

" - } + "target": "com.amazonaws.iotwireless#FuotaTaskId" } } }, - "com.amazonaws.iotwireless#CreateWirelessDevice": { + "com.amazonaws.iotwireless#CreateMulticastGroup": { "type": "operation", "input": { - "target": "com.amazonaws.iotwireless#CreateWirelessDeviceRequest" + "target": "com.amazonaws.iotwireless#CreateMulticastGroupRequest" }, "output": { - "target": "com.amazonaws.iotwireless#CreateWirelessDeviceResponse" + "target": "com.amazonaws.iotwireless#CreateMulticastGroupResponse" }, "errors": [ { @@ -856,37 +1089,196 @@ } ], "traits": { - "smithy.api#documentation": "

Provisions a wireless device.

", + "smithy.api#documentation": "

Creates a multicast group.

", "smithy.api#http": { "method": "POST", - "uri": "/wireless-devices", + "uri": "/multicast-groups", "code": 201 } } }, - "com.amazonaws.iotwireless#CreateWirelessDeviceRequest": { + "com.amazonaws.iotwireless#CreateMulticastGroupRequest": { "type": "structure", "members": { - "Type": { - "target": "com.amazonaws.iotwireless#WirelessDeviceType", - "traits": { - "smithy.api#documentation": "

The wireless device type.

", - "smithy.api#required": {} - } - }, "Name": { - "target": "com.amazonaws.iotwireless#WirelessDeviceName", - "traits": { - "smithy.api#documentation": "

The name of the new resource.

" - } + "target": "com.amazonaws.iotwireless#MulticastGroupName" }, "Description": { "target": "com.amazonaws.iotwireless#Description", "traits": { - "smithy.api#documentation": "

The description of the new resource.

" + "smithy.api#documentation": "

The description of the multicast group.

" } }, - "DestinationName": { + "ClientRequestToken": { + "target": "com.amazonaws.iotwireless#ClientRequestToken", + "traits": { + "smithy.api#documentation": "

Each resource must have a unique client request token. If you try to create a new resource with the\n same token as a resource that already exists, an exception occurs. If you omit this value,\n AWS SDKs will automatically generate a unique client request.

", + "smithy.api#idempotencyToken": {} + } + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticast", + "traits": { + "smithy.api#required": {} + } + }, + "Tags": { + "target": "com.amazonaws.iotwireless#TagList" + } + } + }, + "com.amazonaws.iotwireless#CreateMulticastGroupResponse": { + "type": "structure", + "members": { + "Arn": { + "target": "com.amazonaws.iotwireless#MulticastGroupArn" + }, + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId" + } + } + }, + "com.amazonaws.iotwireless#CreateServiceProfile": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#CreateServiceProfileRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#CreateServiceProfileResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a new service profile.

", + "smithy.api#http": { + "method": "POST", + "uri": "/service-profiles", + "code": 201 + } + } + }, + "com.amazonaws.iotwireless#CreateServiceProfileRequest": { + "type": "structure", + "members": { + "Name": { + "target": "com.amazonaws.iotwireless#ServiceProfileName", + "traits": { + "smithy.api#documentation": "

The name of the new resource.

" + } + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANServiceProfile", + "traits": { + "smithy.api#documentation": "

The service profile information to use to create the service profile.

" + } + }, + "Tags": { + "target": "com.amazonaws.iotwireless#TagList", + "traits": { + "smithy.api#documentation": "

The tags to attach to the new service profile. Tags are metadata that you can use to manage a resource.

" + } + }, + "ClientRequestToken": { + "target": "com.amazonaws.iotwireless#ClientRequestToken", + "traits": { + "smithy.api#documentation": "

Each resource must have a unique client request token. If you try to create a new resource with the same token as a resource that already exists, an exception occurs. If you omit this value, AWS SDKs will automatically generate a unique client request.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.iotwireless#CreateServiceProfileResponse": { + "type": "structure", + "members": { + "Arn": { + "target": "com.amazonaws.iotwireless#ServiceProfileArn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name of the new resource.

" + } + }, + "Id": { + "target": "com.amazonaws.iotwireless#ServiceProfileId", + "traits": { + "smithy.api#documentation": "

The ID of the new service profile.

" + } + } + } + }, + "com.amazonaws.iotwireless#CreateWirelessDevice": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#CreateWirelessDeviceRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#CreateWirelessDeviceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Provisions a wireless device.

", + "smithy.api#http": { + "method": "POST", + "uri": "/wireless-devices", + "code": 201 + } + } + }, + "com.amazonaws.iotwireless#CreateWirelessDeviceRequest": { + "type": "structure", + "members": { + "Type": { + "target": "com.amazonaws.iotwireless#WirelessDeviceType", + "traits": { + "smithy.api#documentation": "

The wireless device type.

", + "smithy.api#required": {} + } + }, + "Name": { + "target": "com.amazonaws.iotwireless#WirelessDeviceName", + "traits": { + "smithy.api#documentation": "

The name of the new resource.

" + } + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description", + "traits": { + "smithy.api#documentation": "

The description of the new resource.

" + } + }, + "DestinationName": { "target": "com.amazonaws.iotwireless#DestinationName", "traits": { "smithy.api#documentation": "

The name of the destination to assign to the new wireless device.

", @@ -1184,6 +1576,12 @@ } } }, + "com.amazonaws.iotwireless#CreatedAt": { + "type": "timestamp", + "traits": { + "smithy.api#documentation": "

Created at timestamp for the resource.

" + } + }, "com.amazonaws.iotwireless#DeleteDestination": { "type": "operation", "input": { @@ -1292,6 +1690,109 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#DeleteFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#DeleteFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#DeleteFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes a FUOTA task.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/fuota-tasks/{Id}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#DeleteFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#DeleteFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#DeleteMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#DeleteMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#DeleteMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes a multicast group if it is not in use by a fuota task.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/multicast-groups/{Id}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#DeleteMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#DeleteMulticastGroupResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#DeleteServiceProfile": { "type": "operation", "input": { @@ -1553,6 +2054,7 @@ "com.amazonaws.iotwireless#Description": { "type": "string", "traits": { + "smithy.api#documentation": "

The description of the new resource.

", "smithy.api#length": { "min": 0, "max": 2048 @@ -1706,8 +2208,22 @@ } } }, - "com.amazonaws.iotwireless#DeviceState": { - "type": "string", + "com.amazonaws.iotwireless#DeviceRegistrationStateEventConfiguration": { + "type": "structure", + "members": { + "Sidewalk": { + "target": "com.amazonaws.iotwireless#SidewalkEventNotificationConfigurations", + "traits": { + "smithy.api#documentation": "

Device registration state event configuration object for enabling or disabling Sidewalk related event\n topics.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Device registration state event configuration object for enabling and disabling relevant topics.

" + } + }, + "com.amazonaws.iotwireless#DeviceState": { + "type": "string", "traits": { "smithy.api#documentation": "

Device state defines the device status of sidewalk device.

", "smithy.api#enum": [ @@ -1786,6 +2302,180 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Disassociates a multicast group from a fuota task.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/fuota-tasks/{Id}/multicast-groups/{MulticastGroupId}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "MulticastGroupId": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Disassociates a wireless device from a FUOTA task.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/fuota-tasks/{Id}/wireless-devices/{WirelessDeviceId}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "WirelessDeviceId": { + "target": "com.amazonaws.iotwireless#WirelessDeviceId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Disassociates a wireless device from a multicast group.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/multicast-groups/{Id}/wireless-devices/{WirelessDeviceId}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "WirelessDeviceId": { + "target": "com.amazonaws.iotwireless#WirelessDeviceId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroupResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromThing": { "type": "operation", "input": { @@ -1955,6 +2645,48 @@ } } }, + "com.amazonaws.iotwireless#DlClass": { + "type": "string", + "traits": { + "smithy.api#documentation": "

DlClass for LoRaWAM, valid values are ClassB and ClassC.

", + "smithy.api#enum": [ + { + "value": "ClassB", + "name": "ClassB" + }, + { + "value": "ClassC", + "name": "ClassC" + } + ], + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#DlDr": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

Downlink data rate.

", + "smithy.api#range": { + "min": 0, + "max": 15 + } + } + }, + "com.amazonaws.iotwireless#DlFreq": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

Downlink frequency.

", + "smithy.api#range": { + "min": 100000000, + "max": 1000000000 + } + } + }, "com.amazonaws.iotwireless#DlRate": { "type": "integer", "traits": { @@ -2035,6 +2767,32 @@ ] } }, + "com.amazonaws.iotwireless#EventNotificationPartnerType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Sidewalk", + "name": "Sidewalk" + } + ] + } + }, + "com.amazonaws.iotwireless#EventNotificationTopicStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Enabled", + "name": "Enabled" + }, + { + "value": "Disabled", + "name": "Disabled" + } + ] + } + }, "com.amazonaws.iotwireless#Expression": { "type": "string", "traits": { @@ -2069,12 +2827,30 @@ "type": "integer", "traits": { "smithy.api#box": {}, + "smithy.api#documentation": "

The Fport value.

", "smithy.api#range": { "min": 1, "max": 223 } } }, + "com.amazonaws.iotwireless#FPorts": { + "type": "structure", + "members": { + "Fuota": { + "target": "com.amazonaws.iotwireless#FPort" + }, + "Multicast": { + "target": "com.amazonaws.iotwireless#FPort" + }, + "ClockSync": { + "target": "com.amazonaws.iotwireless#FPort" + } + }, + "traits": { + "smithy.api#documentation": "

List of FPort assigned for different LoRaWAN application packages to use

" + } + }, "com.amazonaws.iotwireless#FactoryPresetFreqsList": { "type": "list", "member": { @@ -2098,37 +2874,199 @@ "smithy.api#sensitive": {} } }, - "com.amazonaws.iotwireless#GatewayEui": { + "com.amazonaws.iotwireless#FirmwareUpdateImage": { "type": "string", "traits": { - "smithy.api#pattern": "^(([0-9A-Fa-f]{2}-){7}|([0-9A-Fa-f]{2}:){7}|([0-9A-Fa-f]{2}\\s){7}|([0-9A-Fa-f]{2}){7})([0-9A-Fa-f]{2})$" + "smithy.api#documentation": "

The S3 URI points to a firmware update image that is to be used with a FUOTA task.

", + "smithy.api#length": { + "min": 1, + "max": 4096 + } } }, - "com.amazonaws.iotwireless#GetDestination": { - "type": "operation", - "input": { - "target": "com.amazonaws.iotwireless#GetDestinationRequest" - }, - "output": { - "target": "com.amazonaws.iotwireless#GetDestinationResponse" - }, - "errors": [ - { - "target": "com.amazonaws.iotwireless#AccessDeniedException" - }, - { - "target": "com.amazonaws.iotwireless#InternalServerException" - }, - { - "target": "com.amazonaws.iotwireless#ResourceNotFoundException" - }, - { - "target": "com.amazonaws.iotwireless#ThrottlingException" - }, - { - "target": "com.amazonaws.iotwireless#ValidationException" + "com.amazonaws.iotwireless#FirmwareUpdateRole": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The firmware update role that is to be used with a FUOTA task.

", + "smithy.api#length": { + "min": 1, + "max": 2048 } - ], + } + }, + "com.amazonaws.iotwireless#FuotaDeviceStatus": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The status of a wireless device in a FUOTA task.

", + "smithy.api#enum": [ + { + "value": "Initial", + "name": "Initial" + }, + { + "value": "Package_Not_Supported", + "name": "Package_Not_Supported" + }, + { + "value": "FragAlgo_unsupported", + "name": "FragAlgo_unsupported" + }, + { + "value": "Not_enough_memory", + "name": "Not_enough_memory" + }, + { + "value": "FragIndex_unsupported", + "name": "FragIndex_unsupported" + }, + { + "value": "Wrong_descriptor", + "name": "Wrong_descriptor" + }, + { + "value": "SessionCnt_replay", + "name": "SessionCnt_replay" + }, + { + "value": "MissingFrag", + "name": "MissingFrag" + }, + { + "value": "MemoryError", + "name": "MemoryError" + }, + { + "value": "MICError", + "name": "MICError" + }, + { + "value": "Successful", + "name": "Successful" + } + ] + } + }, + "com.amazonaws.iotwireless#FuotaTask": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId" + }, + "Arn": { + "target": "com.amazonaws.iotwireless#FuotaTaskArn" + }, + "Name": { + "target": "com.amazonaws.iotwireless#FuotaTaskName" + } + }, + "traits": { + "smithy.api#documentation": "

A FUOTA task.

" + } + }, + "com.amazonaws.iotwireless#FuotaTaskArn": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The arn of a FUOTA task.

", + "smithy.api#length": { + "min": 0, + "max": 128 + } + } + }, + "com.amazonaws.iotwireless#FuotaTaskId": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The ID of a FUOTA task.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#FuotaTaskList": { + "type": "list", + "member": { + "target": "com.amazonaws.iotwireless#FuotaTask" + }, + "traits": { + "smithy.api#documentation": "

Lists the FUOTA tasks registered to your AWS account.

" + } + }, + "com.amazonaws.iotwireless#FuotaTaskName": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The name of a FUOTA task.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#FuotaTaskStatus": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The status of a FUOTA task.

", + "smithy.api#enum": [ + { + "value": "Pending", + "name": "Pending" + }, + { + "value": "FuotaSession_Waiting", + "name": "FuotaSession_Waiting" + }, + { + "value": "In_FuotaSession", + "name": "In_FuotaSession" + }, + { + "value": "FuotaDone", + "name": "FuotaDone" + }, + { + "value": "Delete_Waiting", + "name": "Delete_Waiting" + } + ] + } + }, + "com.amazonaws.iotwireless#GatewayEui": { + "type": "string", + "traits": { + "smithy.api#pattern": "^(([0-9A-Fa-f]{2}-){7}|([0-9A-Fa-f]{2}:){7}|([0-9A-Fa-f]{2}\\s){7}|([0-9A-Fa-f]{2}){7})([0-9A-Fa-f]{2})$" + } + }, + "com.amazonaws.iotwireless#GenAppKey": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[a-fA-F0-9]{32}$" + } + }, + "com.amazonaws.iotwireless#GetDestination": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#GetDestinationRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#GetDestinationResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], "traits": { "smithy.api#documentation": "

Gets information about a destination.

", "smithy.api#http": { @@ -2268,6 +3206,84 @@ } } }, + "com.amazonaws.iotwireless#GetFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#GetFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#GetFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets information about a FUOTA task.

", + "smithy.api#http": { + "method": "GET", + "uri": "/fuota-tasks/{Id}", + "code": 200 + } + } + }, + "com.amazonaws.iotwireless#GetFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#GetFuotaTaskResponse": { + "type": "structure", + "members": { + "Arn": { + "target": "com.amazonaws.iotwireless#FuotaTaskArn" + }, + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId" + }, + "Status": { + "target": "com.amazonaws.iotwireless#FuotaTaskStatus" + }, + "Name": { + "target": "com.amazonaws.iotwireless#FuotaTaskName" + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description" + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANFuotaTaskGetInfo" + }, + "FirmwareUpdateImage": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateImage" + }, + "FirmwareUpdateRole": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateRole" + }, + "CreatedAt": { + "target": "com.amazonaws.iotwireless#CreatedAt" + } + } + }, "com.amazonaws.iotwireless#GetLogLevelsByResourceTypes": { "type": "operation", "input": { @@ -2302,33 +3318,231 @@ } } }, - "com.amazonaws.iotwireless#GetLogLevelsByResourceTypesRequest": { - "type": "structure", - "members": {} - }, - "com.amazonaws.iotwireless#GetLogLevelsByResourceTypesResponse": { + "com.amazonaws.iotwireless#GetLogLevelsByResourceTypesRequest": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#GetLogLevelsByResourceTypesResponse": { + "type": "structure", + "members": { + "DefaultLogLevel": { + "target": "com.amazonaws.iotwireless#LogLevel" + }, + "WirelessGatewayLogOptions": { + "target": "com.amazonaws.iotwireless#WirelessGatewayLogOptionList" + }, + "WirelessDeviceLogOptions": { + "target": "com.amazonaws.iotwireless#WirelessDeviceLogOptionList" + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#GetMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#GetMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets information about a multicast group.

", + "smithy.api#http": { + "method": "GET", + "uri": "/multicast-groups/{Id}", + "code": 200 + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroupResponse": { + "type": "structure", + "members": { + "Arn": { + "target": "com.amazonaws.iotwireless#MulticastGroupArn" + }, + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId" + }, + "Name": { + "target": "com.amazonaws.iotwireless#MulticastGroupName" + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description" + }, + "Status": { + "target": "com.amazonaws.iotwireless#MulticastGroupStatus" + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticastGet" + }, + "CreatedAt": { + "target": "com.amazonaws.iotwireless#CreatedAt" + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroupSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#GetMulticastGroupSessionRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#GetMulticastGroupSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets information about a multicast group session.

", + "smithy.api#http": { + "method": "GET", + "uri": "/multicast-groups/{Id}/session", + "code": 200 + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroupSessionRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#GetMulticastGroupSessionResponse": { + "type": "structure", + "members": { + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticastSession" + } + } + }, + "com.amazonaws.iotwireless#GetPartnerAccount": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#GetPartnerAccountRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#GetPartnerAccountResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets information about a partner account. If PartnerAccountId and PartnerType are null, returns all partner accounts.

", + "smithy.api#http": { + "method": "GET", + "uri": "/partner-accounts/{PartnerAccountId}", + "code": 200 + } + } + }, + "com.amazonaws.iotwireless#GetPartnerAccountRequest": { + "type": "structure", + "members": { + "PartnerAccountId": { + "target": "com.amazonaws.iotwireless#PartnerAccountId", + "traits": { + "smithy.api#documentation": "

The partner account ID to disassociate from the AWS account.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "PartnerType": { + "target": "com.amazonaws.iotwireless#PartnerType", + "traits": { + "smithy.api#documentation": "

The partner type.

", + "smithy.api#httpQuery": "partnerType", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.iotwireless#GetPartnerAccountResponse": { "type": "structure", "members": { - "DefaultLogLevel": { - "target": "com.amazonaws.iotwireless#LogLevel" - }, - "WirelessGatewayLogOptions": { - "target": "com.amazonaws.iotwireless#WirelessGatewayLogOptionList" + "Sidewalk": { + "target": "com.amazonaws.iotwireless#SidewalkAccountInfoWithFingerprint", + "traits": { + "smithy.api#documentation": "

The Sidewalk account credentials.

" + } }, - "WirelessDeviceLogOptions": { - "target": "com.amazonaws.iotwireless#WirelessDeviceLogOptionList" + "AccountLinked": { + "target": "com.amazonaws.iotwireless#AccountLinked", + "traits": { + "smithy.api#documentation": "

Whether the partner account is linked to the AWS account.

" + } } } }, - "com.amazonaws.iotwireless#GetPartnerAccount": { + "com.amazonaws.iotwireless#GetResourceEventConfiguration": { "type": "operation", "input": { - "target": "com.amazonaws.iotwireless#GetPartnerAccountRequest" + "target": "com.amazonaws.iotwireless#GetResourceEventConfigurationRequest" }, "output": { - "target": "com.amazonaws.iotwireless#GetPartnerAccountResponse" + "target": "com.amazonaws.iotwireless#GetResourceEventConfigurationResponse" }, "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, { "target": "com.amazonaws.iotwireless#InternalServerException" }, @@ -2343,48 +3557,55 @@ } ], "traits": { - "smithy.api#documentation": "

Gets information about a partner account. If PartnerAccountId and PartnerType are null, returns all partner accounts.

", + "smithy.api#documentation": "

Get the event configuration for a particular resource identifier.

", "smithy.api#http": { "method": "GET", - "uri": "/partner-accounts/{PartnerAccountId}", + "uri": "/event-configurations/{Identifier}", "code": 200 } } }, - "com.amazonaws.iotwireless#GetPartnerAccountRequest": { + "com.amazonaws.iotwireless#GetResourceEventConfigurationRequest": { "type": "structure", "members": { - "PartnerAccountId": { - "target": "com.amazonaws.iotwireless#PartnerAccountId", + "Identifier": { + "target": "com.amazonaws.iotwireless#Identifier", "traits": { - "smithy.api#documentation": "

The partner account ID to disassociate from the AWS account.

", + "smithy.api#documentation": "

Resource identifier to opt in for event messaging.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, - "PartnerType": { - "target": "com.amazonaws.iotwireless#PartnerType", + "IdentifierType": { + "target": "com.amazonaws.iotwireless#IdentifierType", "traits": { - "smithy.api#documentation": "

The partner type.

", - "smithy.api#httpQuery": "partnerType", + "smithy.api#documentation": "

Identifier type of the particular resource identifier for event configuration.

", + "smithy.api#httpQuery": "identifierType", "smithy.api#required": {} } + }, + "PartnerType": { + "target": "com.amazonaws.iotwireless#EventNotificationPartnerType", + "traits": { + "smithy.api#documentation": "

Partner type of the resource if the identifier type is PartnerAccountId.

", + "smithy.api#httpQuery": "partnerType" + } } } }, - "com.amazonaws.iotwireless#GetPartnerAccountResponse": { + "com.amazonaws.iotwireless#GetResourceEventConfigurationResponse": { "type": "structure", "members": { - "Sidewalk": { - "target": "com.amazonaws.iotwireless#SidewalkAccountInfoWithFingerprint", + "DeviceRegistrationState": { + "target": "com.amazonaws.iotwireless#DeviceRegistrationStateEventConfiguration", "traits": { - "smithy.api#documentation": "

The Sidewalk account credentials.

" + "smithy.api#documentation": "

Event configuration for the device registration state event

" } }, - "AccountLinked": { - "target": "com.amazonaws.iotwireless#AccountLinked", + "Proximity": { + "target": "com.amazonaws.iotwireless#ProximityEventConfiguration", "traits": { - "smithy.api#documentation": "

Whether the partner account is linked to the AWS account.

" + "smithy.api#documentation": "

Event configuration for the Proximity event

" } } } @@ -3259,6 +4480,17 @@ } } }, + "com.amazonaws.iotwireless#IdentifierType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "PartnerAccountId", + "name": "PartnerAccountId" + } + ] + } + }, "com.amazonaws.iotwireless#Integer": { "type": "integer", "traits": { @@ -3427,7 +4659,225 @@ } } }, - "com.amazonaws.iotwireless#ListDeviceProfilesRequest": { + "com.amazonaws.iotwireless#ListDeviceProfilesRequest": { + "type": "structure", + "members": { + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "MaxResults": { + "target": "com.amazonaws.iotwireless#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to return in this operation.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.iotwireless#ListDeviceProfilesResponse": { + "type": "structure", + "members": { + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

The token to use to get the next set of results, or null if there are no additional results.

" + } + }, + "DeviceProfileList": { + "target": "com.amazonaws.iotwireless#DeviceProfileList", + "traits": { + "smithy.api#documentation": "

The list of device profiles.

" + } + } + } + }, + "com.amazonaws.iotwireless#ListFuotaTasks": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#ListFuotaTasksRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#ListFuotaTasksResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the FUOTA tasks registered to your AWS account.

", + "smithy.api#http": { + "method": "GET", + "uri": "/fuota-tasks", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.iotwireless#ListFuotaTasksRequest": { + "type": "structure", + "members": { + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "MaxResults": { + "target": "com.amazonaws.iotwireless#MaxResults", + "traits": { + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.iotwireless#ListFuotaTasksResponse": { + "type": "structure", + "members": { + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

" + } + }, + "FuotaTaskList": { + "target": "com.amazonaws.iotwireless#FuotaTaskList" + } + } + }, + "com.amazonaws.iotwireless#ListMulticastGroups": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#ListMulticastGroupsRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#ListMulticastGroupsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the multicast groups registered to your AWS account.

", + "smithy.api#http": { + "method": "GET", + "uri": "/multicast-groups", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

List all multicast groups associated with a fuota task.

", + "smithy.api#http": { + "method": "GET", + "uri": "/fuota-tasks/{Id}/multicast-groups", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "MaxResults": { + "target": "com.amazonaws.iotwireless#MaxResults", + "traits": { + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTaskResponse": { + "type": "structure", + "members": { + "NextToken": { + "target": "com.amazonaws.iotwireless#NextToken", + "traits": { + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

" + } + }, + "MulticastGroupList": { + "target": "com.amazonaws.iotwireless#MulticastGroupListByFuotaTask" + } + } + }, + "com.amazonaws.iotwireless#ListMulticastGroupsRequest": { "type": "structure", "members": { "NextToken": { @@ -3440,26 +4890,22 @@ "MaxResults": { "target": "com.amazonaws.iotwireless#MaxResults", "traits": { - "smithy.api#documentation": "

The maximum number of results to return in this operation.

", "smithy.api#httpQuery": "maxResults" } } } }, - "com.amazonaws.iotwireless#ListDeviceProfilesResponse": { + "com.amazonaws.iotwireless#ListMulticastGroupsResponse": { "type": "structure", "members": { "NextToken": { "target": "com.amazonaws.iotwireless#NextToken", "traits": { - "smithy.api#documentation": "

The token to use to get the next set of results, or null if there are no additional results.

" + "smithy.api#documentation": "

To retrieve the next set of results, the nextToken value from a previous response; otherwise null to receive the first set of results.

" } }, - "DeviceProfileList": { - "target": "com.amazonaws.iotwireless#DeviceProfileList", - "traits": { - "smithy.api#documentation": "

The list of device profiles.

" - } + "MulticastGroupList": { + "target": "com.amazonaws.iotwireless#MulticastGroupList" } } }, @@ -3740,6 +5186,18 @@ "smithy.api#documentation": "

A filter to list only the wireless devices that use this wireless device type.

", "smithy.api#httpQuery": "wirelessDeviceType" } + }, + "FuotaTaskId": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpQuery": "fuotaTaskId" + } + }, + "MulticastGroupId": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpQuery": "multicastGroupId" + } } } }, @@ -3950,6 +5408,9 @@ "traits": { "smithy.api#documentation": "

LoRaWAN object for create APIs

" } + }, + "FPorts": { + "target": "com.amazonaws.iotwireless#FPorts" } }, "traits": { @@ -4122,6 +5583,31 @@ "smithy.api#documentation": "

LoRaWANDeviceProfile object.

" } }, + "com.amazonaws.iotwireless#LoRaWANFuotaTask": { + "type": "structure", + "members": { + "RfRegion": { + "target": "com.amazonaws.iotwireless#SupportedRfRegion" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information used with a FUOTA task.

" + } + }, + "com.amazonaws.iotwireless#LoRaWANFuotaTaskGetInfo": { + "type": "structure", + "members": { + "RfRegion": { + "target": "com.amazonaws.iotwireless#RfRegion" + }, + "StartTime": { + "target": "com.amazonaws.iotwireless#StartTime" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information returned from getting a FUOTA task.

" + } + }, "com.amazonaws.iotwireless#LoRaWANGateway": { "type": "structure", "members": { @@ -4359,14 +5845,76 @@ "smithy.api#documentation": "

LoRaWAN object for list functions.

" } }, + "com.amazonaws.iotwireless#LoRaWANMulticast": { + "type": "structure", + "members": { + "RfRegion": { + "target": "com.amazonaws.iotwireless#SupportedRfRegion" + }, + "DlClass": { + "target": "com.amazonaws.iotwireless#DlClass" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information that is to be used with the multicast group.

" + } + }, + "com.amazonaws.iotwireless#LoRaWANMulticastGet": { + "type": "structure", + "members": { + "RfRegion": { + "target": "com.amazonaws.iotwireless#SupportedRfRegion" + }, + "DlClass": { + "target": "com.amazonaws.iotwireless#DlClass" + }, + "NumberOfDevicesRequested": { + "target": "com.amazonaws.iotwireless#NumberOfDevicesRequested" + }, + "NumberOfDevicesInGroup": { + "target": "com.amazonaws.iotwireless#NumberOfDevicesInGroup" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information that is to be returned from getting multicast group information.

" + } + }, + "com.amazonaws.iotwireless#LoRaWANMulticastMetadata": { + "type": "structure", + "members": { + "FPort": { + "target": "com.amazonaws.iotwireless#FPort" + } + }, + "traits": { + "smithy.api#documentation": "

The metadata information of the LoRaWAN multicast group.

" + } + }, + "com.amazonaws.iotwireless#LoRaWANMulticastSession": { + "type": "structure", + "members": { + "DlDr": { + "target": "com.amazonaws.iotwireless#DlDr" + }, + "DlFreq": { + "target": "com.amazonaws.iotwireless#DlFreq" + }, + "SessionStartTime": { + "target": "com.amazonaws.iotwireless#SessionStartTimeTimestamp" + }, + "SessionTimeout": { + "target": "com.amazonaws.iotwireless#SessionTimeout" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information used with the multicast session.

" + } + }, "com.amazonaws.iotwireless#LoRaWANSendDataToDevice": { "type": "structure", "members": { "FPort": { - "target": "com.amazonaws.iotwireless#FPort", - "traits": { - "smithy.api#documentation": "

The Fport value.

" - } + "target": "com.amazonaws.iotwireless#FPort" } }, "traits": { @@ -4387,6 +5935,17 @@ "smithy.api#documentation": "

LoRaWANServiceProfile object.

" } }, + "com.amazonaws.iotwireless#LoRaWANStartFuotaTask": { + "type": "structure", + "members": { + "StartTime": { + "target": "com.amazonaws.iotwireless#StartTime" + } + }, + "traits": { + "smithy.api#documentation": "

The LoRaWAN information used to start a FUOTA task.

" + } + }, "com.amazonaws.iotwireless#LoRaWANUpdateDevice": { "type": "structure", "members": { @@ -4511,12 +6070,24 @@ "com.amazonaws.iotwireless#MaxResults": { "type": "integer", "traits": { + "smithy.api#documentation": "

The maximum number of results to return in this operation.

", "smithy.api#range": { "min": 0, "max": 250 } } }, + "com.amazonaws.iotwireless#McGroupId": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

Id of the multicast group.

", + "smithy.api#range": { + "min": 1, + "max": 256 + } + } + }, "com.amazonaws.iotwireless#Message": { "type": "string", "traits": { @@ -4572,6 +6143,122 @@ } } }, + "com.amazonaws.iotwireless#MulticastDeviceStatus": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#MulticastGroup": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId" + }, + "Arn": { + "target": "com.amazonaws.iotwireless#MulticastGroupArn" + }, + "Name": { + "target": "com.amazonaws.iotwireless#MulticastGroupName" + } + }, + "traits": { + "smithy.api#documentation": "

A multicast group.

" + } + }, + "com.amazonaws.iotwireless#MulticastGroupArn": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The arn of the multicast group.

", + "smithy.api#length": { + "min": 0, + "max": 128 + } + } + }, + "com.amazonaws.iotwireless#MulticastGroupByFuotaTask": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId" + } + }, + "traits": { + "smithy.api#documentation": "

A multicast group that is associated with a FUOTA task.

" + } + }, + "com.amazonaws.iotwireless#MulticastGroupId": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The ID of the multicast group.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#MulticastGroupList": { + "type": "list", + "member": { + "target": "com.amazonaws.iotwireless#MulticastGroup" + }, + "traits": { + "smithy.api#documentation": "

List of multicast groups.

" + } + }, + "com.amazonaws.iotwireless#MulticastGroupListByFuotaTask": { + "type": "list", + "member": { + "target": "com.amazonaws.iotwireless#MulticastGroupByFuotaTask" + }, + "traits": { + "smithy.api#documentation": "

List of multicast groups associated with a FUOTA task.

" + } + }, + "com.amazonaws.iotwireless#MulticastGroupMessageId": { + "type": "string", + "traits": { + "smithy.api#documentation": "

ID of a multicast group message.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#MulticastGroupName": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The name of the multicast group.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#MulticastGroupStatus": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The status of the multicast group.

", + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.iotwireless#MulticastWirelessMetadata": { + "type": "structure", + "members": { + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticastMetadata" + } + }, + "traits": { + "smithy.api#documentation": "

Wireless metadata that is to be sent to multicast group.

" + } + }, "com.amazonaws.iotwireless#NetId": { "type": "string", "traits": { @@ -4601,6 +6288,20 @@ } } }, + "com.amazonaws.iotwireless#NumberOfDevicesInGroup": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

Number of devices that are associated to the multicast group.

" + } + }, + "com.amazonaws.iotwireless#NumberOfDevicesRequested": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

Number of devices that are requested to be associated with the multicast group.

" + } + }, "com.amazonaws.iotwireless#NwkGeoLoc": { "type": "boolean" }, @@ -4636,6 +6337,12 @@ "traits": { "smithy.api#documentation": "

The AppEUI value.

" } + }, + "GenAppKey": { + "target": "com.amazonaws.iotwireless#GenAppKey", + "traits": { + "smithy.api#documentation": "

The GenAppKey value.

" + } } }, "traits": { @@ -4703,6 +6410,7 @@ "com.amazonaws.iotwireless#PayloadData": { "type": "string", "traits": { + "smithy.api#documentation": "

The binary to be sent to the end device, encoded in base64.

", "smithy.api#length": { "min": 0, "max": 2048 @@ -4752,6 +6460,20 @@ } } }, + "com.amazonaws.iotwireless#ProximityEventConfiguration": { + "type": "structure", + "members": { + "Sidewalk": { + "target": "com.amazonaws.iotwireless#SidewalkEventNotificationConfigurations", + "traits": { + "smithy.api#documentation": "

Proximity event configuration object for enabling or disabling Sidewalk related event topics.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Proximity event configuration object for enabling and disabling relevant topics.

" + } + }, "com.amazonaws.iotwireless#PutResourceLogLevel": { "type": "operation", "input": { @@ -4816,6 +6538,16 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#QueryString": { + "type": "string", + "traits": { + "smithy.api#documentation": "

Query string used to search for wireless devices as part of the bulk associate and disassociate process.

", + "smithy.api#length": { + "min": 0, + "max": 4096 + } + } + }, "com.amazonaws.iotwireless#RaAllowed": { "type": "boolean" }, @@ -4987,6 +6719,7 @@ "com.amazonaws.iotwireless#RfRegion": { "type": "string", "traits": { + "smithy.api#documentation": "

The frequency band (RFRegion) value.

", "smithy.api#length": { "min": 0, "max": 64 @@ -5032,20 +6765,89 @@ } } }, - "com.amazonaws.iotwireless#RxFreq2": { - "type": "integer", - "traits": { - "smithy.api#box": {}, - "smithy.api#range": { - "min": 1000000, - "max": 16700000 + "com.amazonaws.iotwireless#RxFreq2": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#range": { + "min": 1000000, + "max": 16700000 + } + } + }, + "com.amazonaws.iotwireless#SNwkSIntKey": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[a-fA-F0-9]{32}$" + } + }, + "com.amazonaws.iotwireless#SendDataToMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#SendDataToMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#SendDataToMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Sends the specified data to a multicast group.

", + "smithy.api#http": { + "method": "POST", + "uri": "/multicast-groups/{Id}/data", + "code": 201 + } + } + }, + "com.amazonaws.iotwireless#SendDataToMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "PayloadData": { + "target": "com.amazonaws.iotwireless#PayloadData", + "traits": { + "smithy.api#required": {} + } + }, + "WirelessMetadata": { + "target": "com.amazonaws.iotwireless#MulticastWirelessMetadata", + "traits": { + "smithy.api#required": {} + } } } }, - "com.amazonaws.iotwireless#SNwkSIntKey": { - "type": "string", - "traits": { - "smithy.api#pattern": "^[a-fA-F0-9]{32}$" + "com.amazonaws.iotwireless#SendDataToMulticastGroupResponse": { + "type": "structure", + "members": { + "MessageId": { + "target": "com.amazonaws.iotwireless#MulticastGroupMessageId" + } } }, "com.amazonaws.iotwireless#SendDataToWirelessDevice": { @@ -5100,7 +6902,6 @@ "PayloadData": { "target": "com.amazonaws.iotwireless#PayloadData", "traits": { - "smithy.api#documentation": "

The binary to be sent to the end device, encoded in base64.

", "smithy.api#required": {} } }, @@ -5238,6 +7039,24 @@ "smithy.api#documentation": "

Session keys for ABP v1.1

" } }, + "com.amazonaws.iotwireless#SessionStartTimeTimestamp": { + "type": "timestamp", + "traits": { + "smithy.api#documentation": "

Timestamp of when the multicast group session is to start.

", + "smithy.api#timestampFormat": "date-time" + } + }, + "com.amazonaws.iotwireless#SessionTimeout": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#documentation": "

How long before a multicast group session is to timeout.

", + "smithy.api#range": { + "min": 60, + "max": 172800 + } + } + }, "com.amazonaws.iotwireless#SidewalkAccountInfo": { "type": "structure", "members": { @@ -5351,6 +7170,20 @@ "smithy.api#documentation": "

MetaData for Sidewalk device.

" } }, + "com.amazonaws.iotwireless#SidewalkEventNotificationConfigurations": { + "type": "structure", + "members": { + "AmazonIdEventTopic": { + "target": "com.amazonaws.iotwireless#EventNotificationTopicStatus", + "traits": { + "smithy.api#documentation": "

Enum to denote whether amazon id event topic is enabled or disabled.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

SidewalkEventNotificationConfigurations object\n Event configuration object for Sidewalk related event topics.

" + } + }, "com.amazonaws.iotwireless#SidewalkId": { "type": "string", "traits": { @@ -5428,25 +7261,259 @@ "smithy.api#documentation": "

The new Sidewalk application server private key.

" } } - }, - "traits": { - "smithy.api#documentation": "

Sidewalk update.

" + }, + "traits": { + "smithy.api#documentation": "

Sidewalk update.

" + } + }, + "com.amazonaws.iotwireless#SigningAlg": { + "type": "string", + "traits": { + "smithy.api#documentation": "

The certificate chain algorithm provided by sidewalk.

", + "smithy.api#enum": [ + { + "value": "Ed25519", + "name": "Ed25519" + }, + { + "value": "P256r1", + "name": "P256r1" + } + ] + } + }, + "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Starts a bulk association of all qualifying wireless devices with a multicast group.

", + "smithy.api#http": { + "method": "PATCH", + "uri": "/multicast-groups/{Id}/bulk", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "QueryString": { + "target": "com.amazonaws.iotwireless#QueryString" + }, + "Tags": { + "target": "com.amazonaws.iotwireless#TagList" + } + } + }, + "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroupResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Starts a bulk disassociatin of all qualifying wireless devices from a multicast group.

", + "smithy.api#http": { + "method": "POST", + "uri": "/multicast-groups/{Id}/bulk", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "QueryString": { + "target": "com.amazonaws.iotwireless#QueryString" + }, + "Tags": { + "target": "com.amazonaws.iotwireless#TagList" + } + } + }, + "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroupResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#StartFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#StartFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#StartFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Starts a FUOTA task.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/fuota-tasks/{Id}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#StartFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANStartFuotaTask" + } + } + }, + "com.amazonaws.iotwireless#StartFuotaTaskResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#StartMulticastGroupSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#StartMulticastGroupSessionRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#StartMulticastGroupSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Starts a multicast group session.

", + "smithy.api#http": { + "method": "PUT", + "uri": "/multicast-groups/{Id}/session", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#StartMulticastGroupSessionRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticastSession", + "traits": { + "smithy.api#required": {} + } + } } }, - "com.amazonaws.iotwireless#SigningAlg": { - "type": "string", + "com.amazonaws.iotwireless#StartMulticastGroupSessionResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.iotwireless#StartTime": { + "type": "timestamp", "traits": { - "smithy.api#documentation": "

The certificate chain algorithm provided by sidewalk.

", - "smithy.api#enum": [ - { - "value": "Ed25519", - "name": "Ed25519" - }, - { - "value": "P256r1", - "name": "P256r1" - } - ] + "smithy.api#documentation": "

Start time of a FUOTA task.

", + "smithy.api#timestampFormat": "date-time" } }, "com.amazonaws.iotwireless#Station": { @@ -5481,6 +7548,30 @@ } } }, + "com.amazonaws.iotwireless#SupportedRfRegion": { + "type": "string", + "traits": { + "smithy.api#documentation": "

Supported RfRegions

", + "smithy.api#enum": [ + { + "value": "EU868", + "name": "EU868" + }, + { + "value": "US915", + "name": "US915" + }, + { + "value": "AU915", + "name": "AU915" + }, + { + "value": "AS923-1", + "name": "AS923_1" + } + ] + } + }, "com.amazonaws.iotwireless#Supports32BitFCnt": { "type": "boolean" }, @@ -5545,6 +7636,7 @@ "target": "com.amazonaws.iotwireless#Tag" }, "traits": { + "smithy.api#documentation": "

The tag to attach to the specified resource. Tags are metadata that you can use to manage a resource.

", "smithy.api#length": { "min": 0, "max": 200 @@ -5905,6 +7997,74 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#UpdateFuotaTask": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#UpdateFuotaTaskRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#UpdateFuotaTaskResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Updates properties of a FUOTA task.

", + "smithy.api#http": { + "method": "PATCH", + "uri": "/fuota-tasks/{Id}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#UpdateFuotaTaskRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#FuotaTaskId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "Name": { + "target": "com.amazonaws.iotwireless#FuotaTaskName" + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description" + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANFuotaTask" + }, + "FirmwareUpdateImage": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateImage" + }, + "FirmwareUpdateRole": { + "target": "com.amazonaws.iotwireless#FirmwareUpdateRole" + } + } + }, + "com.amazonaws.iotwireless#UpdateFuotaTaskResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#UpdateLogLevelsByResourceTypes": { "type": "operation", "input": { @@ -5960,6 +8120,68 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#UpdateMulticastGroup": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#UpdateMulticastGroupRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#UpdateMulticastGroupResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Updates properties of a multicast group session.

", + "smithy.api#http": { + "method": "PATCH", + "uri": "/multicast-groups/{Id}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#UpdateMulticastGroupRequest": { + "type": "structure", + "members": { + "Id": { + "target": "com.amazonaws.iotwireless#MulticastGroupId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "Name": { + "target": "com.amazonaws.iotwireless#MulticastGroupName" + }, + "Description": { + "target": "com.amazonaws.iotwireless#Description" + }, + "LoRaWAN": { + "target": "com.amazonaws.iotwireless#LoRaWANMulticast" + } + } + }, + "com.amazonaws.iotwireless#UpdateMulticastGroupResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#UpdatePartnerAccount": { "type": "operation", "input": { @@ -6023,6 +8245,87 @@ "type": "structure", "members": {} }, + "com.amazonaws.iotwireless#UpdateResourceEventConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.iotwireless#UpdateResourceEventConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.iotwireless#UpdateResourceEventConfigurationResponse" + }, + "errors": [ + { + "target": "com.amazonaws.iotwireless#AccessDeniedException" + }, + { + "target": "com.amazonaws.iotwireless#ConflictException" + }, + { + "target": "com.amazonaws.iotwireless#InternalServerException" + }, + { + "target": "com.amazonaws.iotwireless#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.iotwireless#ThrottlingException" + }, + { + "target": "com.amazonaws.iotwireless#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Update the event configuration for a particular resource identifier.

", + "smithy.api#http": { + "method": "PATCH", + "uri": "/event-configurations/{Identifier}", + "code": 204 + } + } + }, + "com.amazonaws.iotwireless#UpdateResourceEventConfigurationRequest": { + "type": "structure", + "members": { + "Identifier": { + "target": "com.amazonaws.iotwireless#Identifier", + "traits": { + "smithy.api#documentation": "

Resource identifier to opt in for event messaging.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "IdentifierType": { + "target": "com.amazonaws.iotwireless#IdentifierType", + "traits": { + "smithy.api#documentation": "

Identifier type of the particular resource identifier for event configuration.

", + "smithy.api#httpQuery": "identifierType", + "smithy.api#required": {} + } + }, + "PartnerType": { + "target": "com.amazonaws.iotwireless#EventNotificationPartnerType", + "traits": { + "smithy.api#documentation": "

Partner type of the resource if the identifier type is PartnerAccountId

", + "smithy.api#httpQuery": "partnerType" + } + }, + "DeviceRegistrationState": { + "target": "com.amazonaws.iotwireless#DeviceRegistrationStateEventConfiguration", + "traits": { + "smithy.api#documentation": "

Event configuration for the device registration state event

" + } + }, + "Proximity": { + "target": "com.amazonaws.iotwireless#ProximityEventConfiguration", + "traits": { + "smithy.api#documentation": "

Event configuration for the Proximity event

" + } + } + } + }, + "com.amazonaws.iotwireless#UpdateResourceEventConfigurationResponse": { + "type": "structure", + "members": {} + }, "com.amazonaws.iotwireless#UpdateSignature": { "type": "string", "traits": { @@ -6304,6 +8607,7 @@ "com.amazonaws.iotwireless#WirelessDeviceId": { "type": "string", "traits": { + "smithy.api#documentation": "

The ID of the wireless device.

", "smithy.api#length": { "min": 0, "max": 256 @@ -6425,6 +8729,18 @@ "traits": { "smithy.api#documentation": "

The Sidewalk account credentials.

" } + }, + "FuotaDeviceStatus": { + "target": "com.amazonaws.iotwireless#FuotaDeviceStatus" + }, + "MulticastDeviceStatus": { + "target": "com.amazonaws.iotwireless#MulticastDeviceStatus", + "traits": { + "smithy.api#documentation": "

The status of the wireless device in the multicast group.

" + } + }, + "McGroupId": { + "target": "com.amazonaws.iotwireless#McGroupId" } }, "traits": { @@ -6743,6 +9059,15 @@ { "target": "com.amazonaws.iotwireless#AssociateAwsAccountWithPartnerAccount" }, + { + "target": "com.amazonaws.iotwireless#AssociateMulticastGroupWithFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#AssociateWirelessDeviceWithThing" }, @@ -6752,12 +9077,21 @@ { "target": "com.amazonaws.iotwireless#AssociateWirelessGatewayWithThing" }, + { + "target": "com.amazonaws.iotwireless#CancelMulticastGroupSession" + }, { "target": "com.amazonaws.iotwireless#CreateDestination" }, { "target": "com.amazonaws.iotwireless#CreateDeviceProfile" }, + { + "target": "com.amazonaws.iotwireless#CreateFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#CreateMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#CreateServiceProfile" }, @@ -6779,6 +9113,12 @@ { "target": "com.amazonaws.iotwireless#DeleteDeviceProfile" }, + { + "target": "com.amazonaws.iotwireless#DeleteFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#DeleteMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#DeleteServiceProfile" }, @@ -6797,6 +9137,15 @@ { "target": "com.amazonaws.iotwireless#DisassociateAwsAccountFromPartnerAccount" }, + { + "target": "com.amazonaws.iotwireless#DisassociateMulticastGroupFromFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#DisassociateWirelessDeviceFromThing" }, @@ -6812,12 +9161,24 @@ { "target": "com.amazonaws.iotwireless#GetDeviceProfile" }, + { + "target": "com.amazonaws.iotwireless#GetFuotaTask" + }, { "target": "com.amazonaws.iotwireless#GetLogLevelsByResourceTypes" }, + { + "target": "com.amazonaws.iotwireless#GetMulticastGroup" + }, + { + "target": "com.amazonaws.iotwireless#GetMulticastGroupSession" + }, { "target": "com.amazonaws.iotwireless#GetPartnerAccount" }, + { + "target": "com.amazonaws.iotwireless#GetResourceEventConfiguration" + }, { "target": "com.amazonaws.iotwireless#GetResourceLogLevel" }, @@ -6857,6 +9218,15 @@ { "target": "com.amazonaws.iotwireless#ListDeviceProfiles" }, + { + "target": "com.amazonaws.iotwireless#ListFuotaTasks" + }, + { + "target": "com.amazonaws.iotwireless#ListMulticastGroups" + }, + { + "target": "com.amazonaws.iotwireless#ListMulticastGroupsByFuotaTask" + }, { "target": "com.amazonaws.iotwireless#ListPartnerAccounts" }, @@ -6884,9 +9254,24 @@ { "target": "com.amazonaws.iotwireless#ResetResourceLogLevel" }, + { + "target": "com.amazonaws.iotwireless#SendDataToMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#SendDataToWirelessDevice" }, + { + "target": "com.amazonaws.iotwireless#StartBulkAssociateWirelessDeviceWithMulticastGroup" + }, + { + "target": "com.amazonaws.iotwireless#StartBulkDisassociateWirelessDeviceFromMulticastGroup" + }, + { + "target": "com.amazonaws.iotwireless#StartFuotaTask" + }, + { + "target": "com.amazonaws.iotwireless#StartMulticastGroupSession" + }, { "target": "com.amazonaws.iotwireless#TagResource" }, @@ -6899,12 +9284,21 @@ { "target": "com.amazonaws.iotwireless#UpdateDestination" }, + { + "target": "com.amazonaws.iotwireless#UpdateFuotaTask" + }, { "target": "com.amazonaws.iotwireless#UpdateLogLevelsByResourceTypes" }, + { + "target": "com.amazonaws.iotwireless#UpdateMulticastGroup" + }, { "target": "com.amazonaws.iotwireless#UpdatePartnerAccount" }, + { + "target": "com.amazonaws.iotwireless#UpdateResourceEventConfiguration" + }, { "target": "com.amazonaws.iotwireless#UpdateWirelessDevice" }, diff --git a/codegen/sdk-codegen/aws-models/resiliencehub.2020-04-30.json b/codegen/sdk-codegen/aws-models/resiliencehub.2020-04-30.json new file mode 100644 index 00000000000..91909f1d1fe --- /dev/null +++ b/codegen/sdk-codegen/aws-models/resiliencehub.2020-04-30.json @@ -0,0 +1,5627 @@ +{ + "smithy": "1.0", + "shapes": { + "com.amazonaws.resiliencehub#AccessDeniedException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + } + }, + "traits": { + "smithy.api#documentation": "

You don't have permissions to perform the requested operation. The user or role that is\n making the request must have at least one IAM permissions policy attached that grants the\n required permissions.

", + "smithy.api#error": "client", + "smithy.api#httpError": 403 + } + }, + "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappings": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappingsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappingsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Adds the resource mapping for the draft application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/add-draft-app-version-resource-mappings", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappingsRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "resourceMappings": { + "target": "com.amazonaws.resiliencehub#ResourceMappingList", + "traits": { + "smithy.api#documentation": "

Mappings used to map logical resources from the template to physical resources. You can\n use the mapping type CFN_STACK if the application template uses\n a logical stack name. Or you can map individual resources by using the mapping type\n RESOURCE. We recommend using the mapping type CFN_STACK if the\n application is backed by a CloudFormation stack.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappingsResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resourceMappings": { + "target": "com.amazonaws.resiliencehub#ResourceMappingList", + "traits": { + "smithy.api#documentation": "

Mappings used to map logical resources from the template to physical resources. You can\n use the mapping type CFN_STACK if the application template uses\n a logical stack name. Or you can map individual resources by using the mapping type\n RESOURCE. We recommend using the mapping type CFN_STACK if the\n application is backed by a CloudFormation stack.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#AlarmRecommendation": { + "type": "structure", + "members": { + "recommendationId": { + "target": "com.amazonaws.resiliencehub#Uuid", + "traits": { + "smithy.api#documentation": "

The identifier of the alarm recommendation.

", + "smithy.api#required": {} + } + }, + "referenceId": { + "target": "com.amazonaws.resiliencehub#SpecReferenceId", + "traits": { + "smithy.api#documentation": "

The reference identifier of the alarm recommendation.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The name of the alarm recommendation.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The description of the recommendation.

" + } + }, + "type": { + "target": "com.amazonaws.resiliencehub#AlarmType", + "traits": { + "smithy.api#documentation": "

The type of alarm recommendation.

", + "smithy.api#required": {} + } + }, + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The application component for the CloudWatch alarm recommendation.

" + } + }, + "items": { + "target": "com.amazonaws.resiliencehub#RecommendationItemList", + "traits": { + "smithy.api#documentation": "

The list of CloudWatch alarm recommendations.

" + } + }, + "prerequisite": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The prerequisite for the alarm recommendation.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a recommendation for a CloudWatch alarm.

" + } + }, + "com.amazonaws.resiliencehub#AlarmRecommendationList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AlarmRecommendation" + } + }, + "com.amazonaws.resiliencehub#AlarmType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Metric", + "name": "METRIC" + }, + { + "value": "Composite", + "name": "COMPOSITE" + }, + { + "value": "Canary", + "name": "CANARY" + }, + { + "value": "Logs", + "name": "LOGS" + }, + { + "value": "Event", + "name": "EVENT" + } + ] + } + }, + "com.amazonaws.resiliencehub#App": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the application.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The optional description for an app.

" + } + }, + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "creationTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for when the app was created.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#AppStatusType", + "traits": { + "smithy.api#documentation": "

The status of the action.

" + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#AppComplianceStatusType", + "traits": { + "smithy.api#documentation": "

The current status of compliance for the resiliency policy.

" + } + }, + "lastAppComplianceEvaluationTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for the most recent compliance evaluation.

" + } + }, + "resiliencyScore": { + "target": "com.amazonaws.resiliencehub#Double", + "traits": { + "smithy.api#documentation": "

The current resiliency score for the application.

" + } + }, + "lastResiliencyScoreEvaluationTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for the most recent resiliency score evaluation.

" + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a Resilience Hub application.

" + } + }, + "com.amazonaws.resiliencehub#AppAssessment": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + }, + "invoker": { + "target": "com.amazonaws.resiliencehub#AssessmentInvoker", + "traits": { + "smithy.api#documentation": "

The entity that invoked the assessment.

", + "smithy.api#required": {} + } + }, + "cost": { + "target": "com.amazonaws.resiliencehub#Cost", + "traits": { + "smithy.api#documentation": "

The cost for the application.

" + } + }, + "resiliencyScore": { + "target": "com.amazonaws.resiliencehub#ResiliencyScore", + "traits": { + "smithy.api#documentation": "

The current resiliency score for the application.

" + } + }, + "compliance": { + "target": "com.amazonaws.resiliencehub#AssessmentCompliance", + "traits": { + "smithy.api#documentation": "

The application compliance against the resiliency policy.

" + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The current status of the compliance for the resiliency policy.

" + } + }, + "assessmentStatus": { + "target": "com.amazonaws.resiliencehub#AssessmentStatus", + "traits": { + "smithy.api#documentation": "

The current status of the assessment for the resiliency policy.

", + "smithy.api#required": {} + } + }, + "startTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The starting time for the action.

" + } + }, + "endTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The end time for the action.

" + } + }, + "message": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

Error or warning message from the assessment execution

" + } + }, + "assessmentName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the assessment.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "policy": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicy", + "traits": { + "smithy.api#documentation": "

The resiliency policy.

" + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines an application assessment.

" + } + }, + "com.amazonaws.resiliencehub#AppAssessmentSummary": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + }, + "assessmentStatus": { + "target": "com.amazonaws.resiliencehub#AssessmentStatus", + "traits": { + "smithy.api#documentation": "

The current status of the assessment for the resiliency policy.

", + "smithy.api#required": {} + } + }, + "invoker": { + "target": "com.amazonaws.resiliencehub#AssessmentInvoker", + "traits": { + "smithy.api#documentation": "

The entity that invoked the assessment.

" + } + }, + "startTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The starting time for the action.

" + } + }, + "endTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The end time for the action.

" + } + }, + "message": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The message from the assessment run.

" + } + }, + "assessmentName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the assessment.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The current status of compliance for the resiliency policy.

" + } + }, + "cost": { + "target": "com.amazonaws.resiliencehub#Cost", + "traits": { + "smithy.api#documentation": "

The cost for the application.

" + } + }, + "resiliencyScore": { + "target": "com.amazonaws.resiliencehub#Double", + "traits": { + "smithy.api#documentation": "

The current resiliency score for the application.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines an application assessment summary.

" + } + }, + "com.amazonaws.resiliencehub#AppAssessmentSummaryList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AppAssessmentSummary" + } + }, + "com.amazonaws.resiliencehub#AppComplianceStatusType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "PolicyBreached", + "name": "POLICY_BREACHED" + }, + { + "value": "PolicyMet", + "name": "POLICY_MET" + }, + { + "value": "NotAssessed", + "name": "NOT_ASSESSED" + }, + { + "value": "ChangesDetected", + "name": "CHANGES_DETECTED" + } + ] + } + }, + "com.amazonaws.resiliencehub#AppComponent": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The name of the application component.

", + "smithy.api#required": {} + } + }, + "type": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The type of application component.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines an application component.

" + } + }, + "com.amazonaws.resiliencehub#AppComponentCompliance": { + "type": "structure", + "members": { + "cost": { + "target": "com.amazonaws.resiliencehub#Cost", + "traits": { + "smithy.api#documentation": "

The cost for the application.

" + } + }, + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The name of the application component.

" + } + }, + "compliance": { + "target": "com.amazonaws.resiliencehub#AssessmentCompliance", + "traits": { + "smithy.api#documentation": "

The compliance of the application component against the resiliency policy.

" + } + }, + "message": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The compliance message.

" + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The status of the action.

" + } + }, + "resiliencyScore": { + "target": "com.amazonaws.resiliencehub#ResiliencyScore", + "traits": { + "smithy.api#documentation": "

The current resiliency score for the application.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines the compliance of an application component against the resiliency policy.

" + } + }, + "com.amazonaws.resiliencehub#AppComponentList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AppComponent" + } + }, + "com.amazonaws.resiliencehub#AppStatusType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Active", + "name": "ACTIVE" + }, + { + "value": "Deleting", + "name": "DELETING" + } + ] + } + }, + "com.amazonaws.resiliencehub#AppSummary": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the application.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The optional description for an app.

" + } + }, + "creationTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for when the app was created.

", + "smithy.api#required": {} + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#AppComplianceStatusType", + "traits": { + "smithy.api#documentation": "

The current status of compliance for the resiliency policy.

" + } + }, + "resiliencyScore": { + "target": "com.amazonaws.resiliencehub#Double", + "traits": { + "smithy.api#documentation": "

The current resiliency score for the application.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines an application summary.

" + } + }, + "com.amazonaws.resiliencehub#AppSummaryList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AppSummary" + } + }, + "com.amazonaws.resiliencehub#AppTemplateBody": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 5000 + }, + "smithy.api#pattern": "^[\\w\\s:,-\\.'{}\\[\\]:\"]+$" + } + }, + "com.amazonaws.resiliencehub#AppVersionList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AppVersionSummary" + } + }, + "com.amazonaws.resiliencehub#AppVersionSummary": { + "type": "structure", + "members": { + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + }, + "com.amazonaws.resiliencehub#Arn": { + "type": "string", + "traits": { + "smithy.api#pattern": "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+=,@.-]{0,1023}$" + } + }, + "com.amazonaws.resiliencehub#ArnList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#Arn" + } + }, + "com.amazonaws.resiliencehub#AssessmentCompliance": { + "type": "map", + "key": { + "target": "com.amazonaws.resiliencehub#DisruptionType" + }, + "value": { + "target": "com.amazonaws.resiliencehub#DisruptionCompliance" + } + }, + "com.amazonaws.resiliencehub#AssessmentInvoker": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "User", + "name": "USER" + }, + { + "value": "System", + "name": "SYSTEM" + } + ] + } + }, + "com.amazonaws.resiliencehub#AssessmentStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Pending", + "name": "PENDING" + }, + { + "value": "InProgress", + "name": "INPROGRESS" + }, + { + "value": "Failed", + "name": "FAILED" + }, + { + "value": "Success", + "name": "SUCCESS" + } + ] + } + }, + "com.amazonaws.resiliencehub#AssessmentStatusList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AssessmentStatus" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 10 + } + } + }, + "com.amazonaws.resiliencehub#AwsRegion": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]$" + } + }, + "com.amazonaws.resiliencehub#AwsResilienceHub": { + "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "resiliencehub", + "arnNamespace": "resiliencehub", + "cloudFormationName": "Resiliencehub", + "cloudTrailEventSource": "resiliencehub.amazonaws.com", + "endpointPrefix": "resiliencehub" + }, + "aws.auth#sigv4": { + "name": "resiliencehub" + }, + "aws.protocols#restJson1": {}, + "smithy.api#cors": { + "additionalAllowedHeaders": [ + "*,authorization,date,x-amz-date,x-amz-security-token,x-amz-target,content-type,x-amz-content-sha256,x-amz-user-agent,x-amzn-platform-id,x-amzn-trace-id,amz-sdk-invocation-id,amz-sdk-request" + ] + }, + "smithy.api#documentation": "

AWS Resilience Hub helps you proactively prepare and protect your Amazon Web Services applications from\n disruptions. Resilience Hub offers continuous resiliency assessment and validation that integrates\n into your software development lifecycle. This enables you to uncover resiliency weaknesses,\n ensure recovery time objective (RTO) and recovery point objective (RPO) targets for your\n applications are met, and resolve issues before they are released into production.

", + "smithy.api#title": "AWS Resilience Hub" + }, + "version": "2020-04-30", + "operations": [ + { + "target": "com.amazonaws.resiliencehub#AddDraftAppVersionResourceMappings" + }, + { + "target": "com.amazonaws.resiliencehub#CreateApp" + }, + { + "target": "com.amazonaws.resiliencehub#CreateRecommendationTemplate" + }, + { + "target": "com.amazonaws.resiliencehub#CreateResiliencyPolicy" + }, + { + "target": "com.amazonaws.resiliencehub#DeleteApp" + }, + { + "target": "com.amazonaws.resiliencehub#DeleteAppAssessment" + }, + { + "target": "com.amazonaws.resiliencehub#DeleteRecommendationTemplate" + }, + { + "target": "com.amazonaws.resiliencehub#DeleteResiliencyPolicy" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeApp" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeAppAssessment" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatus" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionTemplate" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatus" + }, + { + "target": "com.amazonaws.resiliencehub#DescribeResiliencyPolicy" + }, + { + "target": "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersion" + }, + { + "target": "com.amazonaws.resiliencehub#ListAlarmRecommendations" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppAssessments" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppComponentCompliances" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppComponentRecommendations" + }, + { + "target": "com.amazonaws.resiliencehub#ListApps" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppVersionResourceMappings" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppVersionResources" + }, + { + "target": "com.amazonaws.resiliencehub#ListAppVersions" + }, + { + "target": "com.amazonaws.resiliencehub#ListRecommendationTemplates" + }, + { + "target": "com.amazonaws.resiliencehub#ListResiliencyPolicies" + }, + { + "target": "com.amazonaws.resiliencehub#ListSopRecommendations" + }, + { + "target": "com.amazonaws.resiliencehub#ListSuggestedResiliencyPolicies" + }, + { + "target": "com.amazonaws.resiliencehub#ListTagsForResource" + }, + { + "target": "com.amazonaws.resiliencehub#ListTestRecommendations" + }, + { + "target": "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResources" + }, + { + "target": "com.amazonaws.resiliencehub#PublishAppVersion" + }, + { + "target": "com.amazonaws.resiliencehub#PutDraftAppVersionTemplate" + }, + { + "target": "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappings" + }, + { + "target": "com.amazonaws.resiliencehub#ResolveAppVersionResources" + }, + { + "target": "com.amazonaws.resiliencehub#StartAppAssessment" + }, + { + "target": "com.amazonaws.resiliencehub#TagResource" + }, + { + "target": "com.amazonaws.resiliencehub#UntagResource" + }, + { + "target": "com.amazonaws.resiliencehub#UpdateApp" + }, + { + "target": "com.amazonaws.resiliencehub#UpdateResiliencyPolicy" + } + ] + }, + "com.amazonaws.resiliencehub#BooleanOptional": { + "type": "boolean", + "traits": { + "smithy.api#box": {} + } + }, + "com.amazonaws.resiliencehub#ClientToken": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 63 + }, + "smithy.api#pattern": "^[A-za-z0-9_.-]{0,63}$" + } + }, + "com.amazonaws.resiliencehub#ComplianceStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "PolicyBreached", + "name": "POLICY_BREACHED" + }, + { + "value": "PolicyMet", + "name": "POLICY_MET" + } + ] + } + }, + "com.amazonaws.resiliencehub#ComponentCompliancesList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#AppComponentCompliance" + } + }, + "com.amazonaws.resiliencehub#ComponentRecommendation": { + "type": "structure", + "members": { + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The name of the application component.

", + "smithy.api#required": {} + } + }, + "recommendationStatus": { + "target": "com.amazonaws.resiliencehub#RecommendationComplianceStatus", + "traits": { + "smithy.api#documentation": "

The recommendation status.

", + "smithy.api#required": {} + } + }, + "configRecommendations": { + "target": "com.amazonaws.resiliencehub#ConfigRecommendationList", + "traits": { + "smithy.api#documentation": "

The list of recommendations.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines recommendations for a Resilience Hub application component, returned as an object. This\n object contains component names, configuration recommendations, and recommendation\n statuses.

" + } + }, + "com.amazonaws.resiliencehub#ComponentRecommendationList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#ComponentRecommendation" + } + }, + "com.amazonaws.resiliencehub#ConfigRecommendation": { + "type": "structure", + "members": { + "cost": { + "target": "com.amazonaws.resiliencehub#Cost", + "traits": { + "smithy.api#documentation": "

The cost for the application.

" + } + }, + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The application component name.

" + } + }, + "compliance": { + "target": "com.amazonaws.resiliencehub#AssessmentCompliance", + "traits": { + "smithy.api#documentation": "

The current compliance against the resiliency policy before applying the configuration\n change.

" + } + }, + "recommendationCompliance": { + "target": "com.amazonaws.resiliencehub#RecommendationCompliance", + "traits": { + "smithy.api#documentation": "

The expected compliance against the resiliency policy after applying the configuration\n change.

" + } + }, + "optimizationType": { + "target": "com.amazonaws.resiliencehub#ConfigRecommendationOptimizationType", + "traits": { + "smithy.api#documentation": "

The type of optimization.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the recommendation configuration.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The optional description for an app.

" + } + }, + "suggestedChanges": { + "target": "com.amazonaws.resiliencehub#SuggestedChangesList", + "traits": { + "smithy.api#documentation": "

List of the suggested configuration changes.

" + } + }, + "haArchitecture": { + "target": "com.amazonaws.resiliencehub#HaArchitecture", + "traits": { + "smithy.api#documentation": "

The architecture type.

" + } + }, + "referenceId": { + "target": "com.amazonaws.resiliencehub#SpecReferenceId", + "traits": { + "smithy.api#documentation": "

The reference identifier for the recommendation configuration.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a configuration recommendation.

" + } + }, + "com.amazonaws.resiliencehub#ConfigRecommendationList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#ConfigRecommendation" + } + }, + "com.amazonaws.resiliencehub#ConfigRecommendationOptimizationType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "LeastCost", + "name": "LEAST_COST" + }, + { + "value": "LeastChange", + "name": "LEAST_CHANGE" + }, + { + "value": "BestAZRecovery", + "name": "BEST_AZ_RECOVERY" + }, + { + "value": "LeastErrors", + "name": "LEAST_ERRORS" + }, + { + "value": "BestAttainable", + "name": "BEST_ATTAINABLE" + } + ] + } + }, + "com.amazonaws.resiliencehub#ConflictException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + }, + "resourceId": { + "target": "com.amazonaws.resiliencehub#ResourceId", + "traits": { + "smithy.api#documentation": "

The identifier of the resource that the exception applies to.

" + } + }, + "resourceType": { + "target": "com.amazonaws.resiliencehub#ResourceType", + "traits": { + "smithy.api#documentation": "

The type of the resource that the exception applies to.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Occurs when a conflict with a previous successful write is detected. This generally occurs\n when the previous write did not have time to propagate to the host serving the current\n request. A retry (with appropriate backoff logic) is the recommended response to this\n exception.

", + "smithy.api#error": "client", + "smithy.api#httpError": 409 + } + }, + "com.amazonaws.resiliencehub#Cost": { + "type": "structure", + "members": { + "amount": { + "target": "com.amazonaws.resiliencehub#Double", + "traits": { + "smithy.api#documentation": "

The cost amount.

", + "smithy.api#required": {} + } + }, + "currency": { + "target": "com.amazonaws.resiliencehub#CurrencyCode", + "traits": { + "smithy.api#documentation": "

The cost currency, for example USD.

", + "smithy.api#required": {} + } + }, + "frequency": { + "target": "com.amazonaws.resiliencehub#CostFrequency", + "traits": { + "smithy.api#documentation": "

The cost frequency.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a cost object.

" + } + }, + "com.amazonaws.resiliencehub#CostFrequency": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Hourly", + "name": "HOURLY" + }, + { + "value": "Daily", + "name": "DAILY" + }, + { + "value": "Monthly", + "name": "MONTHLY" + }, + { + "value": "Yearly", + "name": "YEARLY" + } + ] + } + }, + "com.amazonaws.resiliencehub#CreateApp": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#CreateAppRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#CreateAppResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a Resilience Hub application. A Resilience Hub application is a collection of Amazon Web Services\n resources structured to prevent and recover Amazon Web Services application disruptions. To describe a\n Resilience Hub application, you provide an application name, resources from one or more–up to\n five–CloudFormation stacks, and an appropriate resiliency policy.

\n\n

After you create a Resilience Hub application, you publish it so that you can run a resiliency\n assessment on it. You can then use recommendations from the assessment to improve resiliency\n by running another assessment, comparing results, and then iterating the process until you\n achieve your goals for recovery time objective (RTO) and recovery point objective\n (RPO).

", + "smithy.api#http": { + "method": "POST", + "uri": "/create-app", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#CreateAppRequest": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the application.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The optional description for an app.

" + } + }, + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.resiliencehub#CreateAppResponse": { + "type": "structure", + "members": { + "app": { + "target": "com.amazonaws.resiliencehub#App", + "traits": { + "smithy.api#documentation": "

The created application returned as an object with details including compliance status,\n creation time, description, resiliency score, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#CreateRecommendationTemplate": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#CreateRecommendationTemplateRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#CreateRecommendationTemplateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a new recommendation template.

", + "smithy.api#http": { + "method": "POST", + "uri": "/create-recommendation-template", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#CreateRecommendationTemplateRequest": { + "type": "structure", + "members": { + "recommendationIds": { + "target": "com.amazonaws.resiliencehub#RecommendationIdList", + "traits": { + "smithy.api#documentation": "

Identifiers for the recommendations used to create a recommendation template.

" + } + }, + "format": { + "target": "com.amazonaws.resiliencehub#TemplateFormat", + "traits": { + "smithy.api#documentation": "

The format for the recommendation template.

\n
\n
CfnJson
\n
\n

The template is CloudFormation JSON.

\n
\n
CfnYaml
\n
\n

The template is CloudFormation YAML.

\n
\n
" + } + }, + "recommendationTypes": { + "target": "com.amazonaws.resiliencehub#RenderRecommendationTypeList", + "traits": { + "smithy.api#documentation": "

An array of strings that specify the recommendation template type or types.

\n
\n
Alarm
\n
\n

The template is an AlarmRecommendation template.

\n
\n
Sop
\n
\n

The template is a SopRecommendation template.

\n
\n
Test
\n
\n

The template is a TestRecommendation template.

\n
\n
" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the recommendation template.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + }, + "bucketName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the Amazon S3 bucket that will contain the recommendation template.

" + } + } + } + }, + "com.amazonaws.resiliencehub#CreateRecommendationTemplateResponse": { + "type": "structure", + "members": { + "recommendationTemplate": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplate", + "traits": { + "smithy.api#documentation": "

The newly created recommendation template, returned as an object. This object includes the\n template's name, format, status, tags, Amazon S3 bucket location, and more.

" + } + } + } + }, + "com.amazonaws.resiliencehub#CreateResiliencyPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#CreateResiliencyPolicyRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#CreateResiliencyPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a resiliency policy for an application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/create-resiliency-policy", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#CreateResiliencyPolicyRequest": { + "type": "structure", + "members": { + "policyName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the policy

", + "smithy.api#required": {} + } + }, + "policyDescription": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The description for the policy.

" + } + }, + "dataLocationConstraint": { + "target": "com.amazonaws.resiliencehub#DataLocationConstraint", + "traits": { + "smithy.api#documentation": "

Specifies a high-level geographical location constraint for where your resilience policy\n data can be stored.

" + } + }, + "tier": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicyTier", + "traits": { + "smithy.api#documentation": "

The tier for this resiliency policy, ranging from the highest severity\n (MissionCritical) to lowest (NonCritical).

", + "smithy.api#required": {} + } + }, + "policy": { + "target": "com.amazonaws.resiliencehub#DisruptionPolicy", + "traits": { + "smithy.api#documentation": "

The type of resiliency policy to be created, including the recovery time objective (RTO)\n and recovery point objective (RPO) in seconds.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + } + }, + "com.amazonaws.resiliencehub#CreateResiliencyPolicyResponse": { + "type": "structure", + "members": { + "policy": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicy", + "traits": { + "smithy.api#documentation": "

The type of resiliency policy that was created, including the recovery time objective\n (RTO) and recovery point objective (RPO) in seconds.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#CurrencyCode": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 3 + } + } + }, + "com.amazonaws.resiliencehub#CustomerId": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[0-9]{12}$" + } + }, + "com.amazonaws.resiliencehub#DataLocationConstraint": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "AnyLocation", + "name": "ANY_LOCATION" + }, + { + "value": "SameContinent", + "name": "SAME_CONTINENT" + }, + { + "value": "SameCountry", + "name": "SAME_COUNTRY" + } + ] + } + }, + "com.amazonaws.resiliencehub#DeleteApp": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DeleteAppRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DeleteAppResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes an AWS Resilience Hub application. This is a destructive action that can't be\n undone.

", + "smithy.api#http": { + "method": "POST", + "uri": "/delete-app", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DeleteAppAssessment": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DeleteAppAssessmentRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DeleteAppAssessmentResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes an AWS Resilience Hub application assessment. This is a destructive action that can't\n be undone.

", + "smithy.api#http": { + "method": "POST", + "uri": "/delete-app-assessment", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DeleteAppAssessmentRequest": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteAppAssessmentResponse": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "assessmentStatus": { + "target": "com.amazonaws.resiliencehub#AssessmentStatus", + "traits": { + "smithy.api#documentation": "

The current status of the assessment for the resiliency policy.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteAppRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "forceDelete": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

A boolean option to force the deletion of a Resilience Hub application.

" + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteAppResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteRecommendationTemplate": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DeleteRecommendationTemplateRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DeleteRecommendationTemplateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes a recommendation template. This is a destructive action that can't be\n undone.

", + "smithy.api#http": { + "method": "POST", + "uri": "/delete-recommendation-template", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DeleteRecommendationTemplateRequest": { + "type": "structure", + "members": { + "recommendationTemplateArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for a recommendation template.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteRecommendationTemplateResponse": { + "type": "structure", + "members": { + "recommendationTemplateArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for a recommendation template.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplateStatus", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteResiliencyPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DeleteResiliencyPolicyRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DeleteResiliencyPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes a resiliency policy. This is a destructive action that can't be undone.

", + "smithy.api#http": { + "method": "POST", + "uri": "/delete-resiliency-policy", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DeleteResiliencyPolicyRequest": { + "type": "structure", + "members": { + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DeleteResiliencyPolicyResponse": { + "type": "structure", + "members": { + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeApp": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeAppRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeAppResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes an AWS Resilience Hub application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-app", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppAssessment": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeAppAssessmentRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeAppAssessmentResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes an assessment for an AWS Resilience Hub application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-app-assessment", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppAssessmentRequest": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppAssessmentResponse": { + "type": "structure", + "members": { + "assessment": { + "target": "com.amazonaws.resiliencehub#AppAssessment", + "traits": { + "smithy.api#documentation": "

The assessment for an AWS Resilience Hub application, returned as an object. This object\n includes Amazon Resource Names (ARNs), compliance information, compliance status, cost,\n messages, resiliency scores, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppResponse": { + "type": "structure", + "members": { + "app": { + "target": "com.amazonaws.resiliencehub#App", + "traits": { + "smithy.api#documentation": "

The specified application, returned as an object with details including compliance status,\n creation time, description, resiliency score, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatus": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatusRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatusResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Returns the resolution status for the specified resolution identifier for an application\n version. If resolutionId is not specified, the current resolution status is\n returned.

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-app-version-resources-resolution-status", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatusRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

" + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionResourcesResolutionStatusResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#ResourceResolutionStatusType", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + }, + "errorMessage": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The returned error message for the request.

" + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionTemplate": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionTemplateRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeAppVersionTemplateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes details about an AWS Resilience Hub

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-app-version-template", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionTemplateRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeAppVersionTemplateResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "appTemplateBody": { + "target": "com.amazonaws.resiliencehub#AppTemplateBody", + "traits": { + "smithy.api#documentation": "

The body of the template.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatus": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatusRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatusResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes the status of importing resources to an application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-draft-app-version-resources-import-status", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatusRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeDraftAppVersionResourcesImportStatusResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#ResourceImportStatusType", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + }, + "statusChangeTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for when the status last changed.

", + "smithy.api#required": {} + } + }, + "errorMessage": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The returned error message for the request.

" + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeResiliencyPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#DescribeResiliencyPolicyRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#DescribeResiliencyPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Describes a specified resiliency policy for an AWS Resilience Hub application. The returned\n policy object includes creation time, data location constraints, the Amazon Resource Name\n (ARN) for the policy, tags, tier, and more.

", + "smithy.api#http": { + "method": "POST", + "uri": "/describe-resiliency-policy", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#DescribeResiliencyPolicyRequest": { + "type": "structure", + "members": { + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DescribeResiliencyPolicyResponse": { + "type": "structure", + "members": { + "policy": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicy", + "traits": { + "smithy.api#documentation": "

Information about the specific resiliency policy, returned as an object. This object\n includes creation time, data location constraints, its name, description, tags, the recovery\n time objective (RTO) and recovery point objective (RPO) in seconds, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#DisruptionCompliance": { + "type": "structure", + "members": { + "achievableRtoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The Recovery Time Objective (RTO) that is achievable, in seconds

" + } + }, + "currentRtoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The current RTO, in seconds.

" + } + }, + "rtoReferenceId": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The RTO reference identifier.

" + } + }, + "rtoDescription": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The RTO description.

" + } + }, + "currentRpoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The current RPO, in seconds.

" + } + }, + "rpoReferenceId": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The RPO reference identifier.

" + } + }, + "rpoDescription": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The RPO description.

" + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The current status of compliance for the resiliency policy.

", + "smithy.api#required": {} + } + }, + "achievableRpoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The Recovery Point Objective (RPO) that is achievable, in seconds.

" + } + }, + "message": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The disruption compliance message.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines the compliance against the resiliency policy for a disruption.

" + } + }, + "com.amazonaws.resiliencehub#DisruptionPolicy": { + "type": "map", + "key": { + "target": "com.amazonaws.resiliencehub#DisruptionType" + }, + "value": { + "target": "com.amazonaws.resiliencehub#FailurePolicy" + } + }, + "com.amazonaws.resiliencehub#DisruptionResiliencyScore": { + "type": "map", + "key": { + "target": "com.amazonaws.resiliencehub#DisruptionType" + }, + "value": { + "target": "com.amazonaws.resiliencehub#Double" + } + }, + "com.amazonaws.resiliencehub#DisruptionType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Software", + "name": "SOFTWARE" + }, + { + "value": "Hardware", + "name": "HARDWARE" + }, + { + "value": "AZ", + "name": "AZ" + }, + { + "value": "Region", + "name": "REGION" + } + ] + } + }, + "com.amazonaws.resiliencehub#DocumentName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 500 + } + } + }, + "com.amazonaws.resiliencehub#Double": { + "type": "double" + }, + "com.amazonaws.resiliencehub#EntityDescription": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 500 + } + } + }, + "com.amazonaws.resiliencehub#EntityId": { + "type": "string", + "traits": { + "smithy.api#pattern": "^\\S{1,100}$" + } + }, + "com.amazonaws.resiliencehub#EntityName": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[A-Za-z0-9][A-Za-z0-9_\\-]{1,59}$" + } + }, + "com.amazonaws.resiliencehub#EntityNameList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#EntityName" + } + }, + "com.amazonaws.resiliencehub#EntityVersion": { + "type": "string", + "traits": { + "smithy.api#pattern": "^\\S{1,50}$" + } + }, + "com.amazonaws.resiliencehub#EstimatedCostTier": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "L1", + "name": "L1" + }, + { + "value": "L2", + "name": "L2" + }, + { + "value": "L3", + "name": "L3" + }, + { + "value": "L4", + "name": "L4" + } + ] + } + }, + "com.amazonaws.resiliencehub#FailurePolicy": { + "type": "structure", + "members": { + "rtoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The Recovery Time Objective (RTO), in seconds.

", + "smithy.api#required": {} + } + }, + "rpoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The Recovery Point Objective (RPO), in seconds.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a failure policy.

" + } + }, + "com.amazonaws.resiliencehub#HaArchitecture": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "MultiSite", + "name": "MULTI_SITE" + }, + { + "value": "WarmStandby", + "name": "WARM_STANDBY" + }, + { + "value": "PilotLight", + "name": "PILOT_LIGHT" + }, + { + "value": "BackupAndRestore", + "name": "BACKUP_AND_RESTORE" + }, + { + "value": "NoRecoveryPlan", + "name": "NO_RECOVERY_PLAN" + } + ] + } + }, + "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersion": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersionRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Imports resources from sources such as a CloudFormation stack, resource-groups, or application\n registry app to a draft application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/import-resources-to-draft-app-version", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersionRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "sourceArns": { + "target": "com.amazonaws.resiliencehub#ArnList", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Names (ARNs) for the resources that you want to import.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ImportResourcesToDraftAppVersionResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "sourceArns": { + "target": "com.amazonaws.resiliencehub#ArnList", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Names (ARNs) for the resources that you imported.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#ResourceImportStatusType", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#InternalServerException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + } + }, + "traits": { + "smithy.api#documentation": "

This exception occurs when there is an internal failure in the AWS Resilience Hub\n service.

", + "smithy.api#error": "server", + "smithy.api#httpError": 500 + } + }, + "com.amazonaws.resiliencehub#ListAlarmRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAlarmRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAlarmRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the alarm recommendations for a AWS Resilience Hub application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-alarm-recommendations", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAlarmRecommendationsRequest": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAlarmRecommendationsResponse": { + "type": "structure", + "members": { + "alarmRecommendations": { + "target": "com.amazonaws.resiliencehub#AlarmRecommendationList", + "traits": { + "smithy.api#documentation": "

The alarm recommendations for an AWS Resilience Hub application, returned as an object. This\n object includes application component names, descriptions, information about whether a\n recommendation has already been implemented or not, prerequisites, and more.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppAssessments": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppAssessmentsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppAssessmentsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the assessments for an AWS Resilience Hub application. You can use request parameters to\n refine the results for the response object.

", + "smithy.api#http": { + "method": "GET", + "uri": "/list-app-assessments", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListAppAssessmentsRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#httpQuery": "appArn" + } + }, + "assessmentName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the assessment.

", + "smithy.api#httpQuery": "assessmentName" + } + }, + "assessmentStatus": { + "target": "com.amazonaws.resiliencehub#AssessmentStatusList", + "traits": { + "smithy.api#documentation": "

The current status of the assessment for the resiliency policy.

", + "smithy.api#httpQuery": "assessmentStatus" + } + }, + "complianceStatus": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The current status of compliance for the resiliency policy.

", + "smithy.api#httpQuery": "complianceStatus" + } + }, + "invoker": { + "target": "com.amazonaws.resiliencehub#AssessmentInvoker", + "traits": { + "smithy.api#documentation": "

Specifies the entity that invoked a specific assessment, either a User or the\n System.

", + "smithy.api#httpQuery": "invoker" + } + }, + "reverseOrder": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

The default is to sort by ascending startTime.\nTo sort by descending startTime, set reverseOrder to true.

", + "smithy.api#httpQuery": "reverseOrder" + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppAssessmentsResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + }, + "assessmentSummaries": { + "target": "com.amazonaws.resiliencehub#AppAssessmentSummaryList", + "traits": { + "smithy.api#documentation": "

The summaries for the specified assessments, returned as an object. This object includes\n application versions, associated Amazon Resource Numbers (ARNs), cost, messages, resiliency\n scores, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentCompliances": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppComponentCompliancesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppComponentCompliancesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the compliances for an AWS Resilience Hub component.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-app-component-compliances", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentCompliancesRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentCompliancesResponse": { + "type": "structure", + "members": { + "componentCompliances": { + "target": "com.amazonaws.resiliencehub#ComponentCompliancesList", + "traits": { + "smithy.api#documentation": "

The compliances for an AWS Resilience Hub application component, returned as an object. This\n object contains component names, compliances, costs, resiliency scores, outage scores, and\n more.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppComponentRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppComponentRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the recommendations for an AWS Resilience Hub component.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-app-component-recommendations", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentRecommendationsRequest": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppComponentRecommendationsResponse": { + "type": "structure", + "members": { + "componentRecommendations": { + "target": "com.amazonaws.resiliencehub#ComponentRecommendationList", + "traits": { + "smithy.api#documentation": "

The recommendations for an Resilience Hub application component, returned as an object. This\n object contains component names, configuration recommendations, and recommendation\n statuses.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResourceMappings": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppVersionResourceMappingsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppVersionResourceMappingsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists how the resources in an application version are mapped/sourced from. Mappings can be\n physical resource identifiers, CloudFormation stacks, resource-groups, or an application registry\n app.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-app-version-resource-mappings", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResourceMappingsRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResourceMappingsResponse": { + "type": "structure", + "members": { + "resourceMappings": { + "target": "com.amazonaws.resiliencehub#ResourceMappingList", + "traits": { + "smithy.api#documentation": "

Mappings used to map logical resources from the template to physical resources. You can\n use the mapping type CFN_STACK if the application template uses\n a logical stack name. Or you can map individual resources by using the mapping type\n RESOURCE. We recommend using the mapping type CFN_STACK if the\n application is backed by a CloudFormation stack.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResources": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppVersionResourcesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppVersionResourcesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists all the resources in an application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-app-version-resources", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResourcesRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

" + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionResourcesResponse": { + "type": "structure", + "members": { + "physicalResources": { + "target": "com.amazonaws.resiliencehub#PhysicalResourceList", + "traits": { + "smithy.api#documentation": "

The physical resources in the application version.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersions": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppVersionsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppVersionsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the different versions for the Resilience Hub applications.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-app-versions", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionsRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppVersionsResponse": { + "type": "structure", + "members": { + "appVersions": { + "target": "com.amazonaws.resiliencehub#AppVersionList", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListApps": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListAppsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListAppsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists your Resilience Hub applications.

", + "smithy.api#http": { + "method": "GET", + "uri": "/list-apps", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListAppsRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

", + "smithy.api#httpQuery": "maxResults" + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the one of the listed applications.

", + "smithy.api#httpQuery": "name" + } + }, + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#httpQuery": "appArn" + } + } + } + }, + "com.amazonaws.resiliencehub#ListAppsResponse": { + "type": "structure", + "members": { + "appSummaries": { + "target": "com.amazonaws.resiliencehub#AppSummaryList", + "traits": { + "smithy.api#documentation": "

Summaries for the Resilience Hub application.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListRecommendationTemplates": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListRecommendationTemplatesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListRecommendationTemplatesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the recommendation templates for the Resilience Hub applications.

", + "smithy.api#http": { + "method": "GET", + "uri": "/list-recommendation-templates", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListRecommendationTemplatesRequest": { + "type": "structure", + "members": { + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#httpQuery": "assessmentArn", + "smithy.api#required": {} + } + }, + "reverseOrder": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

The default is to sort by ascending startTime.\nTo sort by descending startTime, set reverseOrder to true.

", + "smithy.api#httpQuery": "reverseOrder" + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplateStatusList", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#httpQuery": "status" + } + }, + "recommendationTemplateArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for a recommendation template.

", + "smithy.api#httpQuery": "recommendationTemplateArn" + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for one of the listed recommendation templates.

", + "smithy.api#httpQuery": "name" + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.resiliencehub#ListRecommendationTemplatesResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + }, + "recommendationTemplates": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplateList", + "traits": { + "smithy.api#documentation": "

The recommendation templates for the Resilience Hub applications.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListResiliencyPolicies": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListResiliencyPoliciesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListResiliencyPoliciesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the resiliency policies for the Resilience Hub applications.

", + "smithy.api#http": { + "method": "GET", + "uri": "/list-resiliency-policies", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListResiliencyPoliciesRequest": { + "type": "structure", + "members": { + "policyName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the policy

", + "smithy.api#httpQuery": "policyName" + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.resiliencehub#ListResiliencyPoliciesResponse": { + "type": "structure", + "members": { + "resiliencyPolicies": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicies", + "traits": { + "smithy.api#documentation": "

The resiliency policies for the Resilience Hub applications.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListSopRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListSopRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListSopRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the standard operating procedure (SOP) recommendations for the Resilience Hub\n applications.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-sop-recommendations", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListSopRecommendationsRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListSopRecommendationsResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + }, + "sopRecommendations": { + "target": "com.amazonaws.resiliencehub#SopRecommendationList", + "traits": { + "smithy.api#documentation": "

The standard operating procedure (SOP) recommendations for the Resilience Hub\n applications.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListSuggestedResiliencyPolicies": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListSuggestedResiliencyPoliciesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListSuggestedResiliencyPoliciesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the suggested resiliency policies for the Resilience Hub applications.

", + "smithy.api#http": { + "method": "GET", + "uri": "/list-suggested-resiliency-policies", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListSuggestedResiliencyPoliciesRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

", + "smithy.api#httpQuery": "nextToken" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

", + "smithy.api#httpQuery": "maxResults" + } + } + } + }, + "com.amazonaws.resiliencehub#ListSuggestedResiliencyPoliciesResponse": { + "type": "structure", + "members": { + "resiliencyPolicies": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicies", + "traits": { + "smithy.api#documentation": "

The suggested resiliency policies for the Resilience Hub applications.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListTagsForResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListTagsForResourceRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListTagsForResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the tags for your resources in your Resilience Hub applications.

", + "smithy.api#http": { + "method": "GET", + "uri": "/tags/{resourceArn}", + "code": 200 + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.resiliencehub#ListTagsForResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for a specific resource in your Resilience Hub\n application.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListTagsForResourceResponse": { + "type": "structure", + "members": { + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListTestRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListTestRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListTestRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the test recommendations for the Resilience Hub application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-test-recommendations", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListTestRecommendationsRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListTestRecommendationsResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + }, + "testRecommendations": { + "target": "com.amazonaws.resiliencehub#TestRecommendationList", + "traits": { + "smithy.api#documentation": "

The test recommendations for the Resilience Hub application.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResources": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResourcesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResourcesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Lists the resources that are not currently supported in AWS Resilience Hub. An unsupported\n resource is a resource that exists in the object that was used to create an app, but is not\n supported by Resilience Hub.

", + "smithy.api#http": { + "method": "POST", + "uri": "/list-unsupported-app-version-resources", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken" + } + } + }, + "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResourcesRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

" + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

Null, or the token from a previous call to get the next set of results.

" + } + }, + "maxResults": { + "target": "com.amazonaws.resiliencehub#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of results to include in the response. If more results exist than the specified \nMaxResults value, a token is included in the response so that the remaining results can be retrieved.

" + } + } + } + }, + "com.amazonaws.resiliencehub#ListUnsupportedAppVersionResourcesResponse": { + "type": "structure", + "members": { + "unsupportedResources": { + "target": "com.amazonaws.resiliencehub#UnsupportedResourceList", + "traits": { + "smithy.api#documentation": "

The unsupported resources for the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.resiliencehub#NextToken", + "traits": { + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" + } + } + } + }, + "com.amazonaws.resiliencehub#LogicalResourceId": { + "type": "structure", + "members": { + "identifier": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier of the resource.

", + "smithy.api#required": {} + } + }, + "logicalStackName": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The name of the CloudFormation stack this resource belongs to.

" + } + }, + "resourceGroupName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the resource group that this resource belongs to.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a logical resource identifier.

" + } + }, + "com.amazonaws.resiliencehub#MaxResults": { + "type": "integer", + "traits": { + "smithy.api#box": {}, + "smithy.api#range": { + "min": 1, + "max": 100 + } + } + }, + "com.amazonaws.resiliencehub#NextToken": { + "type": "string", + "traits": { + "smithy.api#pattern": "^\\S{1,2000}$" + } + }, + "com.amazonaws.resiliencehub#PhysicalIdentifierType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Arn", + "name": "ARN" + }, + { + "value": "Native", + "name": "NATIVE" + } + ] + } + }, + "com.amazonaws.resiliencehub#PhysicalResource": { + "type": "structure", + "members": { + "resourceName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the resource.

" + } + }, + "logicalResourceId": { + "target": "com.amazonaws.resiliencehub#LogicalResourceId", + "traits": { + "smithy.api#documentation": "

The logical identifier of the resource.

", + "smithy.api#required": {} + } + }, + "physicalResourceId": { + "target": "com.amazonaws.resiliencehub#PhysicalResourceId", + "traits": { + "smithy.api#documentation": "

The physical identifier of the resource.

", + "smithy.api#required": {} + } + }, + "resourceType": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The type of resource.

", + "smithy.api#required": {} + } + }, + "appComponents": { + "target": "com.amazonaws.resiliencehub#AppComponentList", + "traits": { + "smithy.api#documentation": "

The application components that belong to this resource.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a physical resource. A physical resource is a resource that exists in your\n account. It can be identified using an Amazon Resource Name (ARN) or a Resilience Hub-native\n identifier.

" + } + }, + "com.amazonaws.resiliencehub#PhysicalResourceId": { + "type": "structure", + "members": { + "identifier": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier of the physical resource.

", + "smithy.api#required": {} + } + }, + "type": { + "target": "com.amazonaws.resiliencehub#PhysicalIdentifierType", + "traits": { + "smithy.api#documentation": "

Specifies the type of physical resource identifier.

\n
\n
Arn
\n
\n

The resource identifier is an Amazon Resource Name (ARN) .

\n
\n
Native
\n
\n

The resource identifier is a Resilience Hub-native identifier.

\n
\n
", + "smithy.api#required": {} + } + }, + "awsRegion": { + "target": "com.amazonaws.resiliencehub#AwsRegion", + "traits": { + "smithy.api#documentation": "

The Amazon Web Services Region that the physical resource is located in.

" + } + }, + "awsAccountId": { + "target": "com.amazonaws.resiliencehub#CustomerId", + "traits": { + "smithy.api#documentation": "

The Amazon Web Services account that owns the physical resource.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a physical resource identifier.

" + } + }, + "com.amazonaws.resiliencehub#PhysicalResourceList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#PhysicalResource" + } + }, + "com.amazonaws.resiliencehub#PublishAppVersion": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#PublishAppVersionRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#PublishAppVersionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Publishes a new version of a specific Resilience Hub application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/publish-app-version", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#PublishAppVersionRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#PublishAppVersionResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + } + } + }, + "com.amazonaws.resiliencehub#PutDraftAppVersionTemplate": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#PutDraftAppVersionTemplateRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#PutDraftAppVersionTemplateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Adds or updates the app template for a draft version of a Resilience Hub app.

", + "smithy.api#http": { + "method": "POST", + "uri": "/put-draft-app-version-template", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#PutDraftAppVersionTemplateRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appTemplateBody": { + "target": "com.amazonaws.resiliencehub#AppTemplateBody", + "traits": { + "smithy.api#documentation": "

A JSON string that contains the body of the app template.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#PutDraftAppVersionTemplateResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + } + } + }, + "com.amazonaws.resiliencehub#RecommendationCompliance": { + "type": "map", + "key": { + "target": "com.amazonaws.resiliencehub#DisruptionType" + }, + "value": { + "target": "com.amazonaws.resiliencehub#RecommendationDisruptionCompliance" + } + }, + "com.amazonaws.resiliencehub#RecommendationComplianceStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "BreachedUnattainable", + "name": "BREACHED_UNATTAINABLE" + }, + { + "value": "BreachedCanMeet", + "name": "BREACHED_CAN_MEET" + }, + { + "value": "MetCanImprove", + "name": "MET_CAN_IMPROVE" + } + ] + } + }, + "com.amazonaws.resiliencehub#RecommendationDisruptionCompliance": { + "type": "structure", + "members": { + "expectedComplianceStatus": { + "target": "com.amazonaws.resiliencehub#ComplianceStatus", + "traits": { + "smithy.api#documentation": "

The expected compliance status after applying the recommended configuration change.

", + "smithy.api#required": {} + } + }, + "expectedRtoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The expected RTO after applying the recommended configuration change.

" + } + }, + "expectedRtoDescription": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The expected Recovery Time Objective (RTO) description after applying the recommended\n configuration change.

" + } + }, + "expectedRpoInSecs": { + "target": "com.amazonaws.resiliencehub#Seconds", + "traits": { + "smithy.api#documentation": "

The expected RPO after applying the recommended configuration change.

" + } + }, + "expectedRpoDescription": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The expected Recovery Point Objective (RPO) description after applying the recommended\n configuration change.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a disruption compliance recommendation.

" + } + }, + "com.amazonaws.resiliencehub#RecommendationIdList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#Uuid" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 200 + } + } + }, + "com.amazonaws.resiliencehub#RecommendationItem": { + "type": "structure", + "members": { + "resourceId": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The resource identifier.

" + } + }, + "targetAccountId": { + "target": "com.amazonaws.resiliencehub#CustomerId", + "traits": { + "smithy.api#documentation": "

The target account identifier.

" + } + }, + "targetRegion": { + "target": "com.amazonaws.resiliencehub#AwsRegion", + "traits": { + "smithy.api#documentation": "

The target region.

" + } + }, + "alreadyImplemented": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

Specifies if the recommendation has already been implemented.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a recommendation.

" + } + }, + "com.amazonaws.resiliencehub#RecommendationItemList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#RecommendationItem" + } + }, + "com.amazonaws.resiliencehub#RecommendationTemplate": { + "type": "structure", + "members": { + "templatesLocation": { + "target": "com.amazonaws.resiliencehub#S3Location", + "traits": { + "smithy.api#documentation": "

The file location of the template.

" + } + }, + "assessmentArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: \narn:partition:dcps:region:account:app-assessment/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "recommendationIds": { + "target": "com.amazonaws.resiliencehub#RecommendationIdList", + "traits": { + "smithy.api#documentation": "

Identifiers for the recommendations used in the recommendation template.

" + } + }, + "recommendationTypes": { + "target": "com.amazonaws.resiliencehub#RenderRecommendationTypeList", + "traits": { + "smithy.api#documentation": "

An array of strings that specify the recommendation template type or types.

\n
\n
Alarm
\n
\n

The template is an AlarmRecommendation template.

\n
\n
Sop
\n
\n

The template is a SopRecommendation template.

\n
\n
Test
\n
\n

The template is a TestRecommendation template.

\n
\n
", + "smithy.api#required": {} + } + }, + "format": { + "target": "com.amazonaws.resiliencehub#TemplateFormat", + "traits": { + "smithy.api#documentation": "

The format of the recommendation template.

\n
\n
CfnJson
\n
\n

The template is CloudFormation JSON.

\n
\n
CfnYaml
\n
\n

The template is CloudFormation YAML.

\n
\n
", + "smithy.api#required": {} + } + }, + "recommendationTemplateArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for the recommendation template.

", + "smithy.api#required": {} + } + }, + "message": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The message for the recommendation template.

" + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplateStatus", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the recommendation template.

", + "smithy.api#required": {} + } + }, + "startTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The start time for the action.

" + } + }, + "endTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The end time for the action.

" + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + }, + "needsReplacements": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

Indicates if replacements are needed.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a recommendation template created with the CreateRecommendationTemplate action.

" + } + }, + "com.amazonaws.resiliencehub#RecommendationTemplateList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplate" + } + }, + "com.amazonaws.resiliencehub#RecommendationTemplateStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Pending", + "name": "PENDING" + }, + { + "value": "InProgress", + "name": "IN_PROGRESS" + }, + { + "value": "Failed", + "name": "FAILED" + }, + { + "value": "Success", + "name": "SUCCESS" + } + ] + } + }, + "com.amazonaws.resiliencehub#RecommendationTemplateStatusList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#RecommendationTemplateStatus" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 4 + } + } + }, + "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappings": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappingsRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappingsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Removes resource mappings from a draft application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/remove-draft-app-version-resource-mappings", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappingsRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "resourceNames": { + "target": "com.amazonaws.resiliencehub#EntityNameList", + "traits": { + "smithy.api#documentation": "

The names of the resources to remove from the resource mappings.

" + } + }, + "logicalStackNames": { + "target": "com.amazonaws.resiliencehub#String255List", + "traits": { + "smithy.api#documentation": "

The names of the CloudFormation stacks to remove from the resource mappings.

" + } + }, + "appRegistryAppNames": { + "target": "com.amazonaws.resiliencehub#EntityNameList", + "traits": { + "smithy.api#documentation": "

The names of the registered applications to remove from the resource mappings.

" + } + }, + "resourceGroupNames": { + "target": "com.amazonaws.resiliencehub#EntityNameList", + "traits": { + "smithy.api#documentation": "

The names of the resource groups to remove from the resource mappings.

" + } + } + } + }, + "com.amazonaws.resiliencehub#RemoveDraftAppVersionResourceMappingsResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

" + } + } + } + }, + "com.amazonaws.resiliencehub#RenderRecommendationType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Alarm", + "name": "ALARM" + }, + { + "value": "Sop", + "name": "SOP" + }, + { + "value": "Test", + "name": "TEST" + } + ] + } + }, + "com.amazonaws.resiliencehub#RenderRecommendationTypeList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#RenderRecommendationType" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 4 + } + } + }, + "com.amazonaws.resiliencehub#ResiliencyPolicies": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicy" + } + }, + "com.amazonaws.resiliencehub#ResiliencyPolicy": { + "type": "structure", + "members": { + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "policyName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the policy

" + } + }, + "policyDescription": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The description for the policy.

" + } + }, + "dataLocationConstraint": { + "target": "com.amazonaws.resiliencehub#DataLocationConstraint", + "traits": { + "smithy.api#documentation": "

Specifies a high-level geographical location constraint for where your resilience policy\n data can be stored.

" + } + }, + "tier": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicyTier", + "traits": { + "smithy.api#documentation": "

The tier for this resiliency policy, ranging from the highest severity\n (MissionCritical) to lowest (NonCritical).

" + } + }, + "estimatedCostTier": { + "target": "com.amazonaws.resiliencehub#EstimatedCostTier", + "traits": { + "smithy.api#documentation": "

Specifies the estimated cost tier of the resiliency policy.

" + } + }, + "policy": { + "target": "com.amazonaws.resiliencehub#DisruptionPolicy", + "traits": { + "smithy.api#documentation": "

The resiliency policy.

" + } + }, + "creationTime": { + "target": "com.amazonaws.resiliencehub#TimeStamp", + "traits": { + "smithy.api#documentation": "

The timestamp for when the resiliency policy was created.

" + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a resiliency policy.

" + } + }, + "com.amazonaws.resiliencehub#ResiliencyPolicyTier": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "MissionCritical", + "name": "MISSION_CRITICAL" + }, + { + "value": "Critical", + "name": "CRITICAL" + }, + { + "value": "Important", + "name": "IMPORTANT" + }, + { + "value": "CoreServices", + "name": "CORE_SERVICES" + }, + { + "value": "NonCritical", + "name": "NON_CRITICAL" + } + ] + } + }, + "com.amazonaws.resiliencehub#ResiliencyScore": { + "type": "structure", + "members": { + "score": { + "target": "com.amazonaws.resiliencehub#Double", + "traits": { + "smithy.api#documentation": "

The outage score for a valid key.

", + "smithy.api#required": {} + } + }, + "disruptionScore": { + "target": "com.amazonaws.resiliencehub#DisruptionResiliencyScore", + "traits": { + "smithy.api#documentation": "

The disruption score for a valid key.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

The overall resiliency score, returned as an object that includes the disruption score and\n outage score.

" + } + }, + "com.amazonaws.resiliencehub#ResolveAppVersionResources": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#ResolveAppVersionResourcesRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#ResolveAppVersionResourcesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Resolves the resources for an application version.

", + "smithy.api#http": { + "method": "POST", + "uri": "/resolve-app-version-resources", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#ResolveAppVersionResourcesRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ResolveAppVersionResourcesResponse": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "resolutionId": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The identifier for a specific resolution.

", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.amazonaws.resiliencehub#ResourceResolutionStatusType", + "traits": { + "smithy.api#documentation": "

The status of the action.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#ResourceId": { + "type": "string", + "traits": { + "smithy.api#pattern": ".*" + } + }, + "com.amazonaws.resiliencehub#ResourceImportStatusType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Pending", + "name": "PENDING" + }, + { + "value": "InProgress", + "name": "IN_PROGRESS" + }, + { + "value": "Failed", + "name": "FAILED" + }, + { + "value": "Success", + "name": "SUCCESS" + } + ] + } + }, + "com.amazonaws.resiliencehub#ResourceMapping": { + "type": "structure", + "members": { + "resourceName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the resource this resource is mapped to.

" + } + }, + "logicalStackName": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The name of the CloudFormation stack this resource is mapped to.

" + } + }, + "appRegistryAppName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the application this resource is mapped to.

" + } + }, + "resourceGroupName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the resource group this resource is mapped to.

" + } + }, + "mappingType": { + "target": "com.amazonaws.resiliencehub#ResourceMappingType", + "traits": { + "smithy.api#documentation": "

Specifies the type of resource mapping.

\n
\n
AppRegistryApp
\n
\n

The resource is mapped to another application. The name of the application is\n contained in the appRegistryAppName property.

\n
\n
CfnStack
\n
\n

The resource is mapped to a CloudFormation stack. The name of the CloudFormation stack is contained in\n the logicalStackName property.

\n
\n
Resource
\n
\n

The resource is mapped to another resource. The name of the resource is contained in\n the resourceName property.

\n
\n
ResourceGroup
\n
\n

The resource is mapped to a resource group. The name of the resource group is\n contained in the resourceGroupName property.

\n
\n
", + "smithy.api#required": {} + } + }, + "physicalResourceId": { + "target": "com.amazonaws.resiliencehub#PhysicalResourceId", + "traits": { + "smithy.api#documentation": "

The identifier of this resource.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a resource mapping.

" + } + }, + "com.amazonaws.resiliencehub#ResourceMappingList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#ResourceMapping" + } + }, + "com.amazonaws.resiliencehub#ResourceMappingType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "CfnStack", + "name": "CFN_STACK" + }, + { + "value": "Resource", + "name": "RESOURCE" + }, + { + "value": "AppRegistryApp", + "name": "APP_REGISTRY_APP" + }, + { + "value": "ResourceGroup", + "name": "RESOURCE_GROUP" + } + ] + } + }, + "com.amazonaws.resiliencehub#ResourceNotFoundException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + }, + "resourceId": { + "target": "com.amazonaws.resiliencehub#ResourceId", + "traits": { + "smithy.api#documentation": "

The identifier of the resource that the exception applies to.

" + } + }, + "resourceType": { + "target": "com.amazonaws.resiliencehub#ResourceType", + "traits": { + "smithy.api#documentation": "

The type of the resource that the exception applies to.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The specified resource could not be found.

", + "smithy.api#error": "client", + "smithy.api#httpError": 404 + } + }, + "com.amazonaws.resiliencehub#ResourceResolutionStatusType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Pending", + "name": "PENDING" + }, + { + "value": "InProgress", + "name": "IN_PROGRESS" + }, + { + "value": "Failed", + "name": "FAILED" + }, + { + "value": "Success", + "name": "SUCCESS" + } + ] + } + }, + "com.amazonaws.resiliencehub#ResourceType": { + "type": "string", + "traits": { + "smithy.api#pattern": ".*" + } + }, + "com.amazonaws.resiliencehub#RetryAfterSeconds": { + "type": "integer", + "traits": { + "smithy.api#box": {} + } + }, + "com.amazonaws.resiliencehub#S3Location": { + "type": "structure", + "members": { + "bucket": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The name of the Amazon S3 bucket.

" + } + }, + "prefix": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The prefix for the Amazon S3 bucket.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The location of the Amazon S3 bucket.

" + } + }, + "com.amazonaws.resiliencehub#Seconds": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 0 + } + } + }, + "com.amazonaws.resiliencehub#ServiceQuotaExceededException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + } + }, + "traits": { + "smithy.api#documentation": "

You have exceeded your service quota. To perform the requested action, remove some of the\n relevant resources, or use Service Quotas to request a service quota increase.

", + "smithy.api#error": "client", + "smithy.api#httpError": 402 + } + }, + "com.amazonaws.resiliencehub#SopRecommendation": { + "type": "structure", + "members": { + "serviceType": { + "target": "com.amazonaws.resiliencehub#SopServiceType", + "traits": { + "smithy.api#documentation": "

The service type.

", + "smithy.api#required": {} + } + }, + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The application component name.

" + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The description of the SOP recommendation.

" + } + }, + "recommendationId": { + "target": "com.amazonaws.resiliencehub#Uuid", + "traits": { + "smithy.api#documentation": "

Identifier for the SOP recommendation.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#DocumentName", + "traits": { + "smithy.api#documentation": "

The name of the SOP recommendation.

" + } + }, + "items": { + "target": "com.amazonaws.resiliencehub#RecommendationItemList", + "traits": { + "smithy.api#documentation": "

The recommendation items.

" + } + }, + "referenceId": { + "target": "com.amazonaws.resiliencehub#SpecReferenceId", + "traits": { + "smithy.api#documentation": "

The reference identifier for the SOP recommendation.

", + "smithy.api#required": {} + } + }, + "prerequisite": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The prerequisite for the SOP recommendation.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a standard operating procedure (SOP) recommendation.

" + } + }, + "com.amazonaws.resiliencehub#SopRecommendationList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#SopRecommendation" + } + }, + "com.amazonaws.resiliencehub#SopServiceType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "SSM", + "name": "SSM" + } + ] + } + }, + "com.amazonaws.resiliencehub#SpecReferenceId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 500 + } + } + }, + "com.amazonaws.resiliencehub#StartAppAssessment": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#StartAppAssessmentRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#StartAppAssessmentResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Creates a new application assessment for an application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/start-app-assessment", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#StartAppAssessmentRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "appVersion": { + "target": "com.amazonaws.resiliencehub#EntityVersion", + "traits": { + "smithy.api#documentation": "

The version of the application.

", + "smithy.api#required": {} + } + }, + "assessmentName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name for the assessment.

", + "smithy.api#required": {} + } + }, + "clientToken": { + "target": "com.amazonaws.resiliencehub#ClientToken", + "traits": { + "smithy.api#documentation": "

Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. \nYou should not reuse the same client token for other API requests.

", + "smithy.api#idempotencyToken": {} + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. \nEach tag consists of a key/value pair.

" + } + } + } + }, + "com.amazonaws.resiliencehub#StartAppAssessmentResponse": { + "type": "structure", + "members": { + "assessment": { + "target": "com.amazonaws.resiliencehub#AppAssessment", + "traits": { + "smithy.api#documentation": "

The assessment created.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#String255": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 255 + } + } + }, + "com.amazonaws.resiliencehub#String255List": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#String255" + } + }, + "com.amazonaws.resiliencehub#String500": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 500 + } + } + }, + "com.amazonaws.resiliencehub#SuggestedChangesList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#EntityDescription" + } + }, + "com.amazonaws.resiliencehub#TagKey": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + }, + "smithy.api#pattern": "^(?!aws:).+$" + } + }, + "com.amazonaws.resiliencehub#TagKeyList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#TagKey" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 50 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.resiliencehub#TagMap": { + "type": "map", + "key": { + "target": "com.amazonaws.resiliencehub#TagKey" + }, + "value": { + "target": "com.amazonaws.resiliencehub#TagValue" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 50 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.resiliencehub#TagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#TagResourceRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#TagResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Applies one or more tags to a resource.

", + "smithy.api#http": { + "method": "POST", + "uri": "/tags/{resourceArn}", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#TagResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.amazonaws.resiliencehub#TagMap", + "traits": { + "smithy.api#documentation": "

The tags to assign to the resource. Each tag consists of a key/value pair.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#TagResourceResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.resiliencehub#TagValue": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, + "com.amazonaws.resiliencehub#TemplateFormat": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "CfnYaml", + "name": "CFN_YAML" + }, + { + "value": "CfnJson", + "name": "CFN_JSON" + } + ] + } + }, + "com.amazonaws.resiliencehub#TestRecommendation": { + "type": "structure", + "members": { + "recommendationId": { + "target": "com.amazonaws.resiliencehub#Uuid", + "traits": { + "smithy.api#documentation": "

Identifier for the test recommendation.

" + } + }, + "referenceId": { + "target": "com.amazonaws.resiliencehub#SpecReferenceId", + "traits": { + "smithy.api#documentation": "

The reference identifier for the test recommendation.

", + "smithy.api#required": {} + } + }, + "appComponentName": { + "target": "com.amazonaws.resiliencehub#EntityId", + "traits": { + "smithy.api#documentation": "

The name of the application component.

" + } + }, + "name": { + "target": "com.amazonaws.resiliencehub#DocumentName", + "traits": { + "smithy.api#documentation": "

The name of the test recommendation.

" + } + }, + "intent": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The intent of the test recommendation.

" + } + }, + "risk": { + "target": "com.amazonaws.resiliencehub#TestRisk", + "traits": { + "smithy.api#documentation": "

The level of risk for this test recommendation.

" + } + }, + "type": { + "target": "com.amazonaws.resiliencehub#TestType", + "traits": { + "smithy.api#documentation": "

The type of test recommendation.

" + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The description for the test recommendation.

" + } + }, + "items": { + "target": "com.amazonaws.resiliencehub#RecommendationItemList", + "traits": { + "smithy.api#documentation": "

The test recommendation items.

" + } + }, + "prerequisite": { + "target": "com.amazonaws.resiliencehub#String500", + "traits": { + "smithy.api#documentation": "

The prerequisite of the test recommendation.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a test recommendation.

" + } + }, + "com.amazonaws.resiliencehub#TestRecommendationList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#TestRecommendation" + } + }, + "com.amazonaws.resiliencehub#TestRisk": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Small", + "name": "SMALL" + }, + { + "value": "Medium", + "name": "MEDIUM" + }, + { + "value": "High", + "name": "HIGH" + } + ] + } + }, + "com.amazonaws.resiliencehub#TestType": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Software", + "name": "SOFTWARE" + }, + { + "value": "Hardware", + "name": "HARDWARE" + }, + { + "value": "AZ", + "name": "AZ" + }, + { + "value": "Region", + "name": "REGION" + } + ] + } + }, + "com.amazonaws.resiliencehub#ThrottlingException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + }, + "retryAfterSeconds": { + "target": "com.amazonaws.resiliencehub#RetryAfterSeconds", + "traits": { + "smithy.api#documentation": "

The number of seconds to wait before retrying the operation.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The limit on the number of requests per second was exceeded.

", + "smithy.api#error": "client", + "smithy.api#httpError": 429 + } + }, + "com.amazonaws.resiliencehub#TimeStamp": { + "type": "timestamp" + }, + "com.amazonaws.resiliencehub#UnsupportedResource": { + "type": "structure", + "members": { + "logicalResourceId": { + "target": "com.amazonaws.resiliencehub#LogicalResourceId", + "traits": { + "smithy.api#documentation": "

The logical resource identifier for the unsupported resource.

", + "smithy.api#required": {} + } + }, + "physicalResourceId": { + "target": "com.amazonaws.resiliencehub#PhysicalResourceId", + "traits": { + "smithy.api#documentation": "

The physical resource identifier for the unsupported resource.

", + "smithy.api#required": {} + } + }, + "resourceType": { + "target": "com.amazonaws.resiliencehub#String255", + "traits": { + "smithy.api#documentation": "

The type of resource.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Defines a resource that is not supported by Resilience Hub.

" + } + }, + "com.amazonaws.resiliencehub#UnsupportedResourceList": { + "type": "list", + "member": { + "target": "com.amazonaws.resiliencehub#UnsupportedResource" + } + }, + "com.amazonaws.resiliencehub#UntagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#UntagResourceRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#UntagResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Removes one or more tags from a resource.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/tags/{resourceArn}", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#UntagResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resource.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "tagKeys": { + "target": "com.amazonaws.resiliencehub#TagKeyList", + "traits": { + "smithy.api#documentation": "

The keys of the tags to remove.

", + "smithy.api#httpQuery": "tagKeys", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#UntagResourceResponse": { + "type": "structure", + "members": {} + }, + "com.amazonaws.resiliencehub#UpdateApp": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#UpdateAppRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#UpdateAppResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Updates an application.

", + "smithy.api#http": { + "method": "POST", + "uri": "/update-app", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#UpdateAppRequest": { + "type": "structure", + "members": { + "appArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application. The format for this ARN is: \narn:partition:dcps:region:account:app/app-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "description": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The optional description for an app.

" + } + }, + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

" + } + }, + "clearResiliencyPolicyArn": { + "target": "com.amazonaws.resiliencehub#BooleanOptional", + "traits": { + "smithy.api#documentation": "

Specifies if the resiliency policy ARN should be cleared.

" + } + } + } + }, + "com.amazonaws.resiliencehub#UpdateAppResponse": { + "type": "structure", + "members": { + "app": { + "target": "com.amazonaws.resiliencehub#App", + "traits": { + "smithy.api#documentation": "

The specified application, returned as an object with details including compliance status,\n creation time, description, resiliency score, and more.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#UpdateResiliencyPolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.resiliencehub#UpdateResiliencyPolicyRequest" + }, + "output": { + "target": "com.amazonaws.resiliencehub#UpdateResiliencyPolicyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.resiliencehub#AccessDeniedException" + }, + { + "target": "com.amazonaws.resiliencehub#ConflictException" + }, + { + "target": "com.amazonaws.resiliencehub#InternalServerException" + }, + { + "target": "com.amazonaws.resiliencehub#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.resiliencehub#ThrottlingException" + }, + { + "target": "com.amazonaws.resiliencehub#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Updates a resiliency policy.

", + "smithy.api#http": { + "method": "POST", + "uri": "/update-resiliency-policy", + "code": 200 + } + } + }, + "com.amazonaws.resiliencehub#UpdateResiliencyPolicyRequest": { + "type": "structure", + "members": { + "policyArn": { + "target": "com.amazonaws.resiliencehub#Arn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: \narn:partition:dcps:region:account:resiliency-policy/policy-id. For more information about ARNs, \nsee \n Amazon Resource Names (ARNs) in the \n AWS General Reference.

", + "smithy.api#required": {} + } + }, + "policyName": { + "target": "com.amazonaws.resiliencehub#EntityName", + "traits": { + "smithy.api#documentation": "

The name of the policy

" + } + }, + "policyDescription": { + "target": "com.amazonaws.resiliencehub#EntityDescription", + "traits": { + "smithy.api#documentation": "

The description for the policy.

" + } + }, + "dataLocationConstraint": { + "target": "com.amazonaws.resiliencehub#DataLocationConstraint", + "traits": { + "smithy.api#documentation": "

Specifies a high-level geographical location constraint for where your resilience policy\n data can be stored.

" + } + }, + "tier": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicyTier", + "traits": { + "smithy.api#documentation": "

The tier for this resiliency policy, ranging from the highest severity\n (MissionCritical) to lowest (NonCritical).

" + } + }, + "policy": { + "target": "com.amazonaws.resiliencehub#DisruptionPolicy", + "traits": { + "smithy.api#documentation": "

The type of resiliency policy to be created, including the recovery time objective (RTO)\n and recovery point objective (RPO) in seconds.

" + } + } + } + }, + "com.amazonaws.resiliencehub#UpdateResiliencyPolicyResponse": { + "type": "structure", + "members": { + "policy": { + "target": "com.amazonaws.resiliencehub#ResiliencyPolicy", + "traits": { + "smithy.api#documentation": "

The type of resiliency policy that was updated, including the recovery time objective\n (RTO) and recovery point objective (RPO) in seconds.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.resiliencehub#Uuid": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "com.amazonaws.resiliencehub#ValidationException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.resiliencehub#String500" + } + }, + "traits": { + "smithy.api#documentation": "

Indicates that a request was not valid.

", + "smithy.api#error": "client", + "smithy.api#httpError": 400 + } + } + } +} \ No newline at end of file diff --git a/codegen/sdk-codegen/aws-models/resourcegroupstaggingapi.2017-01-26.json b/codegen/sdk-codegen/aws-models/resourcegroupstaggingapi.2017-01-26.json index 49bcd538cb6..ec33d27ee53 100644 --- a/codegen/sdk-codegen/aws-models/resourcegroupstaggingapi.2017-01-26.json +++ b/codegen/sdk-codegen/aws-models/resourcegroupstaggingapi.2017-01-26.json @@ -36,7 +36,7 @@ "min": 0, "max": 256 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#ComplianceDetails": { @@ -91,7 +91,7 @@ } }, "traits": { - "smithy.api#documentation": "

The request was denied because performing this operation violates a constraint.

\n

Some of the reasons in the following list might not apply to this specific\n operation.

\n ", + "smithy.api#documentation": "

The request was denied because performing this operation violates a constraint.

\n

Some of the reasons in the following list might not apply to this specific\n operation.

\n ", "smithy.api#error": "client" } }, @@ -208,7 +208,7 @@ "ErrorCode": { "target": "com.amazonaws.resourcegroupstaggingapi#ErrorCode", "traits": { - "smithy.api#documentation": "

The code of the common error. Valid values include\n InternalServiceException, InvalidParameterException, and\n any valid error code returned by the AWS service that hosts the resource that you want\n to tag.

" + "smithy.api#documentation": "

The code of the common error. Valid values include\n InternalServiceException, InvalidParameterException, and\n any valid error code returned by the Amazon Web Services service that hosts the resource that you want\n to tag.

" } }, "ErrorMessage": { @@ -219,7 +219,7 @@ } }, "traits": { - "smithy.api#documentation": "

Information about the errors that are returned for each failed resource. This\n information can include InternalServiceException and\n InvalidParameterException errors. It can also include any valid error\n code returned by the AWS service that hosts the resource that the ARN key\n represents.

\n

The following are common error codes that you might receive from other AWS\n services:

\n \n

For more information on errors that are generated from other AWS services, see the\n documentation for that service.

" + "smithy.api#documentation": "

Information about the errors that are returned for each failed resource. This\n information can include InternalServiceException and\n InvalidParameterException errors. It can also include any valid error\n code returned by the Amazon Web Services service that hosts the resource that the ARN key\n represents.

\n

The following are common error codes that you might receive from other Amazon Web Services\n services:

\n \n

For more information on errors that are generated from other Amazon Web Services services, see the\n documentation for that service.

" } }, "com.amazonaws.resourcegroupstaggingapi#GetComplianceSummary": { @@ -245,7 +245,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a table that shows counts of resources that are noncompliant with their tag\n policies.

\n

For more information on tag policies, see Tag Policies in\n the AWS Organizations User Guide.\n

\n

You can call this operation only from the organization's \n management account and from the us-east-1 Region.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", + "smithy.api#documentation": "

Returns a table that shows counts of resources that are noncompliant with their tag\n policies.

\n

For more information on tag policies, see Tag Policies in\n the Organizations User Guide.\n

\n

You can call this operation only from the organization's \n management account and from the us-east-1 Region.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", "smithy.api#paginated": { "inputToken": "PaginationToken", "outputToken": "PaginationToken", @@ -266,13 +266,13 @@ "RegionFilters": { "target": "com.amazonaws.resourcegroupstaggingapi#RegionFilterList", "traits": { - "smithy.api#documentation": "

Specifies a list of AWS Regions to limit the output by. If you use this parameter,\n the count of returned noncompliant resources includes only resources in the specified\n Regions.

" + "smithy.api#documentation": "

Specifies a list of Amazon Web Services Regions to limit the output to. If you use this parameter,\n the count of returned noncompliant resources includes only resources in the specified\n Regions.

" } }, "ResourceTypeFilters": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceTypeFilterList", "traits": { - "smithy.api#documentation": "

Specifies that you want the response to include information for only resources of the\n specified types. The format of each resource type is\n service[:resourceType]. For example, specifying a resource type of\n ec2 returns all Amazon EC2 resources (which includes EC2 instances).\n Specifying a resource type of ec2:instance returns only EC2 instances.

\n

The string for each service name and resource type is the same as that embedded in a\n resource's Amazon Resource Name (ARN). Consult the AWS General\n Reference for the following:

\n \n

You can specify multiple resource types by using a comma separated array. The array\n can include up to 100 items. Note that the length constraint requirement applies to each\n resource type filter.

" + "smithy.api#documentation": "

Specifies that you want the response to include information for only resources of the\n specified types. The format of each resource type is\n service[:resourceType]. For example, specifying a resource type of\n ec2 returns all Amazon EC2 resources (which includes EC2 instances).\n Specifying a resource type of ec2:instance returns only EC2\n instances.

\n

The string for each service name and resource type is the same as that embedded in a\n resource's Amazon Resource Name (ARN). Consult the \n Amazon Web Services General Reference\n \n for the following:

\n \n

You can specify multiple resource types by using a comma separated array. The array\n can include up to 100 items. Note that the length constraint requirement applies to each\n resource type filter.

" } }, "TagKeyFilters": { @@ -341,7 +341,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns all the tagged or previously tagged resources that are located in the\n specified Region for the AWS account.

\n

Depending on what information you want returned, you can also specify the\n following:

\n \n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", + "smithy.api#documentation": "

Returns all the tagged or previously tagged resources that are located in the\n specified Amazon Web Services Region for the account.

\n

Depending on what information you want returned, you can also specify the\n following:

\n \n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", "smithy.api#paginated": { "inputToken": "PaginationToken", "outputToken": "PaginationToken", @@ -362,7 +362,7 @@ "TagFilters": { "target": "com.amazonaws.resourcegroupstaggingapi#TagFilterList", "traits": { - "smithy.api#documentation": "

Specifies a list of TagFilters (keys and values) to restrict the output to only those\n resources that have the specified tag and, if included, the specified value. Each\n TagFilter must contain a key with values optional. A request can\n include up to 50 keys, and each key can include up to 20 values.

\n

Note the following when deciding how to use TagFilters:

\n " + "smithy.api#documentation": "

Specifies a list of TagFilters (keys and values) to restrict the output to only those\n resources that have tags with the specified keys and, if included, the specified values.\n Each TagFilter must contain a key with values optional. A request can\n include up to 50 keys, and each key can include up to 20 values.

\n

Note the following when deciding how to use TagFilters:

\n " } }, "ResourcesPerPage": { @@ -374,13 +374,13 @@ "TagsPerPage": { "target": "com.amazonaws.resourcegroupstaggingapi#TagsPerPage", "traits": { - "smithy.api#documentation": "

AWS recommends using ResourcesPerPage instead of this parameter.

\n

A limit that restricts the number of tags (key and value pairs) returned by\n GetResources in paginated output. A resource with no tags is counted as\n having one tag (one key and value pair).

\n

\n GetResources does not split a resource and its associated tags across\n pages. If the specified TagsPerPage would cause such a break, a\n PaginationToken is returned in place of the affected resource and its\n tags. Use that token in another request to get the remaining data. For example, if you\n specify a TagsPerPage of 100 and the account has 22 resources\n with 10 tags each (meaning that each resource has 10 key and value pairs), the output\n will consist of three pages. The first page displays the first 10 resources, each with\n its 10 tags. The second page displays the next 10 resources, each with its 10 tags. The\n third page displays the remaining 2 resources, each with its 10 tags.

\n

You can set TagsPerPage to a minimum of 100 items up to a maximum of 500\n items.

" + "smithy.api#documentation": "

Amazon Web Services recommends using ResourcesPerPage instead of this parameter.

\n

A limit that restricts the number of tags (key and value pairs) returned by\n GetResources in paginated output. A resource with no tags is counted as\n having one tag (one key and value pair).

\n

\n GetResources does not split a resource and its associated tags across\n pages. If the specified TagsPerPage would cause such a break, a\n PaginationToken is returned in place of the affected resource and its\n tags. Use that token in another request to get the remaining data. For example, if you\n specify a TagsPerPage of 100 and the account has 22 resources\n with 10 tags each (meaning that each resource has 10 key and value pairs), the output\n will consist of three pages. The first page displays the first 10 resources, each with\n its 10 tags. The second page displays the next 10 resources, each with its 10 tags. The\n third page displays the remaining 2 resources, each with its 10 tags.

\n

You can set TagsPerPage to a minimum of 100 items up to a maximum of 500\n items.

" } }, "ResourceTypeFilters": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceTypeFilterList", "traits": { - "smithy.api#documentation": "

Specifies the resource types that you want included in the response. The format of\n each resource type is service[:resourceType]. For example, specifying a\n resource type of ec2 returns all Amazon EC2 resources (which includes EC2\n instances). Specifying a resource type of ec2:instance returns only EC2\n instances.

\n

The string for each service name and resource type is the same as that embedded in a\n resource's Amazon Resource Name (ARN). Consult the AWS General\n Reference for the following:

\n

For more information about ARNs, see Amazon Resource Names (ARNs) and\n AWS Service Namespaces.

\n

You can specify multiple resource types by using an array. The array can include up to\n 100 items. Note that the length constraint requirement applies to each resource type\n filter.

" + "smithy.api#documentation": "

Specifies the resource types that you want included in the response. The format of\n each resource type is service[:resourceType]. For example, specifying a\n resource type of ec2 returns all Amazon EC2 resources (which includes EC2\n instances). Specifying a resource type of ec2:instance returns only EC2\n instances.

\n

The string for each service name and resource type is the same as that embedded in a\n resource's Amazon Resource Name (ARN). For the list of services whose resources you can\n use in this parameter, see Services that support the Resource Groups Tagging API.

\n

You can specify multiple resource types by using an array. The array can include up to\n 100 items. Note that the length constraint requirement applies to each resource type\n filter. For example, the following string would limit the response to only Amazon EC2\n instances, Amazon S3 buckets, or any Audit Manager resource:

\n

\n ec2:instance,s3:bucket,auditmanager\n

" } }, "IncludeComplianceDetails": { @@ -398,7 +398,7 @@ "ResourceARNList": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceARNListForGet", "traits": { - "smithy.api#documentation": "

Specifies a list of ARNs of resources for which you want to retrieve tag data. You\n can't specify both this parameter and any of the pagination parameters\n (ResourcesPerPage, TagsPerPage,\n PaginationToken) in the same request. If you specify both, you get an\n Invalid Parameter exception.

\n

If a resource specified by this parameter doesn't exist, it doesn't generate an error;\n it simply isn't included in the response.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and AWS Service Namespaces in the AWS\n General Reference.

" + "smithy.api#documentation": "

Specifies a list of ARNs of resources for which you want to retrieve tag data. You\n can't specify both this parameter and any of the pagination parameters\n (ResourcesPerPage, TagsPerPage,\n PaginationToken) in the same request. If you specify both, you get an\n Invalid Parameter exception.

\n

If a resource specified by this parameter doesn't exist, it doesn't generate an error;\n it simply isn't included in the response.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and Amazon Web Services Service Namespaces in the\n Amazon Web Services General Reference.

" } } } @@ -415,7 +415,7 @@ "ResourceTagMappingList": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceTagMappingList", "traits": { - "smithy.api#documentation": "

A list of resource ARNs and the tags (keys and values) associated with\n those ARNs.

" + "smithy.api#documentation": "

A list of resource ARNs and the tags (keys and values) associated with \n each.

" } } } @@ -443,7 +443,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns all tag keys currently in use in the specified Region for the calling AWS\n account.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", + "smithy.api#documentation": "

Returns all tag keys currently in use in the specified Amazon Web Services Region for the calling\n account.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", "smithy.api#paginated": { "inputToken": "PaginationToken", "outputToken": "PaginationToken", @@ -474,7 +474,7 @@ "TagKeys": { "target": "com.amazonaws.resourcegroupstaggingapi#TagKeyList", "traits": { - "smithy.api#documentation": "

A list of all tag keys in the AWS account.

" + "smithy.api#documentation": "

A list of all tag keys in the Amazon Web Services account.

" } } } @@ -502,7 +502,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns all tag values for the specified key that are used in the specified AWS\n Region for the calling AWS account.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", + "smithy.api#documentation": "

Returns all tag values for the specified key that are used in the specified Amazon Web Services\n Region for the calling account.

\n

This operation supports pagination, where the response can be sent in \n multiple pages. You should check the PaginationToken response parameter to determine\n if there are additional results available to return. Repeat the query, passing the\n PaginationToken response parameter value as an input to the next request until you\n recieve a null value. A null value for PaginationToken indicates that\n there are no more results waiting to be returned.

", "smithy.api#paginated": { "inputToken": "PaginationToken", "outputToken": "PaginationToken", @@ -522,7 +522,7 @@ "Key": { "target": "com.amazonaws.resourcegroupstaggingapi#TagKey", "traits": { - "smithy.api#documentation": "

Specifies the tag key for which you want to list all existing values that are\n currently used in the specified AWS Region for the calling AWS account.

", + "smithy.api#documentation": "

Specifies the tag key for which you want to list all existing values that are\n currently used in the specified Amazon Web Services Region for the calling account.

", "smithy.api#required": {} } } @@ -540,7 +540,7 @@ "TagValues": { "target": "com.amazonaws.resourcegroupstaggingapi#TagValuesOutputList", "traits": { - "smithy.api#documentation": "

A list of all tag values for the specified key currently used in the specified AWS\n Region for the calling AWS account.

" + "smithy.api#documentation": "

A list of all tag values for the specified key currently used in the specified Amazon Web Services\n Region for the calling account.

" } } } @@ -596,7 +596,7 @@ } }, "traits": { - "smithy.api#documentation": "

This error indicates one of the following:

\n ", + "smithy.api#documentation": "

This error indicates one of the following:

\n ", "smithy.api#error": "client" } }, @@ -623,7 +623,7 @@ "min": 0, "max": 2048 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#PaginationTokenExpiredException": { @@ -645,7 +645,7 @@ "min": 1, "max": 256 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#RegionFilterList": { @@ -667,7 +667,7 @@ "min": 1, "max": 1011 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#ResourceARNListForGet": { @@ -696,6 +696,21 @@ }, "com.amazonaws.resourcegroupstaggingapi#ResourceGroupsTaggingAPI_20170126": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Resource Groups Tagging API", + "arnNamespace": "tagging", + "cloudFormationName": "ResourceGroupsTaggingAPI", + "cloudTrailEventSource": "resourcegroupstaggingapi.amazonaws.com", + "endpointPrefix": "tagging" + }, + "aws.auth#sigv4": { + "name": "tagging" + }, + "aws.protocols#awsJson1_1": {}, + "smithy.api#documentation": "Resource Groups Tagging API", + "smithy.api#title": "AWS Resource Groups Tagging API" + }, "version": "2017-01-26", "operations": [ { @@ -722,22 +737,7 @@ { "target": "com.amazonaws.resourcegroupstaggingapi#UntagResources" } - ], - "traits": { - "aws.api#service": { - "sdkId": "Resource Groups Tagging API", - "arnNamespace": "tagging", - "cloudFormationName": "ResourceGroupsTaggingAPI", - "cloudTrailEventSource": "resourcegroupstaggingapi.amazonaws.com", - "endpointPrefix": "tagging" - }, - "aws.auth#sigv4": { - "name": "tagging" - }, - "aws.protocols#awsJson1_1": {}, - "smithy.api#documentation": "Resource Groups Tagging API", - "smithy.api#title": "AWS Resource Groups Tagging API" - } + ] }, "com.amazonaws.resourcegroupstaggingapi#ResourceTagMapping": { "type": "structure", @@ -751,7 +751,7 @@ "Tags": { "target": "com.amazonaws.resourcegroupstaggingapi#TagList", "traits": { - "smithy.api#documentation": "

The tags that have been applied to one or more AWS resources.

" + "smithy.api#documentation": "

The tags that have been applied to one or more Amazon Web Services resources.

" } }, "ComplianceDetails": { @@ -790,7 +790,7 @@ "min": 3, "max": 63 }, - "smithy.api#pattern": "[a-z0-9.-]*" + "smithy.api#pattern": "^[a-z0-9.-]*$" } }, "com.amazonaws.resourcegroupstaggingapi#S3Location": { @@ -862,7 +862,7 @@ "TargetId": { "target": "com.amazonaws.resourcegroupstaggingapi#TargetId", "traits": { - "smithy.api#documentation": "

The account identifier or the root identifier of the organization. If you don't know\n the root ID, you can call the AWS Organizations ListRoots API.

" + "smithy.api#documentation": "

The account identifier or the root identifier of the organization. If you don't know\n the root ID, you can call the Organizations ListRoots API.

" } }, "TargetIdType": { @@ -874,13 +874,13 @@ "Region": { "target": "com.amazonaws.resourcegroupstaggingapi#Region", "traits": { - "smithy.api#documentation": "

The AWS Region that the summary applies to.

" + "smithy.api#documentation": "

The Amazon Web Services Region that the summary applies to.

" } }, "ResourceType": { "target": "com.amazonaws.resourcegroupstaggingapi#AmazonResourceType", "traits": { - "smithy.api#documentation": "

The AWS resource type.

" + "smithy.api#documentation": "

The Amazon Web Services resource type.

" } }, "NonCompliantResources": { @@ -906,20 +906,20 @@ "Key": { "target": "com.amazonaws.resourcegroupstaggingapi#TagKey", "traits": { - "smithy.api#documentation": "

One part of a key-value pair that makes up a tag. A key is a general label that acts like a category for more specific tag values.

", + "smithy.api#documentation": "

One part of a key-value pair that makes up a tag. A key is a general label \n that acts like a category for more specific tag values.

", "smithy.api#required": {} } }, "Value": { "target": "com.amazonaws.resourcegroupstaggingapi#TagValue", "traits": { - "smithy.api#documentation": "

One part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key). The value can be empty or null.

", + "smithy.api#documentation": "

One part of a key-value pair that make up a tag. A value acts as a \n descriptor within a tag category (key). The value can be empty or null.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

The metadata that you apply to AWS resources to help you categorize and organize\n them. Each tag consists of a key and a value, both of which you define. For more\n information, see Tagging AWS\n Resources in the AWS General Reference.

" + "smithy.api#documentation": "

The metadata that you apply to Amazon Web Services resources to help you categorize and organize\n them. Each tag consists of a key and a value, both of which you define. For more\n information, see Tagging Amazon Web Services Resources in the Amazon Web Services General Reference.

" } }, "com.amazonaws.resourcegroupstaggingapi#TagFilter": { @@ -928,13 +928,13 @@ "Key": { "target": "com.amazonaws.resourcegroupstaggingapi#TagKey", "traits": { - "smithy.api#documentation": "

One part of a key-value pair that makes up a tag. A key is a general label that acts like a category for more specific tag values.

" + "smithy.api#documentation": "

One part of a key-value pair that makes up a tag. A key is a general label \n that acts like a category for more specific tag values.

" } }, "Values": { "target": "com.amazonaws.resourcegroupstaggingapi#TagValueList", "traits": { - "smithy.api#documentation": "

One part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key). The value can be empty or null.

" + "smithy.api#documentation": "

One part of a key-value pair that make up a tag. A value acts as a \n descriptor within a tag category (key). The value can be empty or null.

" } } }, @@ -961,7 +961,7 @@ "min": 1, "max": 128 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#TagKeyFilterList": { @@ -1035,7 +1035,7 @@ } ], "traits": { - "smithy.api#documentation": "

Applies one or more tags to the specified resources. Note the following:

\n \n \n

Do not store personally identifiable information (PII) or other confidential or\n sensitive information in tags. We use tags to provide you with billing and\n administration services. Tags are not intended to be used for private or sensitive\n data.

\n
" + "smithy.api#documentation": "

Applies one or more tags to the specified resources. Note the following:

\n \n \n

Do not store personally identifiable information (PII) or other confidential or\n sensitive information in tags. We use tags to provide you with billing and\n administration services. Tags are not intended to be used for private or sensitive\n data.

\n
\n

\n Minimum permissions\n

\n

In addition to the tag:TagResources permission required by this\n operation, you must also have the tagging permission defined by the service that created\n the resource. For example, to tag an Amazon EC2 instance using the TagResources\n operation, you must have both of the following permissions:

\n " } }, "com.amazonaws.resourcegroupstaggingapi#TagResourcesInput": { @@ -1044,7 +1044,7 @@ "ResourceARNList": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceARNListForTagUntag", "traits": { - "smithy.api#documentation": "

Specifies the list of ARNs of the resources that you want to apply tags to.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and AWS Service Namespaces in the AWS\n General Reference.

", + "smithy.api#documentation": "

Specifies the list of ARNs of the resources that you want to apply tags to.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and Amazon Web Services Service Namespaces in the Amazon Web Services\n General Reference.

", "smithy.api#required": {} } }, @@ -1075,7 +1075,7 @@ "min": 0, "max": 256 }, - "smithy.api#pattern": "[\\s\\S]*" + "smithy.api#pattern": "^[\\s\\S]*$" } }, "com.amazonaws.resourcegroupstaggingapi#TagValueList": { @@ -1109,7 +1109,7 @@ "min": 6, "max": 68 }, - "smithy.api#pattern": "[a-zA-Z0-9-]*" + "smithy.api#pattern": "^[a-zA-Z0-9-]*$" } }, "com.amazonaws.resourcegroupstaggingapi#TargetIdFilterList": { @@ -1175,7 +1175,7 @@ } ], "traits": { - "smithy.api#documentation": "

Removes the specified tags from the specified resources. When you specify a tag key,\n the action removes both that key and its associated value. The operation succeeds even\n if you attempt to remove tags from a resource that were already removed. Note the\n following:

\n " + "smithy.api#documentation": "

Removes the specified tags from the specified resources. When you specify a tag key,\n the action removes both that key and its associated value. The operation succeeds even\n if you attempt to remove tags from a resource that were already removed. Note the\n following:

\n \n \n

\n Minimum permissions\n

\n

In addition to the tag:UntagResources permission required by this\n operation, you must also have the remove tags permission defined by the service that\n created the resource. For example, to remove the tags from an Amazon EC2 instance using the\n UntagResources operation, you must have both of the following\n permissions:

\n " } }, "com.amazonaws.resourcegroupstaggingapi#UntagResourcesInput": { @@ -1184,7 +1184,7 @@ "ResourceARNList": { "target": "com.amazonaws.resourcegroupstaggingapi#ResourceARNListForTagUntag", "traits": { - "smithy.api#documentation": "

Specifies a list of ARNs of the resources that you want to remove tags from.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and AWS Service Namespaces in the AWS\n General Reference.

", + "smithy.api#documentation": "

Specifies a list of ARNs of the resources that you want to remove tags from.

\n

An ARN (Amazon Resource Name) uniquely identifies a resource. For more information,\n see Amazon\n Resource Names (ARNs) and Amazon Web Services Service Namespaces in the Amazon Web Services\n General Reference.

", "smithy.api#required": {} } }, diff --git a/codegen/sdk-codegen/aws-models/sagemaker.2017-07-24.json b/codegen/sdk-codegen/aws-models/sagemaker.2017-07-24.json index 216ae708ef5..d3c8743b7f5 100644 --- a/codegen/sdk-codegen/aws-models/sagemaker.2017-07-24.json +++ b/codegen/sdk-codegen/aws-models/sagemaker.2017-07-24.json @@ -319,12 +319,12 @@ "AlarmName": { "target": "com.amazonaws.sagemaker#AlarmName", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

The name of a CloudWatch alarm in your account.

" } } }, "traits": { - "smithy.api#documentation": "

This API is not supported.

" + "smithy.api#documentation": "

An Amazon CloudWatch alarm configured to monitor metrics on an endpoint.

" } }, "com.amazonaws.sagemaker#AlarmList": { @@ -2397,12 +2397,12 @@ "Alarms": { "target": "com.amazonaws.sagemaker#AlarmList", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

List of CloudWatch alarms in your account that are configured to monitor metrics on an endpoint.\n If any alarms are tripped during a deployment, SageMaker rolls back the deployment.

" } } }, "traits": { - "smithy.api#documentation": "

Currently, the AutoRollbackConfig API is not supported.

" + "smithy.api#documentation": "

Automatic rollback configuration for handling endpoint deployment failures and recovery.

" } }, "com.amazonaws.sagemaker#AwsManagedHumanLoopRequestSource": { @@ -2605,25 +2605,25 @@ "TrafficRoutingConfiguration": { "target": "com.amazonaws.sagemaker#TrafficRoutingConfig", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

Defines the traffic routing strategy to shift traffic from the old fleet to the new fleet\n during an endpoint deployment.

", "smithy.api#required": {} } }, "TerminationWaitInSeconds": { "target": "com.amazonaws.sagemaker#TerminationWaitInSeconds", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

Additional waiting time in seconds after the completion of an endpoint deployment\n before terminating the old endpoint fleet. Default is 0.

" } }, "MaximumExecutionTimeoutInSeconds": { "target": "com.amazonaws.sagemaker#MaximumExecutionTimeoutInSeconds", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

Maximum execution timeout for the deployment. Note that the timeout value should be larger\n than the total waiting time specified in TerminationWaitInSeconds and WaitIntervalInSeconds.

" } } }, "traits": { - "smithy.api#documentation": "

Currently, the BlueGreenUpdatePolicy API is not supported.

" + "smithy.api#documentation": "

Update policy for a blue/green deployment. If this update policy is specified, SageMaker\n creates a new fleet during the deployment while maintaining the old fleet. SageMaker flips\n traffic to the new fleet according to the specified traffic routing configuration. Only\n one update policy should be used in the deployment configuration. If no update policy is\n specified, SageMaker uses a blue/green deployment strategy with all at once traffic shifting\n by default.

" } }, "com.amazonaws.sagemaker#Boolean": { @@ -2852,20 +2852,20 @@ "Type": { "target": "com.amazonaws.sagemaker#CapacitySizeType", "traits": { - "smithy.api#documentation": "

This API is not supported.

", + "smithy.api#documentation": "

Specifies the endpoint capacity type.

\n ", "smithy.api#required": {} } }, "Value": { "target": "com.amazonaws.sagemaker#CapacitySizeValue", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

Defines the capacity size, either as a number of instances or a capacity percentage.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Currently, the CapacitySize API is not supported.

" + "smithy.api#documentation": "

Specifies the endpoint capacity to activate for production.

" } }, "com.amazonaws.sagemaker#CapacitySizeType": { @@ -5158,6 +5158,9 @@ "smithy.api#required": {} } }, + "DeploymentConfig": { + "target": "com.amazonaws.sagemaker#DeploymentConfig" + }, "Tags": { "target": "com.amazonaws.sagemaker#TagList", "traits": { @@ -9452,19 +9455,19 @@ "BlueGreenUpdatePolicy": { "target": "com.amazonaws.sagemaker#BlueGreenUpdatePolicy", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

Update policy for a blue/green deployment. If this update policy is specified, SageMaker\n creates a new fleet during the deployment while maintaining the old fleet. SageMaker flips\n traffic to the new fleet according to the specified traffic routing configuration. Only\n one update policy should be used in the deployment configuration. If no update policy is\n specified, SageMaker uses a blue/green deployment strategy with all at once traffic shifting\n by default.

", "smithy.api#required": {} } }, "AutoRollbackConfiguration": { "target": "com.amazonaws.sagemaker#AutoRollbackConfig", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

Automatic rollback configuration for handling endpoint deployment failures and recovery.

" } } }, "traits": { - "smithy.api#documentation": "

Currently, the DeploymentConfig API is not supported.

" + "smithy.api#documentation": "

The deployment configuration for an endpoint, which contains the desired deployment\n strategy and rollback configurations.

" } }, "com.amazonaws.sagemaker#DeregisterDevices": { @@ -10721,6 +10724,12 @@ "traits": { "smithy.api#documentation": "

The response from the last list when returning a list large enough to need tokening.

" } + }, + "AgentVersion": { + "target": "com.amazonaws.sagemaker#EdgeVersion", + "traits": { + "smithy.api#documentation": "

Edge Manager agent version.

" + } } } }, @@ -11232,6 +11241,12 @@ "traits": { "smithy.api#documentation": "

Returns the description of an endpoint configuration created \n using the \n CreateEndpointConfig\n API.

" } + }, + "PendingDeploymentSummary": { + "target": "com.amazonaws.sagemaker#PendingDeploymentSummary", + "traits": { + "smithy.api#documentation": "

Returns the summary of an in-progress deployment. This field is only returned when the\n endpoint is creating or updating with a new endpoint configuration.

" + } } } }, @@ -15115,6 +15130,12 @@ "traits": { "smithy.api#documentation": "

Models on the device.

" } + }, + "AgentVersion": { + "target": "com.amazonaws.sagemaker#EdgeVersion", + "traits": { + "smithy.api#documentation": "

Edge Manager agent version.

" + } } }, "traits": { @@ -17690,14 +17711,14 @@ "TaskTimeLimitInSeconds": { "target": "com.amazonaws.sagemaker#TaskTimeLimitInSeconds", "traits": { - "smithy.api#documentation": "

The amount of time that a worker has to complete a task.

\n

If you create a custom labeling job, the maximum value for this parameter is 8 hours\n (28,800 seconds).

\n

If you create a labeling job using a built-in task type the maximum\n for this parameter depends on the task type you use:

\n ", + "smithy.api#documentation": "

The amount of time that a worker has to complete a task.

\n

If you create a custom labeling job, the maximum value for this parameter is 8 hours\n (28,800 seconds).

\n

If you create a labeling job using a built-in task type the maximum\n for this parameter depends on the task type you use:

\n ", "smithy.api#required": {} } }, "TaskAvailabilityLifetimeInSeconds": { "target": "com.amazonaws.sagemaker#TaskAvailabilityLifetimeInSeconds", "traits": { - "smithy.api#documentation": "

The length of time that a task remains available for labeling by human workers. The\n default and maximum values for this parameter depend on the type of workforce you\n use.

\n " + "smithy.api#documentation": "

The length of time that a task remains available for labeling by human workers. The\n default and maximum values for this parameter depend on the type of workforce you\n use.

\n " } }, "MaxConcurrentTaskCount": { @@ -28641,6 +28662,107 @@ "target": "com.amazonaws.sagemaker#Parent" } }, + "com.amazonaws.sagemaker#PendingDeploymentSummary": { + "type": "structure", + "members": { + "EndpointConfigName": { + "target": "com.amazonaws.sagemaker#EndpointConfigName", + "traits": { + "smithy.api#documentation": "

The name of the endpoint configuration used in the deployment.

", + "smithy.api#required": {} + } + }, + "ProductionVariants": { + "target": "com.amazonaws.sagemaker#PendingProductionVariantSummaryList", + "traits": { + "smithy.api#documentation": "

List of PendingProductionVariantSummary objects.

" + } + }, + "StartTime": { + "target": "com.amazonaws.sagemaker#Timestamp", + "traits": { + "smithy.api#documentation": "

The start time of the deployment.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The summary of an in-progress deployment when an endpoint is creating or\n updating with a new endpoint configuration.

" + } + }, + "com.amazonaws.sagemaker#PendingProductionVariantSummary": { + "type": "structure", + "members": { + "VariantName": { + "target": "com.amazonaws.sagemaker#VariantName", + "traits": { + "smithy.api#documentation": "

The name of the variant.

", + "smithy.api#required": {} + } + }, + "DeployedImages": { + "target": "com.amazonaws.sagemaker#DeployedImages", + "traits": { + "smithy.api#documentation": "

An array of DeployedImage objects that specify the Amazon EC2\n Container Registry paths of the inference images deployed on instances of this\n ProductionVariant.

" + } + }, + "CurrentWeight": { + "target": "com.amazonaws.sagemaker#VariantWeight", + "traits": { + "smithy.api#documentation": "

The weight associated with the variant.

" + } + }, + "DesiredWeight": { + "target": "com.amazonaws.sagemaker#VariantWeight", + "traits": { + "smithy.api#documentation": "

The requested weight for the variant in this deployment, as specified in the endpoint configuration\n for the endpoint. The value is taken from the request to the \n CreateEndpointConfig\n operation.

" + } + }, + "CurrentInstanceCount": { + "target": "com.amazonaws.sagemaker#TaskCount", + "traits": { + "smithy.api#documentation": "

The number of instances associated with the variant.

" + } + }, + "DesiredInstanceCount": { + "target": "com.amazonaws.sagemaker#TaskCount", + "traits": { + "smithy.api#documentation": "

The number of instances requested in this deployment, as specified in the endpoint configuration\n for the endpoint. The value is taken from the request to the \n CreateEndpointConfig\n operation.

" + } + }, + "InstanceType": { + "target": "com.amazonaws.sagemaker#ProductionVariantInstanceType", + "traits": { + "smithy.api#documentation": "

The type of instances associated with the variant.

" + } + }, + "AcceleratorType": { + "target": "com.amazonaws.sagemaker#ProductionVariantAcceleratorType", + "traits": { + "smithy.api#documentation": "

The size of the Elastic Inference (EI) instance to use for the production variant. EI\n instances provide on-demand GPU computing for inference. For more information, see\n Using Elastic\n Inference in Amazon SageMaker.

" + } + }, + "VariantStatus": { + "target": "com.amazonaws.sagemaker#ProductionVariantStatusList", + "traits": { + "smithy.api#documentation": "

The endpoint variant status which describes the current deployment stage status or operational status.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The production variant summary for a deployment when an endpoint is\n creating or updating with the \n CreateEndpoint\n \n or \n UpdateEndpoint\n operations.\n Describes the VariantStatus , weight and capacity for a production\n variant associated with an endpoint.\n

" + } + }, + "com.amazonaws.sagemaker#PendingProductionVariantSummaryList": { + "type": "list", + "member": { + "target": "com.amazonaws.sagemaker#PendingProductionVariantSummary" + }, + "traits": { + "smithy.api#length": { + "min": 1 + } + } + }, "com.amazonaws.sagemaker#Pipeline": { "type": "structure", "members": { @@ -30476,6 +30598,45 @@ } } }, + "com.amazonaws.sagemaker#ProductionVariantStatus": { + "type": "structure", + "members": { + "Status": { + "target": "com.amazonaws.sagemaker#VariantStatus", + "traits": { + "smithy.api#documentation": "

The endpoint variant status which describes the current deployment stage status or operational status.

\n ", + "smithy.api#required": {} + } + }, + "StatusMessage": { + "target": "com.amazonaws.sagemaker#VariantStatusMessage", + "traits": { + "smithy.api#documentation": "

A message that describes the status of the production variant.

" + } + }, + "StartTime": { + "target": "com.amazonaws.sagemaker#Timestamp", + "traits": { + "smithy.api#documentation": "

The start time of the current status change.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes the status of the production variant.

" + } + }, + "com.amazonaws.sagemaker#ProductionVariantStatusList": { + "type": "list", + "member": { + "target": "com.amazonaws.sagemaker#ProductionVariantStatus" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 5 + } + } + }, "com.amazonaws.sagemaker#ProductionVariantSummary": { "type": "structure", "members": { @@ -30515,6 +30676,12 @@ "traits": { "smithy.api#documentation": "

The number of instances requested in the\n UpdateEndpointWeightsAndCapacities request.

" } + }, + "VariantStatus": { + "target": "com.amazonaws.sagemaker#ProductionVariantStatusList", + "traits": { + "smithy.api#documentation": "

The endpoint variant status which describes the current deployment stage status or operational status.

" + } } }, "traits": { @@ -35085,26 +35252,32 @@ "Type": { "target": "com.amazonaws.sagemaker#TrafficRoutingConfigType", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

Traffic routing strategy type.

\n ", "smithy.api#required": {} } }, "WaitIntervalInSeconds": { "target": "com.amazonaws.sagemaker#WaitIntervalInSeconds", "traits": { - "smithy.api#documentation": "

", + "smithy.api#documentation": "

The waiting time (in seconds) between incremental steps to turn on traffic on the\n new endpoint fleet.

", "smithy.api#required": {} } }, "CanarySize": { "target": "com.amazonaws.sagemaker#CapacitySize", "traits": { - "smithy.api#documentation": "

" + "smithy.api#documentation": "

Batch size for the first step to turn on traffic on the new endpoint fleet. Value must be less than\n or equal to 50% of the variant's total instance count.

" + } + }, + "LinearStepSize": { + "target": "com.amazonaws.sagemaker#CapacitySize", + "traits": { + "smithy.api#documentation": "

Batch size for each step to turn on traffic on the new endpoint fleet. Value must be\n 10-50% of the variant's total instance count.

" } } }, "traits": { - "smithy.api#documentation": "

Currently, the TrafficRoutingConfig API is not supported.

" + "smithy.api#documentation": "

Defines the traffic routing strategy during an endpoint deployment to shift traffic from the\n old fleet to the new fleet.

" } }, "com.amazonaws.sagemaker#TrafficRoutingConfigType": { @@ -35118,6 +35291,10 @@ { "value": "CANARY", "name": "CANARY" + }, + { + "value": "LINEAR", + "name": "LINEAR" } ] } @@ -37757,7 +37934,13 @@ "DeploymentConfig": { "target": "com.amazonaws.sagemaker#DeploymentConfig", "traits": { - "smithy.api#documentation": "

The deployment configuration for the endpoint to be updated.

" + "smithy.api#documentation": "

The deployment configuration for an endpoint, which contains the desired deployment strategy and rollback configurations.

" + } + }, + "RetainDeploymentConfig": { + "target": "com.amazonaws.sagemaker#Boolean", + "traits": { + "smithy.api#documentation": "

Specifies whether to reuse the last deployment configuration. The default value is\n false (the configuration is not reused).

" } } } @@ -39008,6 +39191,42 @@ ] } }, + "com.amazonaws.sagemaker#VariantStatus": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "Creating", + "name": "CREATING" + }, + { + "value": "Updating", + "name": "UPDATING" + }, + { + "value": "Deleting", + "name": "DELETING" + }, + { + "value": "ActivatingTraffic", + "name": "ACTIVATING_TRAFFIC" + }, + { + "value": "Baking", + "name": "BAKING" + } + ] + } + }, + "com.amazonaws.sagemaker#VariantStatusMessage": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 1024 + } + } + }, "com.amazonaws.sagemaker#VariantWeight": { "type": "float", "traits": { diff --git a/codegen/sdk-codegen/aws-models/translate.2017-07-01.json b/codegen/sdk-codegen/aws-models/translate.2017-07-01.json index 7ab43439499..157a7697d03 100644 --- a/codegen/sdk-codegen/aws-models/translate.2017-07-01.json +++ b/codegen/sdk-codegen/aws-models/translate.2017-07-01.json @@ -31,6 +31,21 @@ "shapes": { "com.amazonaws.translate#AWSShineFrontendService_20170701": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Translate", + "arnNamespace": "translate", + "cloudFormationName": "Translate", + "cloudTrailEventSource": "translate.amazonaws.com", + "endpointPrefix": "translate" + }, + "aws.auth#sigv4": { + "name": "translate" + }, + "aws.protocols#awsJson1_1": {}, + "smithy.api#documentation": "

Provides translation between one source language and another of the same set of\n languages.

", + "smithy.api#title": "Amazon Translate" + }, "version": "2017-07-01", "operations": [ { @@ -75,22 +90,7 @@ { "target": "com.amazonaws.translate#UpdateParallelData" } - ], - "traits": { - "aws.api#service": { - "sdkId": "Translate", - "arnNamespace": "translate", - "cloudFormationName": "Translate", - "cloudTrailEventSource": "translate.amazonaws.com", - "endpointPrefix": "translate" - }, - "aws.auth#sigv4": { - "name": "translate" - }, - "aws.protocols#awsJson1_1": {}, - "smithy.api#documentation": "

Provides translation between one source language and another of the same set of\n languages.

", - "smithy.api#title": "Amazon Translate" - } + ] }, "com.amazonaws.translate#AppliedTerminology": { "type": "structure", @@ -125,7 +125,7 @@ "min": 1, "max": 5000 }, - "smithy.api#pattern": "[\\P{M}\\p{M}]{1,5000}" + "smithy.api#pattern": "^[\\P{M}\\p{M}]{1,5000}$" } }, "com.amazonaws.translate#ClientTokenString": { @@ -203,7 +203,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a parallel data resource in Amazon Translate by importing an input file from\n Amazon S3. Parallel data files contain examples of source phrases and their translations from\n your translation memory. By adding parallel data, you can influence the style, tone, and word\n choice in your translation output.

" + "smithy.api#documentation": "

Creates a parallel data resource in Amazon Translate by importing an input file from\n Amazon S3. Parallel data files contain examples that show how you want segments of text to be\n translated. By adding parallel data, you can influence the style, tone, and word choice in\n your translation output.

" } }, "com.amazonaws.translate#CreateParallelDataRequest": { @@ -369,7 +369,7 @@ } ], "traits": { - "smithy.api#documentation": "

Gets the properties associated with an asycnhronous batch translation job including name,\n ID, status, source and target languages, input/output S3 buckets, and so on.

" + "smithy.api#documentation": "

Gets the properties associated with an asynchronous batch translation job including name,\n ID, status, source and target languages, input/output S3 buckets, and so on.

" } }, "com.amazonaws.translate#DescribeTextTranslationJobRequest": { @@ -402,7 +402,7 @@ "min": 0, "max": 256 }, - "smithy.api#pattern": "[\\P{M}\\p{M}]{0,256}" + "smithy.api#pattern": "^[\\P{M}\\p{M}]{0,256}$" } }, "com.amazonaws.translate#DetectedLanguageLowConfidenceException": { @@ -424,6 +424,21 @@ "smithy.api#httpError": 400 } }, + "com.amazonaws.translate#Directionality": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "UNI", + "name": "UNI" + }, + { + "value": "MULTI", + "name": "MULTI" + } + ] + } + }, "com.amazonaws.translate#EncryptionKey": { "type": "structure", "members": { @@ -453,7 +468,7 @@ "min": 1, "max": 400 }, - "smithy.api#pattern": "(arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:kms:)?([a-z]{2}-[a-z]+(-[a-z]+)?-\\d:)?(\\d{12}:)?(((key/)?[a-zA-Z0-9-_]+)|(alias/[a-zA-Z0-9:/_-]+))" + "smithy.api#pattern": "^(arn:aws((-us-gov)|(-iso)|(-iso-b)|(-cn))?:kms:)?([a-z]{2}-[a-z]+(-[a-z]+)?-\\d:)?(\\d{12}:)?(((key/)?[a-zA-Z0-9-_]+)|(alias/[a-zA-Z0-9:/_-]+))$" } }, "com.amazonaws.translate#EncryptionKeyType": { @@ -517,7 +532,7 @@ "DataLocation": { "target": "com.amazonaws.translate#ParallelDataDataLocation", "traits": { - "smithy.api#documentation": "

The location of the most recent parallel data input file that was successfully imported\n into Amazon Translate. The location is returned as a presigned URL that has a 30 minute\n expiration.

" + "smithy.api#documentation": "

The Amazon S3 location of the most recent parallel data input file that was successfully\n imported into Amazon Translate. The location is returned as a presigned URL that has a 30\n minute expiration.

\n \n \n

Amazon Translate doesn't scan parallel data input files for the risk of CSV injection\n attacks.

\n

CSV injection occurs when a .csv or .tsv file is altered so that a record contains\n malicious code. The record begins with a special character, such as =, +, -, or @. When the\n file is opened in a spreadsheet program, the program might interpret the record as a formula\n and run the code within it.

\n

Before you download a parallel data input file from Amazon S3, ensure that you recognize the file and trust its creator.

\n
" } }, "AuxiliaryDataLocation": { @@ -573,8 +588,7 @@ "TerminologyDataFormat": { "target": "com.amazonaws.translate#TerminologyDataFormat", "traits": { - "smithy.api#documentation": "

The data format of the custom terminology being retrieved, either CSV or TMX.

", - "smithy.api#required": {} + "smithy.api#documentation": "

The data format of the custom terminology being retrieved.

\n

If you don't specify this parameter, Amazon Translate returns a file that has the same\n format as the file that was imported to create the terminology.

\n

If you specify this parameter when you retrieve a multi-directional terminology resource,\n you must specify the same format as that of the input file that was imported to create it.\n Otherwise, Amazon Translate throws an error.

" } } } @@ -593,6 +607,12 @@ "traits": { "smithy.api#documentation": "

The data location of the custom terminology being retrieved. The custom terminology file\n is returned in a presigned url that has a 30 minute expiration.

" } + }, + "AuxiliaryDataLocation": { + "target": "com.amazonaws.translate#TerminologyDataLocation", + "traits": { + "smithy.api#documentation": "

The Amazon S3 location of a file that provides any errors or warnings that were produced\n by your input file. This file was created when Amazon Translate attempted to create a\n terminology resource. The location is returned as a presigned URL to that has a 30 minute\n expiration.

" + } } } }, @@ -603,7 +623,7 @@ "min": 20, "max": 2048 }, - "smithy.api#pattern": "arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+" + "smithy.api#pattern": "^arn:aws(-[^:]+)?:iam::[0-9]{12}:role/.+$" } }, "com.amazonaws.translate#ImportTerminology": { @@ -678,6 +698,12 @@ "traits": { "smithy.api#documentation": "

The properties of the custom terminology being imported.

" } + }, + "AuxiliaryDataLocation": { + "target": "com.amazonaws.translate#TerminologyDataLocation", + "traits": { + "smithy.api#documentation": "

The Amazon S3 location of a file that provides any errors or warnings that were produced\n by your input file. This file was created when Amazon Translate attempted to create a\n terminology resource. The location is returned as a presigned URL to that has a 30 minute\n expiration.

" + } } } }, @@ -694,7 +720,7 @@ "ContentType": { "target": "com.amazonaws.translate#ContentType", "traits": { - "smithy.api#documentation": "

Describes the format of the data that you submit to Amazon Translate as input. You can\n specify one of the following multipurpose internet mail extension (MIME) types:

\n \n \n

If you structure your input data as HTML, ensure that you set this parameter to\n text/html. By doing so, you cut costs by limiting the translation to the\n contents of the html element in each file. Otherwise, if you set this parameter\n to text/plain, your costs will cover the translation of every character.

\n
", + "smithy.api#documentation": "

Describes the format of the data that you submit to Amazon Translate as input. You can\n specify one of the following multipurpose internet mail extension (MIME) types:

\n \n \n

If you structure your input data as HTML, ensure that you set this parameter to\n text/html. By doing so, you cut costs by limiting the translation to the\n contents of the html element in each file. Otherwise, if you set this parameter\n to text/plain, your costs will cover the translation of every character.

\n
", "smithy.api#required": {} } } @@ -1060,7 +1086,7 @@ "NextToken": { "target": "com.amazonaws.translate#NextToken", "traits": { - "smithy.api#documentation": "

The token to use to retreive the next page of results. This value is null\n when there are no more results to return.

" + "smithy.api#documentation": "

The token to use to retrieve the next page of results. This value is null\n when there are no more results to return.

" } } } @@ -1099,7 +1125,7 @@ "min": 0, "max": 8192 }, - "smithy.api#pattern": "\\p{ASCII}{0,8192}" + "smithy.api#pattern": "^\\p{ASCII}{0,8192}$" } }, "com.amazonaws.translate#OutputDataConfig": { @@ -1111,6 +1137,9 @@ "smithy.api#documentation": "

The URI of the S3 folder that contains a translation job's output file. The folder must\n be in the same Region as the API endpoint that you are calling.

", "smithy.api#required": {} } + }, + "EncryptionKey": { + "target": "com.amazonaws.translate#EncryptionKey" } }, "traits": { @@ -1161,7 +1190,7 @@ "Location": { "target": "com.amazonaws.translate#String", "traits": { - "smithy.api#documentation": "

The Amazon S3 location of the parallel data input file. The location is returned as a\n presigned URL to that has a 30 minute expiration.

", + "smithy.api#documentation": "

The Amazon S3 location of the parallel data input file. The location is returned as a\n presigned URL to that has a 30 minute expiration.

\n \n \n

Amazon Translate doesn't scan parallel data input files for the risk of CSV injection\n attacks.

\n

CSV injection occurs when a .csv or .tsv file is altered so that a record contains\n malicious code. The record begins with a special character, such as =, +, -, or @. When the\n file is opened in a spreadsheet program, the program might interpret the record as a formula\n and run the code within it.

\n

Before you download a parallel data input file from Amazon S3, ensure that you recognize the file and trust its creator.

\n
", "smithy.api#required": {} } } @@ -1365,7 +1394,7 @@ "min": 0, "max": 1024 }, - "smithy.api#pattern": "s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?" + "smithy.api#pattern": "^s3://[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9](/.*)?$" } }, "com.amazonaws.translate#ServiceUnavailableException": { @@ -1393,6 +1422,9 @@ { "target": "com.amazonaws.translate#InternalServerException" }, + { + "target": "com.amazonaws.translate#InvalidParameterValueException" + }, { "target": "com.amazonaws.translate#InvalidRequestException" }, @@ -1436,7 +1468,7 @@ "DataAccessRoleArn": { "target": "com.amazonaws.translate#IamRoleArn", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of an AWS Identity Access and Management (IAM) role\n that grants Amazon Translate read access to your input data. For more nformation, see identity-and-access-management.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of an AWS Identity Access and Management (IAM) role\n that grants Amazon Translate read access to your input data. For more information, see identity-and-access-management.

", "smithy.api#required": {} } }, @@ -1457,13 +1489,13 @@ "TerminologyNames": { "target": "com.amazonaws.translate#ResourceNameList", "traits": { - "smithy.api#documentation": "

The name of the terminology to use in the batch translation job. For a list of available\n terminologies, use the ListTerminologies operation.

" + "smithy.api#documentation": "

The name of a custom terminology resource to add to the translation job. This resource\n lists examples source terms and the desired translation for each term.

\n

This parameter accepts only one custom terminology resource.

\n

For a list of available custom terminology resources, use the ListTerminologies operation.

\n

For more information, see how-custom-terminology.

" } }, "ParallelDataNames": { "target": "com.amazonaws.translate#ResourceNameList", "traits": { - "smithy.api#documentation": "

The names of the parallel data resources to use in the batch translation job. For a list\n of available parallel data resources, use the ListParallelData\n operation.

" + "smithy.api#documentation": "

The name of a parallel data resource to add to the translation job. This resource consists\n of examples that show how you want segments of text to be translated. When you add parallel\n data to a translation job, you create an Active Custom Translation job.

\n

This parameter accepts only one parallel data resource.

\n \n

Active Custom Translation jobs are priced at a higher rate than other jobs that don't\n use parallel data. For more information, see Amazon Translate pricing.

\n
\n

For a list of available parallel data resources, use the ListParallelData operation.

\n

For more information, see customizing-translations-parallel-data.

" } }, "ClientToken": { @@ -1552,7 +1584,7 @@ "min": 0, "max": 10000 }, - "smithy.api#pattern": "[\\P{M}\\p{M}]{0,10000}" + "smithy.api#pattern": "^[\\P{M}\\p{M}]{0,10000}$" } }, "com.amazonaws.translate#TargetLanguageCodeStringList": { @@ -1615,9 +1647,15 @@ "Format": { "target": "com.amazonaws.translate#TerminologyDataFormat", "traits": { - "smithy.api#documentation": "

The data format of the custom terminology. Either CSV or TMX.

", + "smithy.api#documentation": "

The data format of the custom terminology.

", "smithy.api#required": {} } + }, + "Directionality": { + "target": "com.amazonaws.translate#Directionality", + "traits": { + "smithy.api#documentation": "

The directionality of your terminology resource indicates whether it has one source\n language (uni-directional) or multiple (multi-directional).

\n
\n
UNI
\n
\n

The terminology resource has one source language (for example, the first column in a\n CSV file), and all of its other languages are target languages.

\n
\n
MULTI
\n
\n

Any language in the terminology resource can be the source language or a target\n language. A single multi-directional terminology resource can be used for jobs that\n translate different language pairs. For example, if the terminology contains terms in\n English and Spanish, then it can be used for jobs that translate English to Spanish and\n jobs that translate Spanish to English.

\n
\n
\n

When you create a custom terminology resource without specifying the directionality, it\n behaves as uni-directional terminology, although this parameter will have a null value.

" + } } }, "traits": { @@ -1635,6 +1673,10 @@ { "value": "TMX", "name": "TMX" + }, + { + "value": "TSV", + "name": "TSV" } ] } @@ -1701,7 +1743,7 @@ "TargetLanguageCodes": { "target": "com.amazonaws.translate#LanguageCodeStringList", "traits": { - "smithy.api#documentation": "

The language codes for the target languages available with the custom terminology file.\n All possible target languages are returned in array.

" + "smithy.api#documentation": "

The language codes for the target languages available with the custom terminology\n resource. All possible target languages are returned in array.

" } }, "EncryptionKey": { @@ -1733,6 +1775,30 @@ "traits": { "smithy.api#documentation": "

The time at which the custom terminology was last update, based on the timestamp.

" } + }, + "Directionality": { + "target": "com.amazonaws.translate#Directionality", + "traits": { + "smithy.api#documentation": "

The directionality of your terminology resource indicates whether it has one source\n language (uni-directional) or multiple (multi-directional).

\n
\n
UNI
\n
\n

The terminology resource has one source language (the first column in a CSV file),\n and all of its other languages are target languages.

\n
\n
MULTI
\n
\n

Any language in the terminology resource can be the source language.

\n
\n
" + } + }, + "Message": { + "target": "com.amazonaws.translate#UnboundedLengthString", + "traits": { + "smithy.api#documentation": "

Additional information from Amazon Translate about the terminology resource.

" + } + }, + "SkippedTermCount": { + "target": "com.amazonaws.translate#Integer", + "traits": { + "smithy.api#documentation": "

The number of terms in the input file that Amazon Translate skipped when you created or\n updated the terminology resource.

" + } + }, + "Format": { + "target": "com.amazonaws.translate#TerminologyDataFormat", + "traits": { + "smithy.api#documentation": "

The format of the custom terminology input file.

" + } } }, "traits": { @@ -1844,7 +1910,7 @@ "Message": { "target": "com.amazonaws.translate#UnboundedLengthString", "traits": { - "smithy.api#documentation": "

An explanation of any errors that may have occured during the translation job.

" + "smithy.api#documentation": "

An explanation of any errors that may have occurred during the translation job.

" } }, "SubmittedTime": { diff --git a/codegen/sdk-codegen/aws-models/wafv2.2019-07-29.json b/codegen/sdk-codegen/aws-models/wafv2.2019-07-29.json index 4589d08b6bf..ea2d1dee522 100644 --- a/codegen/sdk-codegen/aws-models/wafv2.2019-07-29.json +++ b/codegen/sdk-codegen/aws-models/wafv2.2019-07-29.json @@ -221,6 +221,14 @@ { "value": "COUNT", "name": "COUNT" + }, + { + "value": "CAPTCHA", + "name": "CAPTCHA" + }, + { + "value": "EXCLUDED_AS_COUNT", + "name": "EXCLUDED_AS_COUNT" } ] } @@ -407,6 +415,60 @@ } } }, + "com.amazonaws.wafv2#CaptchaAction": { + "type": "structure", + "members": { + "CustomRequestHandling": { + "target": "com.amazonaws.wafv2#CustomRequestHandling", + "traits": { + "smithy.api#documentation": "

Defines custom handling for the web request.

\n

For information about customizing web requests and responses, see Customizing web requests and responses in WAF in the \n WAF Developer Guide.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Specifies that WAF should run a CAPTCHA check against the request:

\n \n

You can configure the expiration time \n in the CaptchaConfig \n ImmunityTimeProperty setting at the rule and web ACL level. The rule setting overrides the web ACL setting.

\n

This action option is available for rules. It isn't available for web ACL default actions.

\n

This is used in the context of other settings, for example to specify values for RuleAction and web ACL DefaultAction.

" + } + }, + "com.amazonaws.wafv2#CaptchaConfig": { + "type": "structure", + "members": { + "ImmunityTimeProperty": { + "target": "com.amazonaws.wafv2#ImmunityTimeProperty", + "traits": { + "smithy.api#documentation": "

Determines how long a CAPTCHA token remains valid after the client successfully solves a CAPTCHA puzzle.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Specifies how WAF should handle CAPTCHA evaluations. This is available at the web ACL level and in each rule.

" + } + }, + "com.amazonaws.wafv2#CaptchaResponse": { + "type": "structure", + "members": { + "ResponseCode": { + "target": "com.amazonaws.wafv2#ResponseCode", + "traits": { + "smithy.api#documentation": "

The HTTP response code indicating the status of the CAPTCHA token in the web request. If the token is missing, invalid, or expired, this code is 405 Method Not Allowed.

" + } + }, + "SolveTimestamp": { + "target": "com.amazonaws.wafv2#SolveTimestamp", + "traits": { + "smithy.api#documentation": "

The time that the CAPTCHA puzzle was solved for the supplied token.

" + } + }, + "FailureReason": { + "target": "com.amazonaws.wafv2#FailureReason", + "traits": { + "smithy.api#documentation": "

The reason for failure, populated when the evaluation of the token fails.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

The result from the inspection of the web request for a valid CAPTCHA token.

" + } + }, "com.amazonaws.wafv2#CheckCapacity": { "type": "operation", "input": { @@ -1976,6 +2038,12 @@ "traits": { "smithy.api#documentation": "

A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL.

\n

For information about customizing web requests and responses, see Customizing web requests and responses in WAF in the \n WAF Developer Guide.

\n

For information about the limits on count and size for custom request and response settings, see WAF quotas in the \n WAF Developer Guide.

" } + }, + "CaptchaConfig": { + "target": "com.amazonaws.wafv2#CaptchaConfig", + "traits": { + "smithy.api#documentation": "

Specifies how WAF should handle CAPTCHA evaluations for rules that don't have their own CaptchaConfig settings. If you don't specify this, WAF uses its default settings for CaptchaConfig.

" + } } } }, @@ -2779,13 +2847,13 @@ "Name": { "target": "com.amazonaws.wafv2#EntityName", "traits": { - "smithy.api#documentation": "

The name of the rule to exclude.

", + "smithy.api#documentation": "

The name of the rule whose action you want to override to Count.

", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "

Specifies a single rule to exclude from the rule group. Excluding a rule overrides its\n action setting for the rule group in the web ACL, setting it to COUNT. This\n effectively excludes the rule from acting on web requests.

" + "smithy.api#documentation": "

Specifies a single rule in a rule group whose action you want to override to Count. When you exclude a rule, \n WAF evaluates it exactly as it would if the rule action setting were Count. This is a useful option for \n testing the rules in a rule group without modifying how they handle your web traffic.

" } }, "com.amazonaws.wafv2#ExcludedRules": { @@ -2794,6 +2862,21 @@ "target": "com.amazonaws.wafv2#ExcludedRule" } }, + "com.amazonaws.wafv2#FailureReason": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "TOKEN_MISSING", + "name": "TOKEN_MISSING" + }, + { + "value": "TOKEN_EXPIRED", + "name": "TOKEN_EXPIRED" + } + ] + } + }, "com.amazonaws.wafv2#FallbackBehavior": { "type": "string", "traits": { @@ -2972,7 +3055,7 @@ "OverrideAction": { "target": "com.amazonaws.wafv2#OverrideAction", "traits": { - "smithy.api#documentation": "

The override action to apply to the rules in a rule group. Used only for rule statements that reference a rule group, \n like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n

Set the override action to none to leave the rule actions in effect. Set it to count to only count matches, regardless of the rule action settings.

\n

In a Rule, you must specify either this OverrideAction setting or the rule Action setting, but not both:

\n ", + "smithy.api#documentation": "

The action to use in the place of the action that results from the rule group evaluation. Set the override action to none to leave the result of the rule group alone. Set it to count to override the result to count only.

\n

You can only use this for rule statements that reference a rule group, like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n \n

This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the rules in the rule group to only count \n matches, do not use this and instead exclude those rules in your rule group reference statement settings.

\n
", "smithy.api#required": {} } }, @@ -3859,6 +3942,11 @@ "type": "list", "member": { "target": "com.amazonaws.wafv2#IPAddress" + }, + "traits": { + "smithy.api#length": { + "min": 1 + } } }, "com.amazonaws.wafv2#IPSet": { @@ -4007,6 +4095,21 @@ "com.amazonaws.wafv2#IPString": { "type": "string" }, + "com.amazonaws.wafv2#ImmunityTimeProperty": { + "type": "structure", + "members": { + "ImmunityTime": { + "target": "com.amazonaws.wafv2#TimeWindowSecond", + "traits": { + "smithy.api#documentation": "

The amount of time, in seconds, that a CAPTCHA token is valid. The default setting is 300.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Determines how long a CAPTCHA token remains valid after the client successfully solves a CAPTCHA puzzle.

" + } + }, "com.amazonaws.wafv2#JsonBody": { "type": "structure", "members": { @@ -4443,7 +4546,8 @@ "Scope": { "target": "com.amazonaws.wafv2#Scope", "traits": { - "smithy.api#documentation": "

Specifies whether this is for an Amazon CloudFront distribution or for a regional application. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.

\n

To work with CloudFront, you must also specify the Region US East (N. Virginia) as follows:

\n " + "smithy.api#documentation": "

Specifies whether this is for an Amazon CloudFront distribution or for a regional application. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.

\n

To work with CloudFront, you must also specify the Region US East (N. Virginia) as follows:

\n ", + "smithy.api#required": {} } }, "NextMarker": { @@ -4986,7 +5090,7 @@ "ExcludedRules": { "target": "com.amazonaws.wafv2#ExcludedRules", "traits": { - "smithy.api#documentation": "

The rules whose actions are set to COUNT by the web ACL, regardless of the\n action that is set on the rule. This effectively excludes the rule from acting on web\n requests.

" + "smithy.api#documentation": "

The rules in the referenced rule group whose actions are set to Count. \n When you exclude a rule, WAF evaluates it exactly as it would if the rule action setting were Count. \n This is a useful option for testing the rules in a rule group without modifying how they handle your web traffic.

" } }, "ScopeDownStatement": { @@ -5236,7 +5340,7 @@ "type": "structure", "members": {}, "traits": { - "smithy.api#documentation": "

Specifies that WAF should do nothing. This is generally used to try out a rule\n without performing any actions. You set the OverrideAction on the Rule.

\n

This is used in the context of other settings, for example to specify values for RuleAction and web ACL DefaultAction.

\n

JSON specification: \"None\": {}\n

" + "smithy.api#documentation": "

Specifies that WAF should do nothing. This is used for the OverrideAction setting \n on a Rule when the rule uses a rule group reference statement.

\n

This is used in the context of other settings, for example to specify values for RuleAction and web ACL DefaultAction.

\n

JSON specification: \"None\": {}\n

" } }, "com.amazonaws.wafv2#NotStatement": { @@ -5275,18 +5379,18 @@ "Count": { "target": "com.amazonaws.wafv2#CountAction", "traits": { - "smithy.api#documentation": "

Override the rule action setting to count.

" + "smithy.api#documentation": "

Override the rule group evaluation result to count only.

\n \n

This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the rules in the rule group to only count \n matches, do not use this and instead exclude those rules in your rule group reference statement settings.

\n
" } }, "None": { "target": "com.amazonaws.wafv2#NoneAction", "traits": { - "smithy.api#documentation": "

Don't override the rule action setting.

" + "smithy.api#documentation": "

Don't override the rule group evaluation result. This is the most common setting.

" } } }, "traits": { - "smithy.api#documentation": "

The override action to apply to the rules in a rule group. Used only for rule statements that reference a rule group, \n like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n

Set the override action to none to leave the rule actions in effect. Set it to count to only count matches, regardless of the rule action settings.

\n

In a Rule, you must specify either this OverrideAction setting or the rule Action setting, but not both:

\n " + "smithy.api#documentation": "

The action to use in the place of the action that results from the rule group evaluation. Set the override action to none to leave the result of the rule group alone. Set it to count to override the result to count only.

\n

You can only use this for rule statements that reference a rule group, like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n \n

This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the rules in the rule group to only count \n matches, do not use this and instead exclude those rules in your rule group reference statement settings.

\n
" } }, "com.amazonaws.wafv2#PaginationLimit": { @@ -6081,6 +6185,12 @@ ] } }, + "com.amazonaws.wafv2#ResponseCode": { + "type": "integer", + "traits": { + "smithy.api#box": {} + } + }, "com.amazonaws.wafv2#ResponseContent": { "type": "string", "traits": { @@ -6116,7 +6226,7 @@ "smithy.api#box": {}, "smithy.api#range": { "min": 200, - "max": 600 + "max": 599 } } }, @@ -6153,7 +6263,7 @@ "OverrideAction": { "target": "com.amazonaws.wafv2#OverrideAction", "traits": { - "smithy.api#documentation": "

The override action to apply to the rules in a rule group. Used only for rule statements that reference a rule group, \n like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n

Set the override action to none to leave the rule actions in effect. Set it to count to only count matches, regardless of the rule action settings.

\n

In a Rule, you must specify either this OverrideAction setting or the rule Action setting, but not both:

\n " + "smithy.api#documentation": "

The action to use in the place of the action that results from the rule group evaluation. Set the override action to none to leave the result of the rule group alone. Set it to count to override the result to count only.

\n

You can only use this for rule statements that reference a rule group, like RuleGroupReferenceStatement and ManagedRuleGroupStatement.

\n \n

This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the rules in the rule group to only count \n matches, do not use this and instead exclude those rules in your rule group reference statement settings.

\n
" } }, "RuleLabels": { @@ -6168,6 +6278,12 @@ "smithy.api#documentation": "

Defines and enables Amazon CloudWatch metrics and web request sample collection.

", "smithy.api#required": {} } + }, + "CaptchaConfig": { + "target": "com.amazonaws.wafv2#CaptchaConfig", + "traits": { + "smithy.api#documentation": "

Specifies how WAF should handle CAPTCHA evaluations. If you don't specify this, WAF uses the CAPTCHA configuration that's defined for the web ACL.

" + } } }, "traits": { @@ -6194,6 +6310,12 @@ "traits": { "smithy.api#documentation": "

Instructs WAF to count the web request and allow it.

" } + }, + "Captcha": { + "target": "com.amazonaws.wafv2#CaptchaAction", + "traits": { + "smithy.api#documentation": "

Instructs WAF to run a CAPTCHA check against the web request.

" + } } }, "traits": { @@ -6292,7 +6414,7 @@ "ExcludedRules": { "target": "com.amazonaws.wafv2#ExcludedRules", "traits": { - "smithy.api#documentation": "

The names of rules that are in the referenced rule group, but that you want WAF to\n exclude from processing for this rule statement.

" + "smithy.api#documentation": "

The rules in the referenced rule group whose actions are set to Count. \n When you exclude a rule, WAF evaluates it exactly as it would if the rule action setting were Count. \n This is a useful option for testing the rules in a rule group without modifying how they handle your web traffic.

" } } }, @@ -6418,7 +6540,7 @@ "Action": { "target": "com.amazonaws.wafv2#Action", "traits": { - "smithy.api#documentation": "

The action for the Rule that the request matched: ALLOW,\n BLOCK, or COUNT.

" + "smithy.api#documentation": "

The action for the Rule that the request matched: Allow,\n Block, or Count.

" } }, "RuleNameWithinRuleGroup": { @@ -6444,6 +6566,12 @@ "traits": { "smithy.api#documentation": "

Labels applied to the web request by matching rules. WAF applies fully qualified\n labels to matching web requests. A fully qualified label is the concatenation of a label\n namespace and a rule label. The rule's rule group or web ACL defines the label namespace.

\n

For example,\n awswaf:111122223333:myRuleGroup:testRules:testNS1:testNS2:labelNameA or\n awswaf:managed:aws:managed-rule-set:header:encoding:utf8.

" } + }, + "CaptchaResponse": { + "target": "com.amazonaws.wafv2#CaptchaResponse", + "traits": { + "smithy.api#documentation": "

The CAPTCHA response for the request.

" + } } }, "traits": { @@ -6549,6 +6677,12 @@ "smithy.api#documentation": "

A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.

\n

If you configure WAF to inspect the request body, WAF inspects only the first 8192 bytes (8 KB). If the request body for your web requests never exceeds 8192 bytes, you can create a size constraint condition and block requests that have a request body greater than 8192 bytes.

\n

If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI /logo.jpg is nine characters long.

" } }, + "com.amazonaws.wafv2#SolveTimestamp": { + "type": "long", + "traits": { + "smithy.api#box": {} + } + }, "com.amazonaws.wafv2#SqliMatchStatement": { "type": "structure", "members": { @@ -6980,6 +7114,16 @@ } } }, + "com.amazonaws.wafv2#TimeWindowSecond": { + "type": "long", + "traits": { + "smithy.api#box": {}, + "smithy.api#range": { + "min": 60, + "max": 259200 + } + } + }, "com.amazonaws.wafv2#Timestamp": { "type": "timestamp" }, @@ -7543,6 +7687,12 @@ "traits": { "smithy.api#documentation": "

A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL.

\n

For information about customizing web requests and responses, see Customizing web requests and responses in WAF in the \n WAF Developer Guide.

\n

For information about the limits on count and size for custom request and response settings, see WAF quotas in the \n WAF Developer Guide.

" } + }, + "CaptchaConfig": { + "target": "com.amazonaws.wafv2#CaptchaConfig", + "traits": { + "smithy.api#documentation": "

Specifies how WAF should handle CAPTCHA evaluations for rules that don't have their own CaptchaConfig settings. If you don't specify this, WAF uses its default settings for CaptchaConfig.

" + } } } }, @@ -7937,6 +8087,12 @@ "traits": { "smithy.api#documentation": "

A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL.

\n

For information about customizing web requests and responses, see Customizing web requests and responses in WAF in the \n WAF Developer Guide.

\n

For information about the limits on count and size for custom request and response settings, see WAF quotas in the \n WAF Developer Guide.

" } + }, + "CaptchaConfig": { + "target": "com.amazonaws.wafv2#CaptchaConfig", + "traits": { + "smithy.api#documentation": "

Specifies how WAF should handle CAPTCHA evaluations for rules that don't have their own CaptchaConfig settings. If you don't specify this, WAF uses its default settings for CaptchaConfig.

" + } } }, "traits": { diff --git a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoint-prefix.json b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoint-prefix.json index eedea6a01f4..7ca65cb48ea 100644 --- a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoint-prefix.json +++ b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoint-prefix.json @@ -31,6 +31,7 @@ "Budgets": "budgets", "Chime": "chime", "Chime SDK Identity": "identity-chime", + "Chime SDK Meetings": "meetings-chime", "Chime SDK Messaging": "messaging-chime", "Cloud9": "cloud9", "CloudControl": "cloudcontrolapi", @@ -218,6 +219,7 @@ "Redshift": "redshift", "Redshift Data": "redshift-data", "Rekognition": "rekognition", + "Resiliencehub": "resiliencehub", "Resource Groups": "resource-groups", "Resource Groups Tagging API": "tagging", "RoboMaker": "robomaker", diff --git a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json index cd0f250f949..2fe4d886cd5 100644 --- a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json +++ b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json @@ -2431,6 +2431,106 @@ } } }, + "compute-optimizer" : { + "endpoints" : { + "ap-northeast-1" : { + "credentialScope" : { + "region" : "ap-northeast-1" + }, + "hostname" : "compute-optimizer.ap-northeast-1.amazonaws.com" + }, + "ap-northeast-2" : { + "credentialScope" : { + "region" : "ap-northeast-2" + }, + "hostname" : "compute-optimizer.ap-northeast-2.amazonaws.com" + }, + "ap-south-1" : { + "credentialScope" : { + "region" : "ap-south-1" + }, + "hostname" : "compute-optimizer.ap-south-1.amazonaws.com" + }, + "ap-southeast-1" : { + "credentialScope" : { + "region" : "ap-southeast-1" + }, + "hostname" : "compute-optimizer.ap-southeast-1.amazonaws.com" + }, + "ap-southeast-2" : { + "credentialScope" : { + "region" : "ap-southeast-2" + }, + "hostname" : "compute-optimizer.ap-southeast-2.amazonaws.com" + }, + "ca-central-1" : { + "credentialScope" : { + "region" : "ca-central-1" + }, + "hostname" : "compute-optimizer.ca-central-1.amazonaws.com" + }, + "eu-central-1" : { + "credentialScope" : { + "region" : "eu-central-1" + }, + "hostname" : "compute-optimizer.eu-central-1.amazonaws.com" + }, + "eu-north-1" : { + "credentialScope" : { + "region" : "eu-north-1" + }, + "hostname" : "compute-optimizer.eu-north-1.amazonaws.com" + }, + "eu-west-1" : { + "credentialScope" : { + "region" : "eu-west-1" + }, + "hostname" : "compute-optimizer.eu-west-1.amazonaws.com" + }, + "eu-west-2" : { + "credentialScope" : { + "region" : "eu-west-2" + }, + "hostname" : "compute-optimizer.eu-west-2.amazonaws.com" + }, + "eu-west-3" : { + "credentialScope" : { + "region" : "eu-west-3" + }, + "hostname" : "compute-optimizer.eu-west-3.amazonaws.com" + }, + "sa-east-1" : { + "credentialScope" : { + "region" : "sa-east-1" + }, + "hostname" : "compute-optimizer.sa-east-1.amazonaws.com" + }, + "us-east-1" : { + "credentialScope" : { + "region" : "us-east-1" + }, + "hostname" : "compute-optimizer.us-east-1.amazonaws.com" + }, + "us-east-2" : { + "credentialScope" : { + "region" : "us-east-2" + }, + "hostname" : "compute-optimizer.us-east-2.amazonaws.com" + }, + "us-west-1" : { + "credentialScope" : { + "region" : "us-west-1" + }, + "hostname" : "compute-optimizer.us-west-1.amazonaws.com" + }, + "us-west-2" : { + "credentialScope" : { + "region" : "us-west-2" + }, + "hostname" : "compute-optimizer.us-west-2.amazonaws.com" + } + } + }, "config" : { "endpoints" : { "af-south-1" : { }, @@ -5159,6 +5259,7 @@ "ap-east-1" : { }, "ap-northeast-1" : { }, "ap-northeast-2" : { }, + "ap-northeast-3" : { }, "ap-south-1" : { }, "ap-southeast-1" : { }, "ap-southeast-2" : { }, @@ -9327,7 +9428,16 @@ "s3-control" : { "defaults" : { "protocols" : [ "https" ], - "signatureVersions" : [ "s3v4" ] + "signatureVersions" : [ "s3v4" ], + "variants" : [ { + "dnsSuffix" : "amazonaws.com", + "hostname" : "{service}-fips.dualstack.{region}.{dnsSuffix}", + "tags" : [ "dualstack", "fips" ] + }, { + "dnsSuffix" : "amazonaws.com", + "hostname" : "{service}.dualstack.{region}.{dnsSuffix}", + "tags" : [ "dualstack" ] + } ] }, "endpoints" : { "ap-northeast-1" : { @@ -10740,13 +10850,20 @@ "ssm-incidents" : { "endpoints" : { "ap-northeast-1" : { }, + "ap-northeast-2" : { }, + "ap-south-1" : { }, "ap-southeast-1" : { }, "ap-southeast-2" : { }, + "ca-central-1" : { }, "eu-central-1" : { }, "eu-north-1" : { }, "eu-west-1" : { }, + "eu-west-2" : { }, + "eu-west-3" : { }, + "sa-east-1" : { }, "us-east-1" : { }, "us-east-2" : { }, + "us-west-1" : { }, "us-west-2" : { } } }, @@ -11261,12 +11378,24 @@ "ap-south-1" : { }, "ap-southeast-1" : { }, "ap-southeast-2" : { }, - "ca-central-1" : { }, + "ca-central-1" : { + "variants" : [ { + "hostname" : "fips.transcribe.ca-central-1.amazonaws.com", + "tags" : [ "fips" ] + } ] + }, "eu-central-1" : { }, "eu-north-1" : { }, "eu-west-1" : { }, "eu-west-2" : { }, "eu-west-3" : { }, + "fips-ca-central-1" : { + "credentialScope" : { + "region" : "ca-central-1" + }, + "deprecated" : true, + "hostname" : "fips.transcribe.ca-central-1.amazonaws.com" + }, "fips-us-east-1" : { "credentialScope" : { "region" : "us-east-1" @@ -12348,6 +12477,22 @@ "cn-north-1" : { } } }, + "compute-optimizer" : { + "endpoints" : { + "cn-north-1" : { + "credentialScope" : { + "region" : "cn-north-1" + }, + "hostname" : "compute-optimizer.cn-north-1.amazonaws.com.cn" + }, + "cn-northwest-1" : { + "credentialScope" : { + "region" : "cn-northwest-1" + }, + "hostname" : "compute-optimizer.cn-northwest-1.amazonaws.com.cn" + } + } + }, "config" : { "endpoints" : { "cn-north-1" : { }, @@ -12845,7 +12990,12 @@ "s3-control" : { "defaults" : { "protocols" : [ "https" ], - "signatureVersions" : [ "s3v4" ] + "signatureVersions" : [ "s3v4" ], + "variants" : [ { + "dnsSuffix" : "amazonaws.com.cn", + "hostname" : "{service}.dualstack.{region}.{dnsSuffix}", + "tags" : [ "dualstack" ] + } ] }, "endpoints" : { "cn-north-1" : { @@ -14698,6 +14848,12 @@ "partitionEndpoint" : "aws-us-gov-global" }, "identitystore" : { + "defaults" : { + "variants" : [ { + "hostname" : "identitystore.{region}.{dnsSuffix}", + "tags" : [ "fips" ] + } ] + }, "endpoints" : { "fips-us-gov-west-1" : { "credentialScope" : { @@ -15306,6 +15462,12 @@ } }, "rds" : { + "defaults" : { + "variants" : [ { + "hostname" : "rds.{region}.{dnsSuffix}", + "tags" : [ "fips" ] + } ] + }, "endpoints" : { "rds.us-gov-east-1" : { "credentialScope" : { @@ -15491,6 +15653,12 @@ } }, "runtime.sagemaker" : { + "defaults" : { + "variants" : [ { + "hostname" : "runtime.sagemaker.{region}.{dnsSuffix}", + "tags" : [ "fips" ] + } ] + }, "endpoints" : { "us-gov-west-1" : { "variants" : [ { @@ -15562,7 +15730,16 @@ "s3-control" : { "defaults" : { "protocols" : [ "https" ], - "signatureVersions" : [ "s3v4" ] + "signatureVersions" : [ "s3v4" ], + "variants" : [ { + "dnsSuffix" : "amazonaws.com", + "hostname" : "{service}-fips.dualstack.{region}.{dnsSuffix}", + "tags" : [ "dualstack", "fips" ] + }, { + "dnsSuffix" : "amazonaws.com", + "hostname" : "{service}.dualstack.{region}.{dnsSuffix}", + "tags" : [ "dualstack" ] + } ] }, "endpoints" : { "us-gov-east-1" : { @@ -17194,4 +17371,4 @@ } } ], "version" : 3 -} +} \ No newline at end of file diff --git a/service/backup/deserializers.go b/service/backup/deserializers.go index 6fbe264ca99..9bf3a054a95 100644 --- a/service/backup/deserializers.go +++ b/service/backup/deserializers.go @@ -12126,6 +12126,11 @@ func awsRestjson1_deserializeDocumentBackupSelection(v **types.BackupSelection, for key, value := range shape { switch key { + case "Conditions": + if err := awsRestjson1_deserializeDocumentConditions(&sv.Conditions, value); err != nil { + return err + } + case "IamRoleArn": if value != nil { jtv, ok := value.(string) @@ -12140,6 +12145,11 @@ func awsRestjson1_deserializeDocumentBackupSelection(v **types.BackupSelection, return err } + case "NotResources": + if err := awsRestjson1_deserializeDocumentResourceArns(&sv.NotResources, value); err != nil { + return err + } + case "Resources": if err := awsRestjson1_deserializeDocumentResourceArns(&sv.Resources, value); err != nil { return err @@ -12663,6 +12673,140 @@ func awsRestjson1_deserializeDocumentCondition(v **types.Condition, value interf return nil } +func awsRestjson1_deserializeDocumentConditionParameter(v **types.ConditionParameter, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ConditionParameter + if *v == nil { + sv = &types.ConditionParameter{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ConditionKey": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ConditionKey to be of type string, got %T instead", value) + } + sv.ConditionKey = ptr.String(jtv) + } + + case "ConditionValue": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ConditionValue to be of type string, got %T instead", value) + } + sv.ConditionValue = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentConditionParameters(v *[]types.ConditionParameter, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ConditionParameter + if *v == nil { + cv = []types.ConditionParameter{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ConditionParameter + destAddr := &col + if err := awsRestjson1_deserializeDocumentConditionParameter(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentConditions(v **types.Conditions, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Conditions + if *v == nil { + sv = &types.Conditions{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "StringEquals": + if err := awsRestjson1_deserializeDocumentConditionParameters(&sv.StringEquals, value); err != nil { + return err + } + + case "StringLike": + if err := awsRestjson1_deserializeDocumentConditionParameters(&sv.StringLike, value); err != nil { + return err + } + + case "StringNotEquals": + if err := awsRestjson1_deserializeDocumentConditionParameters(&sv.StringNotEquals, value); err != nil { + return err + } + + case "StringNotLike": + if err := awsRestjson1_deserializeDocumentConditionParameters(&sv.StringNotLike, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentConflictException(v **types.ConflictException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/backup/serializers.go b/service/backup/serializers.go index f646949ca21..455c5b444b6 100644 --- a/service/backup/serializers.go +++ b/service/backup/serializers.go @@ -4766,6 +4766,13 @@ func awsRestjson1_serializeDocumentBackupSelection(v *types.BackupSelection, val object := value.Object() defer object.Close() + if v.Conditions != nil { + ok := object.Key("Conditions") + if err := awsRestjson1_serializeDocumentConditions(v.Conditions, ok); err != nil { + return err + } + } + if v.IamRoleArn != nil { ok := object.Key("IamRoleArn") ok.String(*v.IamRoleArn) @@ -4778,6 +4785,13 @@ func awsRestjson1_serializeDocumentBackupSelection(v *types.BackupSelection, val } } + if v.NotResources != nil { + ok := object.Key("NotResources") + if err := awsRestjson1_serializeDocumentResourceArns(v.NotResources, ok); err != nil { + return err + } + } + if v.Resources != nil { ok := object.Key("Resources") if err := awsRestjson1_serializeDocumentResourceArns(v.Resources, ok); err != nil { @@ -4837,6 +4851,71 @@ func awsRestjson1_serializeDocumentCondition(v *types.Condition, value smithyjso return nil } +func awsRestjson1_serializeDocumentConditionParameter(v *types.ConditionParameter, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ConditionKey != nil { + ok := object.Key("ConditionKey") + ok.String(*v.ConditionKey) + } + + if v.ConditionValue != nil { + ok := object.Key("ConditionValue") + ok.String(*v.ConditionValue) + } + + return nil +} + +func awsRestjson1_serializeDocumentConditionParameters(v []types.ConditionParameter, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentConditionParameter(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsRestjson1_serializeDocumentConditions(v *types.Conditions, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.StringEquals != nil { + ok := object.Key("StringEquals") + if err := awsRestjson1_serializeDocumentConditionParameters(v.StringEquals, ok); err != nil { + return err + } + } + + if v.StringLike != nil { + ok := object.Key("StringLike") + if err := awsRestjson1_serializeDocumentConditionParameters(v.StringLike, ok); err != nil { + return err + } + } + + if v.StringNotEquals != nil { + ok := object.Key("StringNotEquals") + if err := awsRestjson1_serializeDocumentConditionParameters(v.StringNotEquals, ok); err != nil { + return err + } + } + + if v.StringNotLike != nil { + ok := object.Key("StringNotLike") + if err := awsRestjson1_serializeDocumentConditionParameters(v.StringNotLike, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentControlInputParameter(v *types.ControlInputParameter, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/backup/types/types.go b/service/backup/types/types.go index dcccfa2e177..ee6023c557c 100644 --- a/service/backup/types/types.go +++ b/service/backup/types/types.go @@ -366,11 +366,15 @@ type BackupSelection struct { // This member is required. SelectionName *string + Conditions *Conditions + // An array of conditions used to specify a set of resources to assign to a backup // plan; for example, "StringEquals": {"ec2:ResourceTag/Department": "accounting". // Assigns the backup plan to every resource with at least one matching tag. ListOfTags []Condition + NotResources []string + // An array of strings that contain Amazon Resource Names (ARNs) of resources to // assign to a backup plan. Resources []string @@ -525,6 +529,26 @@ type Condition struct { noSmithyDocumentSerde } +type ConditionParameter struct { + ConditionKey *string + + ConditionValue *string + + noSmithyDocumentSerde +} + +type Conditions struct { + StringEquals []ConditionParameter + + StringLike []ConditionParameter + + StringNotEquals []ConditionParameter + + StringNotLike []ConditionParameter + + noSmithyDocumentSerde +} + // A list of parameters for a control. A control can have zero, one, or more than // one parameter. An example of a control with two parameters is: "backup plan // frequency is at least daily and the retention period is at least 1 year". The diff --git a/service/batch/api_op_CreateComputeEnvironment.go b/service/batch/api_op_CreateComputeEnvironment.go index 9d59c64681a..b84b1af2647 100644 --- a/service/batch/api_op_CreateComputeEnvironment.go +++ b/service/batch/api_op_CreateComputeEnvironment.go @@ -138,6 +138,13 @@ type CreateComputeEnvironmentInput struct { // API operations. These tags don't propagate to the underlying compute resources. Tags map[string]string + // The maximum number of vCPUs for an unmanaged compute environment. This parameter + // is only used for fair share scheduling to reserve vCPU capacity for new share + // identifiers. If this parameter is not provided for a fair share job queue, no + // vCPU capacity will be reserved. This parameter is only supported when the type + // parameter is set to UNMANAGED/ + UnmanagedvCpus int32 + noSmithyDocumentSerde } diff --git a/service/batch/api_op_CreateJobQueue.go b/service/batch/api_op_CreateJobQueue.go index f3bfcc89b26..41e89df4e2c 100644 --- a/service/batch/api_op_CreateJobQueue.go +++ b/service/batch/api_op_CreateJobQueue.go @@ -66,6 +66,15 @@ type CreateJobQueueInput struct { // This member is required. Priority int32 + // Amazon Resource Name (ARN) of the fair share scheduling policy. If this + // parameter is specified, the job queue will use a fair share scheduling policy. + // If this parameter is not specified, the job queue will use a first in, first out + // (FIFO) scheduling policy. Once a job queue is created, the fair share scheduling + // policy can be replaced but not removed. The format is + // aws:Partition:batch:Region:Account:scheduling-policy/Name . For example, + // aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy. + SchedulingPolicyArn *string + // The state of the job queue. If the job queue state is ENABLED, it is able to // accept jobs. If the job queue state is DISABLED, new jobs can't be added to the // queue, but jobs already in the queue can finish. diff --git a/service/batch/api_op_CreateSchedulingPolicy.go b/service/batch/api_op_CreateSchedulingPolicy.go new file mode 100644 index 00000000000..49e82f10f14 --- /dev/null +++ b/service/batch/api_op_CreateSchedulingPolicy.go @@ -0,0 +1,146 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package batch + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/batch/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates an Batch scheduling policy. +func (c *Client) CreateSchedulingPolicy(ctx context.Context, params *CreateSchedulingPolicyInput, optFns ...func(*Options)) (*CreateSchedulingPolicyOutput, error) { + if params == nil { + params = &CreateSchedulingPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateSchedulingPolicy", params, optFns, c.addOperationCreateSchedulingPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateSchedulingPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateSchedulingPolicyInput struct { + + // The name of the scheduling policy. Up to 128 letters (uppercase and lowercase), + // numbers, hyphens, and underscores are allowed. + // + // This member is required. + Name *string + + // The fair share policy of the scheduling policy. + FairsharePolicy *types.FairsharePolicy + + // The tags that you apply to the scheduling policy to help you categorize and + // organize your resources. Each tag consists of a key and an optional value. For + // more information, see Tagging Amazon Web Services Resources + // (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in Amazon Web + // Services General Reference. These tags can be updated or removed using the + // TagResource + // (https://docs.aws.amazon.com/batch/latest/APIReference/API_TagResource.html) and + // UntagResource + // (https://docs.aws.amazon.com/batch/latest/APIReference/API_UntagResource.html) + // API operations. + Tags map[string]string + + noSmithyDocumentSerde +} + +type CreateSchedulingPolicyOutput struct { + + // The Amazon Resource Name (ARN) of the scheduling policy. The format is + // aws:Partition:batch:Region:Account:scheduling-policy/Name . For example, + // aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy. + // + // This member is required. + Arn *string + + // The name of the scheduling policy. + // + // This member is required. + Name *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateSchedulingPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpCreateSchedulingPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateSchedulingPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateSchedulingPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "batch", + OperationName: "CreateSchedulingPolicy", + } +} diff --git a/service/batch/api_op_DeleteSchedulingPolicy.go b/service/batch/api_op_DeleteSchedulingPolicy.go new file mode 100644 index 00000000000..0c3084a484c --- /dev/null +++ b/service/batch/api_op_DeleteSchedulingPolicy.go @@ -0,0 +1,117 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package batch + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes the specified scheduling policy. You can't delete a scheduling policy +// that is used in any job queues. +func (c *Client) DeleteSchedulingPolicy(ctx context.Context, params *DeleteSchedulingPolicyInput, optFns ...func(*Options)) (*DeleteSchedulingPolicyOutput, error) { + if params == nil { + params = &DeleteSchedulingPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteSchedulingPolicy", params, optFns, c.addOperationDeleteSchedulingPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteSchedulingPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteSchedulingPolicyInput struct { + + // The Amazon Resource Name (ARN) of the scheduling policy to delete. + // + // This member is required. + Arn *string + + noSmithyDocumentSerde +} + +type DeleteSchedulingPolicyOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteSchedulingPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteSchedulingPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteSchedulingPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteSchedulingPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "batch", + OperationName: "DeleteSchedulingPolicy", + } +} diff --git a/service/batch/api_op_DescribeComputeEnvironments.go b/service/batch/api_op_DescribeComputeEnvironments.go index f67e7be776f..a672360086d 100644 --- a/service/batch/api_op_DescribeComputeEnvironments.go +++ b/service/batch/api_op_DescribeComputeEnvironments.go @@ -66,9 +66,9 @@ type DescribeComputeEnvironmentsOutput struct { ComputeEnvironments []types.ComputeEnvironmentDetail // The nextToken value to include in a future DescribeComputeEnvironments request. - // When the results of a DescribeJobDefinitions request exceed maxResults, this - // value can be used to retrieve the next page of results. This value is null when - // there are no more results to return. + // When the results of a DescribeComputeEnvironments request exceed maxResults, + // this value can be used to retrieve the next page of results. This value is null + // when there are no more results to return. NextToken *string // Metadata pertaining to the operation's result. diff --git a/service/batch/api_op_DescribeSchedulingPolicies.go b/service/batch/api_op_DescribeSchedulingPolicies.go new file mode 100644 index 00000000000..fdb2eb82f62 --- /dev/null +++ b/service/batch/api_op_DescribeSchedulingPolicies.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package batch + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/batch/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more of your scheduling policies. +func (c *Client) DescribeSchedulingPolicies(ctx context.Context, params *DescribeSchedulingPoliciesInput, optFns ...func(*Options)) (*DescribeSchedulingPoliciesOutput, error) { + if params == nil { + params = &DescribeSchedulingPoliciesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeSchedulingPolicies", params, optFns, c.addOperationDescribeSchedulingPoliciesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeSchedulingPoliciesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeSchedulingPoliciesInput struct { + + // A list of up to 100 scheduling policy Amazon Resource Name (ARN) entries. + // + // This member is required. + Arns []string + + noSmithyDocumentSerde +} + +type DescribeSchedulingPoliciesOutput struct { + + // The list of scheduling policies. + SchedulingPolicies []types.SchedulingPolicyDetail + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeSchedulingPoliciesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeSchedulingPolicies{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeSchedulingPolicies{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeSchedulingPoliciesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeSchedulingPolicies(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeSchedulingPolicies(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "batch", + OperationName: "DescribeSchedulingPolicies", + } +} diff --git a/service/batch/api_op_ListSchedulingPolicies.go b/service/batch/api_op_ListSchedulingPolicies.go new file mode 100644 index 00000000000..c258f4684b6 --- /dev/null +++ b/service/batch/api_op_ListSchedulingPolicies.go @@ -0,0 +1,226 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package batch + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/batch/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of Batch scheduling policies. +func (c *Client) ListSchedulingPolicies(ctx context.Context, params *ListSchedulingPoliciesInput, optFns ...func(*Options)) (*ListSchedulingPoliciesOutput, error) { + if params == nil { + params = &ListSchedulingPoliciesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListSchedulingPolicies", params, optFns, c.addOperationListSchedulingPoliciesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListSchedulingPoliciesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListSchedulingPoliciesInput struct { + + // The maximum number of results returned by ListSchedulingPolicies in paginated + // output. When this parameter is used, ListSchedulingPolicies only returns + // maxResults results in a single page and a nextToken response element. The + // remaining results of the initial request can be seen by sending another + // ListSchedulingPolicies request with the returned nextToken value. This value can + // be between 1 and 100. If this parameter isn't used, then ListSchedulingPolicies + // returns up to 100 results and a nextToken value if applicable. + MaxResults int32 + + // The nextToken value returned from a previous paginated ListSchedulingPolicies + // request where maxResults was used and the results exceeded the value of that + // parameter. Pagination continues from the end of the previous results that + // returned the nextToken value. This value is null when there are no more results + // to return. This token should be treated as an opaque identifier that's only used + // to retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + noSmithyDocumentSerde +} + +type ListSchedulingPoliciesOutput struct { + + // The nextToken value to include in a future ListSchedulingPolicies request. When + // the results of a ListSchedulingPolicies request exceed maxResults, this value + // can be used to retrieve the next page of results. This value is null when there + // are no more results to return. + NextToken *string + + // A list of scheduling policies that match the request. + SchedulingPolicies []types.SchedulingPolicyListingDetail + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListSchedulingPoliciesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListSchedulingPolicies{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListSchedulingPolicies{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListSchedulingPolicies(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListSchedulingPoliciesAPIClient is a client that implements the +// ListSchedulingPolicies operation. +type ListSchedulingPoliciesAPIClient interface { + ListSchedulingPolicies(context.Context, *ListSchedulingPoliciesInput, ...func(*Options)) (*ListSchedulingPoliciesOutput, error) +} + +var _ ListSchedulingPoliciesAPIClient = (*Client)(nil) + +// ListSchedulingPoliciesPaginatorOptions is the paginator options for +// ListSchedulingPolicies +type ListSchedulingPoliciesPaginatorOptions struct { + // The maximum number of results returned by ListSchedulingPolicies in paginated + // output. When this parameter is used, ListSchedulingPolicies only returns + // maxResults results in a single page and a nextToken response element. The + // remaining results of the initial request can be seen by sending another + // ListSchedulingPolicies request with the returned nextToken value. This value can + // be between 1 and 100. If this parameter isn't used, then ListSchedulingPolicies + // returns up to 100 results and a nextToken value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListSchedulingPoliciesPaginator is a paginator for ListSchedulingPolicies +type ListSchedulingPoliciesPaginator struct { + options ListSchedulingPoliciesPaginatorOptions + client ListSchedulingPoliciesAPIClient + params *ListSchedulingPoliciesInput + nextToken *string + firstPage bool +} + +// NewListSchedulingPoliciesPaginator returns a new ListSchedulingPoliciesPaginator +func NewListSchedulingPoliciesPaginator(client ListSchedulingPoliciesAPIClient, params *ListSchedulingPoliciesInput, optFns ...func(*ListSchedulingPoliciesPaginatorOptions)) *ListSchedulingPoliciesPaginator { + if params == nil { + params = &ListSchedulingPoliciesInput{} + } + + options := ListSchedulingPoliciesPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListSchedulingPoliciesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListSchedulingPoliciesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListSchedulingPolicies page. +func (p *ListSchedulingPoliciesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListSchedulingPoliciesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + result, err := p.client.ListSchedulingPolicies(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListSchedulingPolicies(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "batch", + OperationName: "ListSchedulingPolicies", + } +} diff --git a/service/batch/api_op_ListTagsForResource.go b/service/batch/api_op_ListTagsForResource.go index 0efe4cbd250..eed97946a72 100644 --- a/service/batch/api_op_ListTagsForResource.go +++ b/service/batch/api_op_ListTagsForResource.go @@ -11,8 +11,9 @@ import ( ) // Lists the tags for an Batch resource. Batch resources that support tags are -// compute environments, jobs, job definitions, and job queues. ARNs for child jobs -// of array and multi-node parallel (MNP) jobs are not supported. +// compute environments, jobs, job definitions, job queues, and scheduling +// policies. ARNs for child jobs of array and multi-node parallel (MNP) jobs are +// not supported. func (c *Client) ListTagsForResource(ctx context.Context, params *ListTagsForResourceInput, optFns ...func(*Options)) (*ListTagsForResourceOutput, error) { if params == nil { params = &ListTagsForResourceInput{} @@ -32,8 +33,8 @@ type ListTagsForResourceInput struct { // The Amazon Resource Name (ARN) that identifies the resource that tags are listed // for. Batch resources that support tags are compute environments, jobs, job - // definitions, and job queues. ARNs for child jobs of array and multi-node - // parallel (MNP) jobs are not supported. + // definitions, job queues, and scheduling policies. ARNs for child jobs of array + // and multi-node parallel (MNP) jobs are not supported. // // This member is required. ResourceArn *string diff --git a/service/batch/api_op_RegisterJobDefinition.go b/service/batch/api_op_RegisterJobDefinition.go index fda30f0602b..e9b983fab7a 100644 --- a/service/batch/api_op_RegisterJobDefinition.go +++ b/service/batch/api_op_RegisterJobDefinition.go @@ -86,6 +86,13 @@ type RegisterJobDefinitionInput struct { // timeout, it isn't retried. RetryStrategy *types.RetryStrategy + // The scheduling priority for jobs that are submitted with this job definition. + // This will only affect jobs in job queues with a fair share policy. Jobs with a + // higher scheduling priority will be scheduled before jobs with a lower scheduling + // priority. The minimum supported value is 0 and the maximum supported value is + // 9999. + SchedulingPriority int32 + // The tags that you apply to the job definition to help you categorize and // organize your resources. Each tag consists of a key and an optional value. For // more information, see Tagging Amazon Web Services Resources diff --git a/service/batch/api_op_SubmitJob.go b/service/batch/api_op_SubmitJob.go index 6f619136101..e979d24b8d9 100644 --- a/service/batch/api_op_SubmitJob.go +++ b/service/batch/api_op_SubmitJob.go @@ -13,13 +13,14 @@ import ( // Submits an Batch job from a job definition. Parameters that are specified during // SubmitJob override parameters defined in the job definition. vCPU and memory -// requirements that are specified in the ResourceRequirements objects in the job +// requirements that are specified in the resourceRequirements objects in the job // definition are the exception. They can't be overridden this way using the memory // and vcpus parameters. Rather, you must specify updates to job definition // parameters in a ResourceRequirements object that's included in the -// containerOverrides parameter. Jobs that run on Fargate resources can't be -// guaranteed to run for more than 14 days. This is because, after 14 days, Fargate -// resources might become unavailable and job might be terminated. +// containerOverrides parameter. Job queues with a scheduling policy are limited to +// 500 active fair share identifiers at a time. Jobs that run on Fargate resources +// can't be guaranteed to run for more than 14 days. This is because, after 14 +// days, Fargate resources might become unavailable and job might be terminated. func (c *Client) SubmitJob(ctx context.Context, params *SubmitJobInput, optFns ...func(*Options)) (*SubmitJobOutput, error) { if params == nil { params = &SubmitJobInput{} @@ -106,6 +107,16 @@ type SubmitJobInput struct { // job definition. RetryStrategy *types.RetryStrategy + // The scheduling priority for the job. This will only affect jobs in job queues + // with a fair share policy. Jobs with a higher scheduling priority will be + // scheduled before jobs with a lower scheduling priority. This will override any + // scheduling priority in the job definition. The minimum supported value is 0 and + // the maximum supported value is 9999. + SchedulingPriorityOverride int32 + + // The share identifier for the job. + ShareIdentifier *string + // The tags that you apply to the job request to help you categorize and organize // your resources. Each tag consists of a key and an optional value. For more // information, see Tagging Amazon Web Services Resources diff --git a/service/batch/api_op_TagResource.go b/service/batch/api_op_TagResource.go index 7c75c598039..b443a2f1450 100644 --- a/service/batch/api_op_TagResource.go +++ b/service/batch/api_op_TagResource.go @@ -14,8 +14,8 @@ import ( // existing tags on a resource aren't specified in the request parameters, they // aren't changed. When a resource is deleted, the tags that are associated with // that resource are deleted as well. Batch resources that support tags are compute -// environments, jobs, job definitions, and job queues. ARNs for child jobs of -// array and multi-node parallel (MNP) jobs are not supported. +// environments, jobs, job definitions, job queues, and scheduling policies. ARNs +// for child jobs of array and multi-node parallel (MNP) jobs are not supported. func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optFns ...func(*Options)) (*TagResourceOutput, error) { if params == nil { params = &TagResourceInput{} @@ -34,9 +34,9 @@ func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optF type TagResourceInput struct { // The Amazon Resource Name (ARN) of the resource that tags are added to. Batch - // resources that support tags are compute environments, jobs, job definitions, and - // job queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are - // not supported. + // resources that support tags are compute environments, jobs, job definitions, job + // queues, and scheduling policies. ARNs for child jobs of array and multi-node + // parallel (MNP) jobs are not supported. // // This member is required. ResourceArn *string diff --git a/service/batch/api_op_UntagResource.go b/service/batch/api_op_UntagResource.go index f3211c46869..352e216fb08 100644 --- a/service/batch/api_op_UntagResource.go +++ b/service/batch/api_op_UntagResource.go @@ -29,9 +29,9 @@ func (c *Client) UntagResource(ctx context.Context, params *UntagResourceInput, type UntagResourceInput struct { // The Amazon Resource Name (ARN) of the resource from which to delete tags. Batch - // resources that support tags are compute environments, jobs, job definitions, and - // job queues. ARNs for child jobs of array and multi-node parallel (MNP) jobs are - // not supported. + // resources that support tags are compute environments, jobs, job definitions, job + // queues, and scheduling policies. ARNs for child jobs of array and multi-node + // parallel (MNP) jobs are not supported. // // This member is required. ResourceArn *string diff --git a/service/batch/api_op_UpdateComputeEnvironment.go b/service/batch/api_op_UpdateComputeEnvironment.go index 020ad4a0fca..cabb506d300 100644 --- a/service/batch/api_op_UpdateComputeEnvironment.go +++ b/service/batch/api_op_UpdateComputeEnvironment.go @@ -71,6 +71,13 @@ type UpdateComputeEnvironmentInput struct { // scale out. However, they scale in to minvCpus value after instances become idle. State types.CEState + // The maximum number of vCPUs expected to be used for an unmanaged compute + // environment. This parameter should not be specified for a managed compute + // environment. This parameter is only used for fair share scheduling to reserve + // vCPU capacity for new share identifiers. If this parameter is not provided for a + // fair share job queue, no vCPU capacity will be reserved. + UnmanagedvCpus int32 + noSmithyDocumentSerde } diff --git a/service/batch/api_op_UpdateJobQueue.go b/service/batch/api_op_UpdateJobQueue.go index 46e510ecb7a..92e449ff9b1 100644 --- a/service/batch/api_op_UpdateJobQueue.go +++ b/service/batch/api_op_UpdateJobQueue.go @@ -55,6 +55,13 @@ type UpdateJobQueueInput struct { // FARGATE_SPOT). EC2 and Fargate compute environments can't be mixed. Priority int32 + // Amazon Resource Name (ARN) of the fair share scheduling policy. Once a job queue + // is created, the fair share scheduling policy can be replaced but not removed. + // The format is aws:Partition:batch:Region:Account:scheduling-policy/Name . For + // example, + // aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy. + SchedulingPolicyArn *string + // Describes the queue's ability to accept new jobs. If the job queue state is // ENABLED, it can accept jobs. If the job queue state is DISABLED, new jobs can't // be added to the queue, but jobs already in the queue can finish. diff --git a/service/batch/api_op_UpdateSchedulingPolicy.go b/service/batch/api_op_UpdateSchedulingPolicy.go new file mode 100644 index 00000000000..07b79a5d04d --- /dev/null +++ b/service/batch/api_op_UpdateSchedulingPolicy.go @@ -0,0 +1,120 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package batch + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/batch/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates a scheduling policy. +func (c *Client) UpdateSchedulingPolicy(ctx context.Context, params *UpdateSchedulingPolicyInput, optFns ...func(*Options)) (*UpdateSchedulingPolicyOutput, error) { + if params == nil { + params = &UpdateSchedulingPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateSchedulingPolicy", params, optFns, c.addOperationUpdateSchedulingPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateSchedulingPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateSchedulingPolicyInput struct { + + // The Amazon Resource Name (ARN) of the scheduling policy to update. + // + // This member is required. + Arn *string + + // The fair share policy. + FairsharePolicy *types.FairsharePolicy + + noSmithyDocumentSerde +} + +type UpdateSchedulingPolicyOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateSchedulingPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateSchedulingPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateSchedulingPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateSchedulingPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateSchedulingPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "batch", + OperationName: "UpdateSchedulingPolicy", + } +} diff --git a/service/batch/deserializers.go b/service/batch/deserializers.go index b02bd776986..e87440b5a72 100644 --- a/service/batch/deserializers.go +++ b/service/batch/deserializers.go @@ -15,6 +15,7 @@ import ( "github.com/aws/smithy-go/ptr" smithyhttp "github.com/aws/smithy-go/transport/http" "io" + "math" "strings" ) @@ -430,6 +431,169 @@ func awsRestjson1_deserializeOpDocumentCreateJobQueueOutput(v **CreateJobQueueOu return nil } +type awsRestjson1_deserializeOpCreateSchedulingPolicy struct { +} + +func (*awsRestjson1_deserializeOpCreateSchedulingPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateSchedulingPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateSchedulingPolicy(response, &metadata) + } + output := &CreateSchedulingPolicyOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateSchedulingPolicyOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateSchedulingPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ClientException", errorCode): + return awsRestjson1_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsRestjson1_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateSchedulingPolicyOutput(v **CreateSchedulingPolicyOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateSchedulingPolicyOutput + if *v == nil { + sv = &CreateSchedulingPolicyOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpDeleteComputeEnvironment struct { } @@ -602,6 +766,92 @@ func awsRestjson1_deserializeOpErrorDeleteJobQueue(response *smithyhttp.Response } } +type awsRestjson1_deserializeOpDeleteSchedulingPolicy struct { +} + +func (*awsRestjson1_deserializeOpDeleteSchedulingPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteSchedulingPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteSchedulingPolicy(response, &metadata) + } + output := &DeleteSchedulingPolicyOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteSchedulingPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ClientException", errorCode): + return awsRestjson1_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsRestjson1_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + type awsRestjson1_deserializeOpDeregisterJobDefinition struct { } @@ -817,15 +1067,333 @@ func awsRestjson1_deserializeOpDocumentDescribeComputeEnvironmentsOutput(v **Des var sv *DescribeComputeEnvironmentsOutput if *v == nil { - sv = &DescribeComputeEnvironmentsOutput{} + sv = &DescribeComputeEnvironmentsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "computeEnvironments": + if err := awsRestjson1_deserializeDocumentComputeEnvironmentDetailList(&sv.ComputeEnvironments, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeJobDefinitions struct { +} + +func (*awsRestjson1_deserializeOpDescribeJobDefinitions) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeJobDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobDefinitions(response, &metadata) + } + output := &DescribeJobDefinitionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeJobDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ClientException", errorCode): + return awsRestjson1_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsRestjson1_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(v **DescribeJobDefinitionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeJobDefinitionsOutput + if *v == nil { + sv = &DescribeJobDefinitionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "jobDefinitions": + if err := awsRestjson1_deserializeDocumentJobDefinitionList(&sv.JobDefinitions, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeJobQueues struct { +} + +func (*awsRestjson1_deserializeOpDescribeJobQueues) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeJobQueues) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobQueues(response, &metadata) + } + output := &DescribeJobQueuesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeJobQueues(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ClientException", errorCode): + return awsRestjson1_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsRestjson1_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(v **DescribeJobQueuesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeJobQueuesOutput + if *v == nil { + sv = &DescribeJobQueuesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "computeEnvironments": - if err := awsRestjson1_deserializeDocumentComputeEnvironmentDetailList(&sv.ComputeEnvironments, value); err != nil { + case "jobQueues": + if err := awsRestjson1_deserializeDocumentJobQueueDetailList(&sv.JobQueues, value); err != nil { return err } @@ -847,14 +1415,14 @@ func awsRestjson1_deserializeOpDocumentDescribeComputeEnvironmentsOutput(v **Des return nil } -type awsRestjson1_deserializeOpDescribeJobDefinitions struct { +type awsRestjson1_deserializeOpDescribeJobs struct { } -func (*awsRestjson1_deserializeOpDescribeJobDefinitions) ID() string { +func (*awsRestjson1_deserializeOpDescribeJobs) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDescribeJobDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpDescribeJobs) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -868,9 +1436,9 @@ func (m *awsRestjson1_deserializeOpDescribeJobDefinitions) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobDefinitions(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobs(response, &metadata) } - output := &DescribeJobDefinitionsOutput{} + output := &DescribeJobsOutput{} out.Result = output var buff [1024]byte @@ -891,7 +1459,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobDefinitions) HandleDeserialize(ctx return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentDescribeJobsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -904,7 +1472,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobDefinitions) HandleDeserialize(ctx return out, metadata, err } -func awsRestjson1_deserializeOpErrorDescribeJobDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorDescribeJobs(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -961,7 +1529,7 @@ func awsRestjson1_deserializeOpErrorDescribeJobDefinitions(response *smithyhttp. } } -func awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(v **DescribeJobDefinitionsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentDescribeJobsOutput(v **DescribeJobsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -974,29 +1542,20 @@ func awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(v **Describe return fmt.Errorf("unexpected JSON type %v", value) } - var sv *DescribeJobDefinitionsOutput + var sv *DescribeJobsOutput if *v == nil { - sv = &DescribeJobDefinitionsOutput{} + sv = &DescribeJobsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "jobDefinitions": - if err := awsRestjson1_deserializeDocumentJobDefinitionList(&sv.JobDefinitions, value); err != nil { + case "jobs": + if err := awsRestjson1_deserializeDocumentJobDetailList(&sv.Jobs, value); err != nil { return err } - case "nextToken": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected String to be of type string, got %T instead", value) - } - sv.NextToken = ptr.String(jtv) - } - default: _, _ = key, value @@ -1006,14 +1565,14 @@ func awsRestjson1_deserializeOpDocumentDescribeJobDefinitionsOutput(v **Describe return nil } -type awsRestjson1_deserializeOpDescribeJobQueues struct { +type awsRestjson1_deserializeOpDescribeSchedulingPolicies struct { } -func (*awsRestjson1_deserializeOpDescribeJobQueues) ID() string { +func (*awsRestjson1_deserializeOpDescribeSchedulingPolicies) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDescribeJobQueues) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpDescribeSchedulingPolicies) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1027,9 +1586,9 @@ func (m *awsRestjson1_deserializeOpDescribeJobQueues) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobQueues(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorDescribeSchedulingPolicies(response, &metadata) } - output := &DescribeJobQueuesOutput{} + output := &DescribeSchedulingPoliciesOutput{} out.Result = output var buff [1024]byte @@ -1050,7 +1609,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobQueues) HandleDeserialize(ctx cont return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentDescribeSchedulingPoliciesOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1063,7 +1622,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobQueues) HandleDeserialize(ctx cont return out, metadata, err } -func awsRestjson1_deserializeOpErrorDescribeJobQueues(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorDescribeSchedulingPolicies(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1120,7 +1679,7 @@ func awsRestjson1_deserializeOpErrorDescribeJobQueues(response *smithyhttp.Respo } } -func awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(v **DescribeJobQueuesOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentDescribeSchedulingPoliciesOutput(v **DescribeSchedulingPoliciesOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1133,29 +1692,20 @@ func awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(v **DescribeJobQu return fmt.Errorf("unexpected JSON type %v", value) } - var sv *DescribeJobQueuesOutput + var sv *DescribeSchedulingPoliciesOutput if *v == nil { - sv = &DescribeJobQueuesOutput{} + sv = &DescribeSchedulingPoliciesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "jobQueues": - if err := awsRestjson1_deserializeDocumentJobQueueDetailList(&sv.JobQueues, value); err != nil { + case "schedulingPolicies": + if err := awsRestjson1_deserializeDocumentSchedulingPolicyDetailList(&sv.SchedulingPolicies, value); err != nil { return err } - case "nextToken": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected String to be of type string, got %T instead", value) - } - sv.NextToken = ptr.String(jtv) - } - default: _, _ = key, value @@ -1165,14 +1715,14 @@ func awsRestjson1_deserializeOpDocumentDescribeJobQueuesOutput(v **DescribeJobQu return nil } -type awsRestjson1_deserializeOpDescribeJobs struct { +type awsRestjson1_deserializeOpListJobs struct { } -func (*awsRestjson1_deserializeOpDescribeJobs) ID() string { +func (*awsRestjson1_deserializeOpListJobs) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDescribeJobs) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListJobs) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1186,9 +1736,9 @@ func (m *awsRestjson1_deserializeOpDescribeJobs) HandleDeserialize(ctx context.C } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDescribeJobs(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListJobs(response, &metadata) } - output := &DescribeJobsOutput{} + output := &ListJobsOutput{} out.Result = output var buff [1024]byte @@ -1209,7 +1759,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobs) HandleDeserialize(ctx context.C return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentDescribeJobsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListJobsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1222,7 +1772,7 @@ func (m *awsRestjson1_deserializeOpDescribeJobs) HandleDeserialize(ctx context.C return out, metadata, err } -func awsRestjson1_deserializeOpErrorDescribeJobs(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListJobs(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1279,7 +1829,7 @@ func awsRestjson1_deserializeOpErrorDescribeJobs(response *smithyhttp.Response, } } -func awsRestjson1_deserializeOpDocumentDescribeJobsOutput(v **DescribeJobsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListJobsOutput(v **ListJobsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1292,20 +1842,29 @@ func awsRestjson1_deserializeOpDocumentDescribeJobsOutput(v **DescribeJobsOutput return fmt.Errorf("unexpected JSON type %v", value) } - var sv *DescribeJobsOutput + var sv *ListJobsOutput if *v == nil { - sv = &DescribeJobsOutput{} + sv = &ListJobsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "jobs": - if err := awsRestjson1_deserializeDocumentJobDetailList(&sv.Jobs, value); err != nil { + case "jobSummaryList": + if err := awsRestjson1_deserializeDocumentJobSummaryList(&sv.JobSummaryList, value); err != nil { return err } + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + default: _, _ = key, value @@ -1315,14 +1874,14 @@ func awsRestjson1_deserializeOpDocumentDescribeJobsOutput(v **DescribeJobsOutput return nil } -type awsRestjson1_deserializeOpListJobs struct { +type awsRestjson1_deserializeOpListSchedulingPolicies struct { } -func (*awsRestjson1_deserializeOpListJobs) ID() string { +func (*awsRestjson1_deserializeOpListSchedulingPolicies) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListJobs) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListSchedulingPolicies) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1336,9 +1895,9 @@ func (m *awsRestjson1_deserializeOpListJobs) HandleDeserialize(ctx context.Conte } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListJobs(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListSchedulingPolicies(response, &metadata) } - output := &ListJobsOutput{} + output := &ListSchedulingPoliciesOutput{} out.Result = output var buff [1024]byte @@ -1359,7 +1918,7 @@ func (m *awsRestjson1_deserializeOpListJobs) HandleDeserialize(ctx context.Conte return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListJobsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListSchedulingPoliciesOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1372,7 +1931,7 @@ func (m *awsRestjson1_deserializeOpListJobs) HandleDeserialize(ctx context.Conte return out, metadata, err } -func awsRestjson1_deserializeOpErrorListJobs(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListSchedulingPolicies(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1429,7 +1988,7 @@ func awsRestjson1_deserializeOpErrorListJobs(response *smithyhttp.Response, meta } } -func awsRestjson1_deserializeOpDocumentListJobsOutput(v **ListJobsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListSchedulingPoliciesOutput(v **ListSchedulingPoliciesOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1442,20 +2001,15 @@ func awsRestjson1_deserializeOpDocumentListJobsOutput(v **ListJobsOutput, value return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListJobsOutput + var sv *ListSchedulingPoliciesOutput if *v == nil { - sv = &ListJobsOutput{} + sv = &ListSchedulingPoliciesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "jobSummaryList": - if err := awsRestjson1_deserializeDocumentJobSummaryList(&sv.JobSummaryList, value); err != nil { - return err - } - case "nextToken": if value != nil { jtv, ok := value.(string) @@ -1465,6 +2019,11 @@ func awsRestjson1_deserializeOpDocumentListJobsOutput(v **ListJobsOutput, value sv.NextToken = ptr.String(jtv) } + case "schedulingPolicies": + if err := awsRestjson1_deserializeDocumentSchedulingPolicyListingDetailList(&sv.SchedulingPolicies, value); err != nil { + return err + } + default: _, _ = key, value @@ -2556,6 +3115,92 @@ func awsRestjson1_deserializeOpDocumentUpdateJobQueueOutput(v **UpdateJobQueueOu return nil } +type awsRestjson1_deserializeOpUpdateSchedulingPolicy struct { +} + +func (*awsRestjson1_deserializeOpUpdateSchedulingPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateSchedulingPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUpdateSchedulingPolicy(response, &metadata) + } + output := &UpdateSchedulingPolicyOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateSchedulingPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ClientException", errorCode): + return awsRestjson1_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsRestjson1_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + func awsRestjson1_deserializeErrorClientException(response *smithyhttp.Response, errorBody *bytes.Reader) error { output := &types.ClientException{} var buff [1024]byte @@ -3121,6 +3766,19 @@ func awsRestjson1_deserializeDocumentComputeEnvironmentDetail(v **types.ComputeE sv.Type = types.CEType(jtv) } + case "unmanagedvCpus": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.UnmanagedvCpus = int32(i64) + } + default: _, _ = key, value @@ -4351,6 +5009,68 @@ func awsRestjson1_deserializeDocumentEvaluateOnExitList(v *[]types.EvaluateOnExi return nil } +func awsRestjson1_deserializeDocumentFairsharePolicy(v **types.FairsharePolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FairsharePolicy + if *v == nil { + sv = &types.FairsharePolicy{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "computeReservation": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ComputeReservation = int32(i64) + } + + case "shareDecaySeconds": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ShareDecaySeconds = int32(i64) + } + + case "shareDistribution": + if err := awsRestjson1_deserializeDocumentShareAttributesList(&sv.ShareDistribution, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentFargatePlatformConfiguration(v **types.FargatePlatformConfiguration, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -4518,6 +5238,19 @@ func awsRestjson1_deserializeDocumentJobDefinition(v **types.JobDefinition, valu sv.Revision = int32(i64) } + case "schedulingPriority": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SchedulingPriority = int32(i64) + } + case "status": if value != nil { jtv, ok := value.(string) @@ -4806,6 +5539,28 @@ func awsRestjson1_deserializeDocumentJobDetail(v **types.JobDetail, value interf return err } + case "schedulingPriority": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SchedulingPriority = int32(i64) + } + + case "shareIdentifier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ShareIdentifier = ptr.String(jtv) + } + case "startedAt": if value != nil { jtv, ok := value.(json.Number) @@ -4961,6 +5716,15 @@ func awsRestjson1_deserializeDocumentJobQueueDetail(v **types.JobQueueDetail, va sv.Priority = int32(i64) } + case "schedulingPolicyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SchedulingPolicyArn = ptr.String(jtv) + } + case "state": if value != nil { jtv, ok := value.(string) @@ -6223,6 +6987,173 @@ func awsRestjson1_deserializeDocumentRetryStrategy(v **types.RetryStrategy, valu return nil } +func awsRestjson1_deserializeDocumentSchedulingPolicyDetail(v **types.SchedulingPolicyDetail, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SchedulingPolicyDetail + if *v == nil { + sv = &types.SchedulingPolicyDetail{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "fairsharePolicy": + if err := awsRestjson1_deserializeDocumentFairsharePolicy(&sv.FairsharePolicy, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "tags": + if err := awsRestjson1_deserializeDocumentTagrisTagsMap(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentSchedulingPolicyDetailList(v *[]types.SchedulingPolicyDetail, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.SchedulingPolicyDetail + if *v == nil { + cv = []types.SchedulingPolicyDetail{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.SchedulingPolicyDetail + destAddr := &col + if err := awsRestjson1_deserializeDocumentSchedulingPolicyDetail(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentSchedulingPolicyListingDetail(v **types.SchedulingPolicyListingDetail, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SchedulingPolicyListingDetail + if *v == nil { + sv = &types.SchedulingPolicyListingDetail{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentSchedulingPolicyListingDetailList(v *[]types.SchedulingPolicyListingDetail, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.SchedulingPolicyListingDetail + if *v == nil { + cv = []types.SchedulingPolicyListingDetail{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.SchedulingPolicyListingDetail + destAddr := &col + if err := awsRestjson1_deserializeDocumentSchedulingPolicyListingDetail(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentSecret(v **types.Secret, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -6346,6 +7277,114 @@ func awsRestjson1_deserializeDocumentServerException(v **types.ServerException, return nil } +func awsRestjson1_deserializeDocumentShareAttributes(v **types.ShareAttributes, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ShareAttributes + if *v == nil { + sv = &types.ShareAttributes{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "shareIdentifier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ShareIdentifier = ptr.String(jtv) + } + + case "weightFactor": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.WeightFactor = float32(f64) + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.WeightFactor = float32(f64) + + default: + return fmt.Errorf("expected Float to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentShareAttributesList(v *[]types.ShareAttributes, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ShareAttributes + if *v == nil { + cv = []types.ShareAttributes{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ShareAttributes + destAddr := &col + if err := awsRestjson1_deserializeDocumentShareAttributes(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentStringList(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/batch/doc.go b/service/batch/doc.go index 354c4620d35..a43d08d818b 100644 --- a/service/batch/doc.go +++ b/service/batch/doc.go @@ -3,18 +3,19 @@ // Package batch provides the API client, operations, and parameter types for AWS // Batch. // -// Batch Using Batch, you can run batch computing workloads on the Cloud. Batch -// computing is a common means for developers, scientists, and engineers to access -// large amounts of compute resources. Batch uses the advantages of this computing -// workload to remove the undifferentiated heavy lifting of configuring and -// managing required infrastructure. At the same time, it also adopts a familiar -// batch computing software approach. Given these advantages, Batch can help you to -// efficiently provision resources in response to jobs submitted, thus effectively -// helping you to eliminate capacity constraints, reduce compute costs, and deliver -// your results more quickly. As a fully managed service, Batch can run batch -// computing workloads of any scale. Batch automatically provisions compute -// resources and optimizes workload distribution based on the quantity and scale of -// your specific workloads. With Batch, there's no need to install or manage batch -// computing software. This means that you can focus your time and energy on -// analyzing results and solving your specific problems. +// Batch Using Batch, you can run batch computing workloads on the Amazon Web +// Services Cloud. Batch computing is a common means for developers, scientists, +// and engineers to access large amounts of compute resources. Batch uses the +// advantages of this computing workload to remove the undifferentiated heavy +// lifting of configuring and managing required infrastructure. At the same time, +// it also adopts a familiar batch computing software approach. Given these +// advantages, Batch can help you to efficiently provision resources in response to +// jobs submitted, thus effectively helping you to eliminate capacity constraints, +// reduce compute costs, and deliver your results more quickly. As a fully managed +// service, Batch can run batch computing workloads of any scale. Batch +// automatically provisions compute resources and optimizes workload distribution +// based on the quantity and scale of your specific workloads. With Batch, there's +// no need to install or manage batch computing software. This means that you can +// focus your time and energy on analyzing results and solving your specific +// problems. package batch diff --git a/service/batch/generated.json b/service/batch/generated.json index fe09a9286a9..2fd786c4963 100644 --- a/service/batch/generated.json +++ b/service/batch/generated.json @@ -10,14 +10,18 @@ "api_op_CancelJob.go", "api_op_CreateComputeEnvironment.go", "api_op_CreateJobQueue.go", + "api_op_CreateSchedulingPolicy.go", "api_op_DeleteComputeEnvironment.go", "api_op_DeleteJobQueue.go", + "api_op_DeleteSchedulingPolicy.go", "api_op_DeregisterJobDefinition.go", "api_op_DescribeComputeEnvironments.go", "api_op_DescribeJobDefinitions.go", "api_op_DescribeJobQueues.go", "api_op_DescribeJobs.go", + "api_op_DescribeSchedulingPolicies.go", "api_op_ListJobs.go", + "api_op_ListSchedulingPolicies.go", "api_op_ListTagsForResource.go", "api_op_RegisterJobDefinition.go", "api_op_SubmitJob.go", @@ -26,6 +30,7 @@ "api_op_UntagResource.go", "api_op_UpdateComputeEnvironment.go", "api_op_UpdateJobQueue.go", + "api_op_UpdateSchedulingPolicy.go", "deserializers.go", "doc.go", "endpoints.go", diff --git a/service/batch/serializers.go b/service/batch/serializers.go index 9dd11acac96..2312c2d4d5a 100644 --- a/service/batch/serializers.go +++ b/service/batch/serializers.go @@ -12,6 +12,7 @@ import ( smithyjson "github.com/aws/smithy-go/encoding/json" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" + "math" ) type awsRestjson1_serializeOpCancelJob struct { @@ -181,6 +182,11 @@ func awsRestjson1_serializeOpDocumentCreateComputeEnvironmentInput(v *CreateComp ok.String(string(v.Type)) } + if v.UnmanagedvCpus != 0 { + ok := object.Key("unmanagedvCpus") + ok.Integer(v.UnmanagedvCpus) + } + return nil } @@ -261,6 +267,11 @@ func awsRestjson1_serializeOpDocumentCreateJobQueueInput(v *CreateJobQueueInput, ok.Integer(v.Priority) } + if v.SchedulingPolicyArn != nil { + ok := object.Key("schedulingPolicyArn") + ok.String(*v.SchedulingPolicyArn) + } + if len(v.State) > 0 { ok := object.Key("state") ok.String(string(v.State)) @@ -276,6 +287,88 @@ func awsRestjson1_serializeOpDocumentCreateJobQueueInput(v *CreateJobQueueInput, return nil } +type awsRestjson1_serializeOpCreateSchedulingPolicy struct { +} + +func (*awsRestjson1_serializeOpCreateSchedulingPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateSchedulingPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateSchedulingPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/v1/createschedulingpolicy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateSchedulingPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateSchedulingPolicyInput(v *CreateSchedulingPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateSchedulingPolicyInput(v *CreateSchedulingPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FairsharePolicy != nil { + ok := object.Key("fairsharePolicy") + if err := awsRestjson1_serializeDocumentFairsharePolicy(v.FairsharePolicy, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagrisTagsMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpDeleteComputeEnvironment struct { } @@ -412,6 +505,74 @@ func awsRestjson1_serializeOpDocumentDeleteJobQueueInput(v *DeleteJobQueueInput, return nil } +type awsRestjson1_serializeOpDeleteSchedulingPolicy struct { +} + +func (*awsRestjson1_serializeOpDeleteSchedulingPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteSchedulingPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteSchedulingPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/v1/deleteschedulingpolicy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDeleteSchedulingPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteSchedulingPolicyInput(v *DeleteSchedulingPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDeleteSchedulingPolicyInput(v *DeleteSchedulingPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Arn != nil { + ok := object.Key("arn") + ok.String(*v.Arn) + } + + return nil +} + type awsRestjson1_serializeOpDeregisterJobDefinition struct { } @@ -800,6 +961,76 @@ func awsRestjson1_serializeOpDocumentDescribeJobsInput(v *DescribeJobsInput, val return nil } +type awsRestjson1_serializeOpDescribeSchedulingPolicies struct { +} + +func (*awsRestjson1_serializeOpDescribeSchedulingPolicies) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeSchedulingPolicies) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeSchedulingPoliciesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/v1/describeschedulingpolicies") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeSchedulingPoliciesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeSchedulingPoliciesInput(v *DescribeSchedulingPoliciesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeSchedulingPoliciesInput(v *DescribeSchedulingPoliciesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Arns != nil { + ok := object.Key("arns") + if err := awsRestjson1_serializeDocumentStringList(v.Arns, ok); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpListJobs struct { } @@ -900,6 +1131,79 @@ func awsRestjson1_serializeOpDocumentListJobsInput(v *ListJobsInput, value smith return nil } +type awsRestjson1_serializeOpListSchedulingPolicies struct { +} + +func (*awsRestjson1_serializeOpListSchedulingPolicies) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListSchedulingPolicies) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListSchedulingPoliciesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/v1/listschedulingpolicies") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListSchedulingPoliciesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListSchedulingPoliciesInput(v *ListSchedulingPoliciesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListSchedulingPoliciesInput(v *ListSchedulingPoliciesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.MaxResults != 0 { + ok := object.Key("maxResults") + ok.Integer(v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + type awsRestjson1_serializeOpListTagsForResource struct { } @@ -1063,6 +1367,11 @@ func awsRestjson1_serializeOpDocumentRegisterJobDefinitionInput(v *RegisterJobDe } } + if v.SchedulingPriority != 0 { + ok := object.Key("schedulingPriority") + ok.Integer(v.SchedulingPriority) + } + if v.Tags != nil { ok := object.Key("tags") if err := awsRestjson1_serializeDocumentTagrisTagsMap(v.Tags, ok); err != nil { @@ -1207,6 +1516,16 @@ func awsRestjson1_serializeOpDocumentSubmitJobInput(v *SubmitJobInput, value smi } } + if v.SchedulingPriorityOverride != 0 { + ok := object.Key("schedulingPriorityOverride") + ok.Integer(v.SchedulingPriorityOverride) + } + + if v.ShareIdentifier != nil { + ok := object.Key("shareIdentifier") + ok.String(*v.ShareIdentifier) + } + if v.Tags != nil { ok := object.Key("tags") if err := awsRestjson1_serializeDocumentTagrisTagsMap(v.Tags, ok); err != nil { @@ -1526,6 +1845,11 @@ func awsRestjson1_serializeOpDocumentUpdateComputeEnvironmentInput(v *UpdateComp ok.String(string(v.State)) } + if v.UnmanagedvCpus != 0 { + ok := object.Key("unmanagedvCpus") + ok.Integer(v.UnmanagedvCpus) + } + return nil } @@ -1606,6 +1930,11 @@ func awsRestjson1_serializeOpDocumentUpdateJobQueueInput(v *UpdateJobQueueInput, ok.Integer(v.Priority) } + if v.SchedulingPolicyArn != nil { + ok := object.Key("schedulingPolicyArn") + ok.String(*v.SchedulingPolicyArn) + } + if len(v.State) > 0 { ok := object.Key("state") ok.String(string(v.State)) @@ -1614,6 +1943,81 @@ func awsRestjson1_serializeOpDocumentUpdateJobQueueInput(v *UpdateJobQueueInput, return nil } +type awsRestjson1_serializeOpUpdateSchedulingPolicy struct { +} + +func (*awsRestjson1_serializeOpUpdateSchedulingPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUpdateSchedulingPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateSchedulingPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/v1/updateschedulingpolicy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateSchedulingPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUpdateSchedulingPolicyInput(v *UpdateSchedulingPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateSchedulingPolicyInput(v *UpdateSchedulingPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Arn != nil { + ok := object.Key("arn") + ok.String(*v.Arn) + } + + if v.FairsharePolicy != nil { + ok := object.Key("fairsharePolicy") + if err := awsRestjson1_serializeDocumentFairsharePolicy(v.FairsharePolicy, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentArrayProperties(v *types.ArrayProperties, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -2150,6 +2554,30 @@ func awsRestjson1_serializeDocumentEvaluateOnExitList(v []types.EvaluateOnExit, return nil } +func awsRestjson1_serializeDocumentFairsharePolicy(v *types.FairsharePolicy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ComputeReservation != 0 { + ok := object.Key("computeReservation") + ok.Integer(v.ComputeReservation) + } + + if v.ShareDecaySeconds != 0 { + ok := object.Key("shareDecaySeconds") + ok.Integer(v.ShareDecaySeconds) + } + + if v.ShareDistribution != nil { + ok := object.Key("shareDistribution") + if err := awsRestjson1_serializeDocumentShareAttributesList(v.ShareDistribution, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentFargatePlatformConfiguration(v *types.FargatePlatformConfiguration, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -2620,6 +3048,49 @@ func awsRestjson1_serializeDocumentSecretList(v []types.Secret, value smithyjson return nil } +func awsRestjson1_serializeDocumentShareAttributes(v *types.ShareAttributes, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ShareIdentifier != nil { + ok := object.Key("shareIdentifier") + ok.String(*v.ShareIdentifier) + } + + if v.WeightFactor != 0 { + ok := object.Key("weightFactor") + switch { + case math.IsNaN(float64(v.WeightFactor)): + ok.String("NaN") + + case math.IsInf(float64(v.WeightFactor), 1): + ok.String("Infinity") + + case math.IsInf(float64(v.WeightFactor), -1): + ok.String("-Infinity") + + default: + ok.Float(v.WeightFactor) + + } + } + + return nil +} + +func awsRestjson1_serializeDocumentShareAttributesList(v []types.ShareAttributes, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentShareAttributes(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentStringList(v []string, value smithyjson.Value) error { array := value.Array() defer array.Close() diff --git a/service/batch/types/types.go b/service/batch/types/types.go index b84e2ea3a56..204f78dfc64 100644 --- a/service/batch/types/types.go +++ b/service/batch/types/types.go @@ -157,6 +157,10 @@ type ComputeEnvironmentDetail struct { // in the Batch User Guide. Type CEType + // The maximum number of VCPUs expected to be used for an unmanaged compute + // environment. + UnmanagedvCpus int32 + noSmithyDocumentSerde } @@ -273,8 +277,9 @@ type ComputeResource struct { // Provides information used to select Amazon Machine Images (AMIs) for EC2 // instances in the compute environment. If Ec2Configuration isn't specified, the - // default is ECS_AL1. This parameter isn't applicable to jobs that are running on - // Fargate resources, and shouldn't be specified. + // default is ECS_AL2. One or two values can be provided. This parameter isn't + // applicable to jobs that are running on Fargate resources, and shouldn't be + // specified. Ec2Configuration []Ec2Configuration // The Amazon EC2 key pair that's used for instances launched in the compute @@ -380,7 +385,7 @@ type ComputeResource struct { // where String1 is the tag key and String2 is the tag value−for example, { "Name": // "Batch Instance - C4OnDemand" }. This is helpful for recognizing your Batch // instances in the Amazon EC2 console. These tags can't be updated or removed - // after the compute environment is created.Aany changes to these tags require that + // after the compute environment is created. Any changes to these tags require that // you create a new compute environment and remove the old compute environment. // These tags aren't seen when using the Batch ListTagsForResource API operation. // This parameter isn't applicable to jobs that are running on Fargate resources, @@ -510,8 +515,8 @@ type ContainerDetail struct { LogStreamName *string // For jobs run on EC2 resources that didn't specify memory requirements using - // ResourceRequirement, the number of MiB of memory reserved for the job. For other - // jobs, including all run on Fargate resources, see resourceRequirements. + // resourceRequirements, the number of MiB of memory reserved for the job. For + // other jobs, including all run on Fargate resources, see resourceRequirements. Memory int32 // The mount points for data volumes in your container. @@ -575,7 +580,7 @@ type ContainerDetail struct { // The number of vCPUs reserved for the container. For jobs that run on EC2 // resources, you can specify the vCPU requirement for the job using // resourceRequirements, but you can't specify the vCPU requirements in both the - // vcpus and resourceRequirement object. This parameter maps to CpuShares in the + // vcpus and resourceRequirements object. This parameter maps to CpuShares in the // Create a container // (https://docs.docker.com/engine/api/v1.23/#create-a-container) section of the // Docker Remote API (https://docs.docker.com/engine/api/v1.23/) and the @@ -613,15 +618,17 @@ type ContainerOverrides struct { // and shouldn't be provided. InstanceType *string - // This parameter indicates the amount of memory (in MiB) that's reserved for the - // job. It overrides the memory parameter set in the job definition, but doesn't - // override any memory requirement specified in the ResourceRequirement structure - // in the job definition. To override memory requirements that are specified in the - // ResourceRequirement structure in the job definition, ResourceRequirement must be - // specified in the SubmitJob request, with type set to MEMORY and value set to the - // new value. This parameter is supported for jobs that run on EC2 resources, but - // isn't supported for jobs that run on Fargate resources. For these resources, use - // resourceRequirement instead. + // This parameter is deprecated, use resourceRequirements to override the memory + // requirements specified in the job definition. It's not supported for jobs that + // run on Fargate resources. For jobs run on EC2 resources, it overrides the memory + // parameter set in the job definition, but doesn't override any memory requirement + // specified in the resourceRequirements structure in the job definition. To + // override memory requirements that are specified in the resourceRequirements + // structure in the job definition, resourceRequirements must be specified in the + // SubmitJob request, with type set to MEMORY and value set to the new value. For + // more information, see Can't override job definition resource requirements + // (https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#override-resource-requirements) + // in the Batch User Guide. // // Deprecated: This field is deprecated, use resourceRequirements instead. Memory int32 @@ -631,22 +638,17 @@ type ContainerOverrides struct { // VCPU. ResourceRequirements []ResourceRequirement - // This parameter indicates the number of vCPUs reserved for the container.It - // overrides the vcpus parameter that's set in the job definition, but doesn't - // override any vCPU requirement specified in the resourceRequirement structure in - // the job definition. To override vCPU requirements that are specified in the - // ResourceRequirement structure in the job definition, ResourceRequirement must be - // specified in the SubmitJob request, with type set to VCPU and value set to the - // new value. This parameter maps to CpuShares in the Create a container - // (https://docs.docker.com/engine/api/v1.23/#create-a-container) section of the - // Docker Remote API (https://docs.docker.com/engine/api/v1.23/) and the - // --cpu-shares option to docker run - // (https://docs.docker.com/engine/reference/run/). Each vCPU is equivalent to - // 1,024 CPU shares. You must specify at least one vCPU. This parameter is - // supported for jobs that run on EC2 resources, but isn't supported for jobs that - // run on Fargate resources. For Fargate resources, you can only use - // resourceRequirement. For EC2 resources, you can use either this parameter or - // resourceRequirement but not both. + // This parameter is deprecated, use resourceRequirements to override the vcpus + // parameter that's set in the job definition. It's not supported for jobs that run + // on Fargate resources. For jobs run on EC2 resources, it overrides the vcpus + // parameter set in the job definition, but doesn't override any vCPU requirement + // specified in the resourceRequirements structure in the job definition. To + // override vCPU requirements that are specified in the resourceRequirements + // structure in the job definition, resourceRequirements must be specified in the + // SubmitJob request, with type set to VCPU and value set to the new value. For + // more information, see Can't override job definition resource requirements + // (https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#override-resource-requirements) + // in the Batch User Guide. // // Deprecated: This field is deprecated, use resourceRequirements instead. Vcpus int32 @@ -760,21 +762,13 @@ type ContainerProperties struct { // in the Amazon Elastic Container Service Developer Guide. LogConfiguration *LogConfiguration - // This parameter indicates the memory hard limit (in MiB) for a container. If your - // container attempts to exceed the specified number, it's terminated. You must - // specify at least 4 MiB of memory for a job using this parameter. The memory hard - // limit can be specified in several places. It must be specified for each node at - // least once. This parameter maps to Memory in the Create a container - // (https://docs.docker.com/engine/api/v1.23/#create-a-container) section of the - // Docker Remote API (https://docs.docker.com/engine/api/v1.23/) and the --memory - // option to docker run (https://docs.docker.com/engine/reference/run/). This - // parameter is supported on EC2 resources but isn't supported on Fargate - // resources. For Fargate resources, you should specify the memory requirement - // using resourceRequirement. You can also do this for EC2 resources. If you're - // trying to maximize your resource utilization by providing your jobs as much - // memory as possible for a particular instance type, see Memory Management - // (https://docs.aws.amazon.com/batch/latest/userguide/memory-management.html) in - // the Batch User Guide. + // This parameter is deprecated, use resourceRequirements to specify the memory + // requirements for the job definition. It's not supported for jobs that run on + // Fargate resources. For jobs run on EC2 resources, it specifies the memory hard + // limit (in MiB) for a container. If your container attempts to exceed the + // specified number, it's terminated. You must specify at least 4 MiB of memory for + // a job using this parameter. The memory hard limit can be specified in several + // places. It must be specified for each node at least once. // // Deprecated: This field is deprecated, use resourceRequirements instead. Memory int32 @@ -834,20 +828,17 @@ type ContainerProperties struct { // option to docker run (https://docs.docker.com/engine/reference/run/). User *string - // The number of vCPUs reserved for the job. Each vCPU is equivalent to 1,024 CPU - // shares. This parameter maps to CpuShares in the Create a container + // This parameter is deprecated, use resourceRequirements to specify the vCPU + // requirements for the job definition. It's not supported for jobs that run on + // Fargate resources. For jobs run on EC2 resources, it specifies the number of + // vCPUs reserved for the job. Each vCPU is equivalent to 1,024 CPU shares. This + // parameter maps to CpuShares in the Create a container // (https://docs.docker.com/engine/api/v1.23/#create-a-container) section of the // Docker Remote API (https://docs.docker.com/engine/api/v1.23/) and the // --cpu-shares option to docker run // (https://docs.docker.com/engine/reference/run/). The number of vCPUs must be // specified but can be specified in several places. You must specify it at least - // once for each node. This parameter is supported on EC2 resources but isn't - // supported for jobs that run on Fargate resources. For these resources, use - // resourceRequirement instead. You can use this parameter or resourceRequirements - // structure but not both. This parameter isn't applicable to jobs that are running - // on Fargate resources and shouldn't be provided. For jobs that run on Fargate - // resources, you must specify the vCPU requirement for the job using - // resourceRequirements. + // once for each node. // // Deprecated: This field is deprecated, use resourceRequirements instead. Vcpus int32 @@ -894,33 +885,24 @@ type Device struct { // Provides information used to select Amazon Machine Images (AMIs) for instances // in the compute environment. If Ec2Configuration isn't specified, the default is -// currently ECS_AL1 (Amazon Linux -// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#alami)) -// for non-GPU, non AWSGraviton instances. Starting on March 31, 2021, this default -// will be changing to ECS_AL2 (Amazon Linux 2 +// ECS_AL2 (Amazon Linux 2 // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#al2ami)). // This object isn't applicable to jobs that are running on Fargate resources. type Ec2Configuration struct { // The image type to match with the instance type to select an AMI. If the // imageIdOverride parameter isn't specified, then a recent Amazon ECS-optimized - // AMI - // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) - // (ECS_AL1) is used. Starting on March 31, 2021, this default will be changing to - // ECS_AL2 (Amazon Linux 2 - // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#al2ami)). - // ECS_AL2 Amazon Linux 2 + // Amazon Linux 2 AMI + // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#al2ami) + // (ECS_AL2) is used. ECS_AL2 Amazon Linux 2 // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#al2ami)− - // Default for all Amazon Web Services Graviton-based instance families (for - // example, C6g, M6g, R6g, and T4g) and can be used for all non-GPU instance types. - // ECS_AL2_NVIDIA Amazon Linux 2 (GPU) + // Default for all non-GPU instance families. ECS_AL2_NVIDIA Amazon Linux 2 (GPU) // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#gpuami)−Default // for all GPU instance families (for example P4 and G4) and can be used for all // non Amazon Web Services Graviton-based instance types. ECS_AL1 Amazon Linux - // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#alami)−Default - // for all non-GPU, non Amazon Web Services Graviton instance families. Amazon - // Linux is reaching the end-of-life of standard support. For more information, see - // Amazon Linux AMI (http://aws.amazon.com/amazon-linux-ami/). + // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#alami). + // Amazon Linux is reaching the end-of-life of standard support. For more + // information, see Amazon Linux AMI (http://aws.amazon.com/amazon-linux-ami/). // // This member is required. ImageType *string @@ -1013,26 +995,61 @@ type EvaluateOnExit struct { // Contains a glob pattern to match against the decimal representation of the // ExitCode returned for a job. The pattern can be up to 512 characters in length. // It can contain only numbers, and can optionally end with an asterisk (*) so that - // only the start of the string needs to be an exact match. + // only the start of the string needs to be an exact match. The string can be + // between 1 and 512 characters in length. OnExitCode *string // Contains a glob pattern to match against the Reason returned for a job. The // pattern can be up to 512 characters in length. It can contain letters, numbers, // periods (.), colons (:), and white space (including spaces and tabs). It can // optionally end with an asterisk (*) so that only the start of the string needs - // to be an exact match. + // to be an exact match. The string can be between 1 and 512 characters in length. OnReason *string // Contains a glob pattern to match against the StatusReason returned for a job. // The pattern can be up to 512 characters in length. It can contain letters, // numbers, periods (.), colons (:), and white space (including spaces or tabs). It // can optionally end with an asterisk (*) so that only the start of the string - // needs to be an exact match. + // needs to be an exact match. The string can be between 1 and 512 characters in + // length. OnStatusReason *string noSmithyDocumentSerde } +// The fair share policy for a scheduling policy. +type FairsharePolicy struct { + + // A value used to reserve some of the available maximum vCPU for fair share + // identifiers that have not yet been used. The reserved ratio is + // (computeReservation/100)^ActiveFairShares where ActiveFairShares is the + // number of active fair share identifiers. For example, a computeReservation value + // of 50 indicates that Batch should reserve 50% of the maximum available vCPU if + // there is only one fair share identifier, 25% if there are two fair share + // identifiers, and 12.5% if there are three fair share identifiers. A + // computeReservation value of 25 indicates that Batch should reserve 25% of the + // maximum available vCPU if there is only one fair share identifier, 6.25% if + // there are two fair share identifiers, and 1.56% if there are three fair share + // identifiers. The minimum value is 0 and the maximum value is 99. + ComputeReservation int32 + + // The time period to use to calculate a fair share percentage for each fair share + // identifier in use, in seconds. A value of zero (0) indicates that only current + // usage should be measured; if there are four evenly weighted fair share + // identifiers then each can only use up to 25% of the available CPU resources, + // even if some of the fair share identifiers have no currently running jobs. The + // decay allows for more recently run jobs to have more weight than jobs that ran + // earlier. The maximum supported value is 604800 (1 week). + ShareDecaySeconds int32 + + // Array of SharedIdentifier objects that contain the weights for the fair share + // identifiers for the fair share policy. Fair share identifiers that are not + // included have a default weight of 1.0. + ShareDistribution []ShareAttributes + + noSmithyDocumentSerde +} + // The platform configuration for jobs that are running on Fargate resources. Jobs // that run on EC2 resources must not specify this parameter. type FargatePlatformConfiguration struct { @@ -1086,9 +1103,9 @@ type JobDefinition struct { // This member is required. Revision int32 - // The type of job definition. If the job is run on Fargate resources, then - // multinode isn't supported. For more information about multi-node parallel jobs, - // see Creating a multi-node parallel job definition + // The type of job definition, either container or multinode. If the job is run on + // Fargate resources, then multinode isn't supported. For more information about + // multi-node parallel jobs, see Creating a multi-node parallel job definition // (https://docs.aws.amazon.com/batch/latest/userguide/multi-node-job-def.html) in // the Batch User Guide. // @@ -1128,6 +1145,11 @@ type JobDefinition struct { // definition. RetryStrategy *RetryStrategy + // The scheduling priority of the job definition. This will only affect jobs in job + // queues with a fair share policy. Jobs with a higher scheduling priority will be + // scheduled before jobs with a lower scheduling priority. + SchedulingPriority int32 + // The status of the job definition. Status *string @@ -1242,6 +1264,14 @@ type JobDetail struct { // The retry strategy to use for this job if an attempt fails. RetryStrategy *RetryStrategy + // The scheduling policy of the job definition. This will only affect jobs in job + // queues with a fair share policy. Jobs with a higher scheduling priority will be + // scheduled before jobs with a lower scheduling priority. + SchedulingPriority int32 + + // The share identifier for the job. + ShareIdentifier *string + // A short, human-readable string to provide additional details about the current // status of the job. StatusReason *string @@ -1298,6 +1328,11 @@ type JobQueueDetail struct { // This member is required. State JQState + // Amazon Resource Name (ARN) of the scheduling policy. The format is + // aws:Partition:batch:Region:Account:scheduling-policy/Name . For example, + // aws:aws:batch:us-west-2:012345678910:scheduling-policy/MySchedulingPolicy. + SchedulingPolicyArn *string + // The status of the job queue (for example, CREATING or VALID). Status JQStatus @@ -1836,6 +1871,45 @@ type RetryStrategy struct { noSmithyDocumentSerde } +// An object representing a scheduling policy. +type SchedulingPolicyDetail struct { + + // Amazon Resource Name (ARN) of the scheduling policy. An example would be + // arn:aws:batch:us-east-1:123456789012:scheduling-policy/HighPriority + // + // This member is required. + Arn *string + + // The name of the scheduling policy. + // + // This member is required. + Name *string + + // The fair share policy for the scheduling policy. + FairsharePolicy *FairsharePolicy + + // The tags that you apply to the scheduling policy to help you categorize and + // organize your resources. Each tag consists of a key and an optional value. For + // more information, see Tagging Amazon Web Services Resources + // (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in Amazon Web + // Services General Reference. + Tags map[string]string + + noSmithyDocumentSerde +} + +// An object containing the details of a scheduling policy returned in a +// ListSchedulingPolicy action. +type SchedulingPolicyListingDetail struct { + + // Amazon Resource Name (ARN) of the scheduling policy. + // + // This member is required. + Arn *string + + noSmithyDocumentSerde +} + // An object representing the secret to expose to your container. Secrets can be // exposed to a container in the following ways: // @@ -1870,6 +1944,33 @@ type Secret struct { noSmithyDocumentSerde } +// Specifies the weights for the fair share identifiers for the fair share policy. +// Fair share identifiers that are not included have a default weight of 1.0. +type ShareAttributes struct { + + // A fair share identifier or fair share identifier prefix. If the string ends with + // '*' then this entry specifies the weight factor to use for fair share + // identifiers that begin with that prefix. The list of fair share identifiers in a + // fair share policy cannot overlap. For example you cannot have one that specifies + // a shareIdentifier of UserA* and another that specifies a shareIdentifier of + // UserA-1. There can be no more than 500 fair share identifiers active in a job + // queue. The string is limited to 255 alphanumeric characters, optionally followed + // by '*'. + // + // This member is required. + ShareIdentifier *string + + // The weight factor for the fair share identifier. The default value is 1.0. A + // lower value has a higher priority for compute resources. For example, jobs using + // a share identifier with a weight factor of 0.125 (1/8) will get 8 times the + // compute resources of jobs using a share identifier with a weight factor of 1. + // The smallest supported value is 0.0001 and the largest supported value is + // 999.9999. + WeightFactor float32 + + noSmithyDocumentSerde +} + // The container path, mount options, and size of the tmpfs mount. This object // isn't applicable to jobs that are running on Fargate resources. type Tmpfs struct { diff --git a/service/batch/validators.go b/service/batch/validators.go index 0f25a2f4dec..d8aa2f0ea38 100644 --- a/service/batch/validators.go +++ b/service/batch/validators.go @@ -70,6 +70,26 @@ func (m *validateOpCreateJobQueue) HandleInitialize(ctx context.Context, in midd return next.HandleInitialize(ctx, in) } +type validateOpCreateSchedulingPolicy struct { +} + +func (*validateOpCreateSchedulingPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateSchedulingPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateSchedulingPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateSchedulingPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDeleteComputeEnvironment struct { } @@ -110,6 +130,26 @@ func (m *validateOpDeleteJobQueue) HandleInitialize(ctx context.Context, in midd return next.HandleInitialize(ctx, in) } +type validateOpDeleteSchedulingPolicy struct { +} + +func (*validateOpDeleteSchedulingPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteSchedulingPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteSchedulingPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteSchedulingPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDeregisterJobDefinition struct { } @@ -150,6 +190,26 @@ func (m *validateOpDescribeJobs) HandleInitialize(ctx context.Context, in middle return next.HandleInitialize(ctx, in) } +type validateOpDescribeSchedulingPolicies struct { +} + +func (*validateOpDescribeSchedulingPolicies) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeSchedulingPolicies) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeSchedulingPoliciesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeSchedulingPoliciesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpListTagsForResource struct { } @@ -310,6 +370,26 @@ func (m *validateOpUpdateJobQueue) HandleInitialize(ctx context.Context, in midd return next.HandleInitialize(ctx, in) } +type validateOpUpdateSchedulingPolicy struct { +} + +func (*validateOpUpdateSchedulingPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateSchedulingPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateSchedulingPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateSchedulingPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + func addOpCancelJobValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCancelJob{}, middleware.After) } @@ -322,6 +402,10 @@ func addOpCreateJobQueueValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCreateJobQueue{}, middleware.After) } +func addOpCreateSchedulingPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateSchedulingPolicy{}, middleware.After) +} + func addOpDeleteComputeEnvironmentValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeleteComputeEnvironment{}, middleware.After) } @@ -330,6 +414,10 @@ func addOpDeleteJobQueueValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeleteJobQueue{}, middleware.After) } +func addOpDeleteSchedulingPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteSchedulingPolicy{}, middleware.After) +} + func addOpDeregisterJobDefinitionValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeregisterJobDefinition{}, middleware.After) } @@ -338,6 +426,10 @@ func addOpDescribeJobsValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDescribeJobs{}, middleware.After) } +func addOpDescribeSchedulingPoliciesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeSchedulingPolicies{}, middleware.After) +} + func addOpListTagsForResourceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListTagsForResource{}, middleware.After) } @@ -370,6 +462,10 @@ func addOpUpdateJobQueueValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdateJobQueue{}, middleware.After) } +func addOpUpdateSchedulingPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateSchedulingPolicy{}, middleware.After) +} + func validateComputeEnvironmentOrder(v *types.ComputeEnvironmentOrder) error { if v == nil { return nil @@ -595,6 +691,23 @@ func validateEvaluateOnExitList(v []types.EvaluateOnExit) error { } } +func validateFairsharePolicy(v *types.FairsharePolicy) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "FairsharePolicy"} + if v.ShareDistribution != nil { + if err := validateShareAttributesList(v.ShareDistribution); err != nil { + invalidParams.AddNested("ShareDistribution", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateLinuxParameters(v *types.LinuxParameters) error { if v == nil { return nil @@ -834,6 +947,38 @@ func validateSecretList(v []types.Secret) error { } } +func validateShareAttributes(v *types.ShareAttributes) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ShareAttributes"} + if v.ShareIdentifier == nil { + invalidParams.Add(smithy.NewErrParamRequired("ShareIdentifier")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateShareAttributesList(v []types.ShareAttributes) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ShareAttributesList"} + for i := range v { + if err := validateShareAttributes(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateTmpfs(v *types.Tmpfs) error { if v == nil { return nil @@ -995,6 +1140,26 @@ func validateOpCreateJobQueueInput(v *CreateJobQueueInput) error { } } +func validateOpCreateSchedulingPolicyInput(v *CreateSchedulingPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateSchedulingPolicyInput"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.FairsharePolicy != nil { + if err := validateFairsharePolicy(v.FairsharePolicy); err != nil { + invalidParams.AddNested("FairsharePolicy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDeleteComputeEnvironmentInput(v *DeleteComputeEnvironmentInput) error { if v == nil { return nil @@ -1025,6 +1190,21 @@ func validateOpDeleteJobQueueInput(v *DeleteJobQueueInput) error { } } +func validateOpDeleteSchedulingPolicyInput(v *DeleteSchedulingPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteSchedulingPolicyInput"} + if v.Arn == nil { + invalidParams.Add(smithy.NewErrParamRequired("Arn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDeregisterJobDefinitionInput(v *DeregisterJobDefinitionInput) error { if v == nil { return nil @@ -1055,6 +1235,21 @@ func validateOpDescribeJobsInput(v *DescribeJobsInput) error { } } +func validateOpDescribeSchedulingPoliciesInput(v *DescribeSchedulingPoliciesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeSchedulingPoliciesInput"} + if v.Arns == nil { + invalidParams.Add(smithy.NewErrParamRequired("Arns")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpListTagsForResourceInput(v *ListTagsForResourceInput) error { if v == nil { return nil @@ -1227,3 +1422,23 @@ func validateOpUpdateJobQueueInput(v *UpdateJobQueueInput) error { return nil } } + +func validateOpUpdateSchedulingPolicyInput(v *UpdateSchedulingPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateSchedulingPolicyInput"} + if v.Arn == nil { + invalidParams.Add(smithy.NewErrParamRequired("Arn")) + } + if v.FairsharePolicy != nil { + if err := validateFairsharePolicy(v.FairsharePolicy); err != nil { + invalidParams.AddNested("FairsharePolicy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} diff --git a/service/chimesdkmeetings/LICENSE.txt b/service/chimesdkmeetings/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/service/chimesdkmeetings/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/service/chimesdkmeetings/api_client.go b/service/chimesdkmeetings/api_client.go new file mode 100644 index 00000000000..7615528b60d --- /dev/null +++ b/service/chimesdkmeetings/api_client.go @@ -0,0 +1,317 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + cryptorand "crypto/rand" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + smithy "github.com/aws/smithy-go" + smithydocument "github.com/aws/smithy-go/document" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/middleware" + smithyrand "github.com/aws/smithy-go/rand" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" + "time" +) + +const ServiceID = "Chime SDK Meetings" +const ServiceAPIVersion = "2021-07-15" + +// Client provides the API client to make operations call for Amazon Chime SDK +// Meetings. +type Client struct { + options Options +} + +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() + + resolveDefaultLogger(&options) + + resolveRetryer(&options) + + resolveHTTPClient(&options) + + resolveHTTPSignerV4(&options) + + resolveDefaultEndpointConfiguration(&options) + + resolveIdempotencyTokenProvider(&options) + + for _, fn := range optFns { + fn(&options) + } + + client := &Client{ + options: options, + } + + return client +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + EndpointResolver EndpointResolver + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // Provides idempotency tokens values that will be automatically populated into + // idempotent API operations. + IdempotencyTokenProvider IdempotencyTokenProvider + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The region to send requests to. (Required) + Region string + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. + Retryer aws.Retryer + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// WithEndpointResolver returns a functional option for setting the Client's +// EndpointResolver option. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + return to +} +func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) { + ctx = middleware.ClearStackValues(ctx) + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) + options := c.options.Copy() + for _, fn := range optFns { + fn(&options) + } + + finalizeClientEndpointResolverOptions(&options) + + for _, fn := range stackFns { + if err := fn(stack, options); err != nil { + return nil, metadata, err + } + } + + for _, fn := range options.APIOptions { + if err := fn(stack); err != nil { + return nil, metadata, err + } + } + + handler := middleware.DecorateHandler(smithyhttp.NewClientHandler(options.HTTPClient), stack) + result, metadata, err = handler.Handle(ctx, params) + if err != nil { + err = &smithy.OperationError{ + ServiceID: ServiceID, + OperationName: opID, + Err: err, + } + } + return result, metadata, err +} + +type noSmithyDocumentSerde = smithydocument.NoSerde + +func resolveDefaultLogger(o *Options) { + if o.Logger != nil { + return + } + o.Logger = logging.Nop{} +} + +func addSetLoggerMiddleware(stack *middleware.Stack, o Options) error { + return middleware.AddSetLoggerMiddleware(stack, o.Logger) +} + +// NewFromConfig returns a new client from the provided config. +func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { + opts := Options{ + Region: cfg.Region, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + } + resolveAWSRetryerProvider(cfg, &opts) + resolveAWSEndpointResolver(cfg, &opts) + resolveUseDualStackEndpoint(cfg, &opts) + resolveUseFIPSEndpoint(cfg, &opts) + return New(opts, optFns...) +} + +func resolveHTTPClient(o *Options) { + if o.HTTPClient != nil { + return + } + o.HTTPClient = awshttp.NewBuildableClient() +} + +func resolveRetryer(o *Options) { + if o.Retryer != nil { + return + } + o.Retryer = retry.NewStandard() +} + +func resolveAWSRetryerProvider(cfg aws.Config, o *Options) { + if cfg.Retryer == nil { + return + } + o.Retryer = cfg.Retryer() +} + +func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { + if cfg.EndpointResolver == nil { + return + } + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions, NewDefaultEndpointResolver()) +} + +func addClientUserAgent(stack *middleware.Stack) error { + return awsmiddleware.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "chimesdkmeetings", goModuleVersion)(stack) +} + +func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error { + mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{ + CredentialsProvider: o.Credentials, + Signer: o.HTTPSignerV4, + LogSigning: o.ClientLogMode.IsSigning(), + }) + return stack.Finalize.Add(mw, middleware.After) +} + +type HTTPSignerV4 interface { + SignHTTP(ctx context.Context, credentials aws.Credentials, r *http.Request, payloadHash string, service string, region string, signingTime time.Time, optFns ...func(*v4.SignerOptions)) error +} + +func resolveHTTPSignerV4(o *Options) { + if o.HTTPSignerV4 != nil { + return + } + o.HTTPSignerV4 = newDefaultV4Signer(*o) +} + +func newDefaultV4Signer(o Options) *v4.Signer { + return v4.NewSigner(func(so *v4.SignerOptions) { + so.Logger = o.Logger + so.LogSigning = o.ClientLogMode.IsSigning() + }) +} + +func resolveIdempotencyTokenProvider(o *Options) { + if o.IdempotencyTokenProvider != nil { + return + } + o.IdempotencyTokenProvider = smithyrand.NewUUIDIdempotencyToken(cryptorand.Reader) +} + +func addRetryMiddlewares(stack *middleware.Stack, o Options) error { + mo := retry.AddRetryMiddlewaresOptions{ + Retryer: o.Retryer, + LogRetryAttempts: o.ClientLogMode.IsRetries(), + } + return retry.AddRetryMiddlewares(stack, mo) +} + +// resolves dual-stack endpoint configuration +func resolveUseDualStackEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseDualStackEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseDualStackEndpoint = value + } + return nil +} + +// resolves FIPS endpoint configuration +func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseFIPSEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseFIPSEndpoint = value + } + return nil +} + +// IdempotencyTokenProvider interface for providing idempotency token +type IdempotencyTokenProvider interface { + GetIdempotencyToken() (string, error) +} + +func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { + return awsmiddleware.AddRequestIDRetrieverMiddleware(stack) +} + +func addResponseErrorMiddleware(stack *middleware.Stack) error { + return awshttp.AddResponseErrorMiddleware(stack) +} + +func addRequestResponseLogging(stack *middleware.Stack, o Options) error { + return stack.Deserialize.Add(&smithyhttp.RequestResponseLogger{ + LogRequest: o.ClientLogMode.IsRequest(), + LogRequestWithBody: o.ClientLogMode.IsRequestWithBody(), + LogResponse: o.ClientLogMode.IsResponse(), + LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), + }, middleware.After) +} diff --git a/service/chimesdkmeetings/api_op_BatchCreateAttendee.go b/service/chimesdkmeetings/api_op_BatchCreateAttendee.go new file mode 100644 index 00000000000..696cb01f1dc --- /dev/null +++ b/service/chimesdkmeetings/api_op_BatchCreateAttendee.go @@ -0,0 +1,130 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a group of meeting attendees. +func (c *Client) BatchCreateAttendee(ctx context.Context, params *BatchCreateAttendeeInput, optFns ...func(*Options)) (*BatchCreateAttendeeOutput, error) { + if params == nil { + params = &BatchCreateAttendeeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "BatchCreateAttendee", params, optFns, c.addOperationBatchCreateAttendeeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*BatchCreateAttendeeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type BatchCreateAttendeeInput struct { + + // The attendee information, including attendees' IDs and join tokens. + // + // This member is required. + Attendees []types.CreateAttendeeRequestItem + + // The Amazon Chime SDK ID of the meeting to which you're adding attendees. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type BatchCreateAttendeeOutput struct { + + // The attendee information, including attendees' IDs and join tokens. + Attendees []types.Attendee + + // If the action fails for one or more of the attendees in the request, a list of + // the attendees is returned, along with error codes and error messages. + Errors []types.CreateAttendeeError + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationBatchCreateAttendeeMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpBatchCreateAttendee{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpBatchCreateAttendee{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpBatchCreateAttendeeValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opBatchCreateAttendee(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opBatchCreateAttendee(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "BatchCreateAttendee", + } +} diff --git a/service/chimesdkmeetings/api_op_CreateAttendee.go b/service/chimesdkmeetings/api_op_CreateAttendee.go new file mode 100644 index 00000000000..8eb5829d47e --- /dev/null +++ b/service/chimesdkmeetings/api_op_CreateAttendee.go @@ -0,0 +1,130 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new attendee for an active Amazon Chime SDK meeting. For more +// information about the Amazon Chime SDK, see Using the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) CreateAttendee(ctx context.Context, params *CreateAttendeeInput, optFns ...func(*Options)) (*CreateAttendeeOutput, error) { + if params == nil { + params = &CreateAttendeeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateAttendee", params, optFns, c.addOperationCreateAttendeeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateAttendeeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateAttendeeInput struct { + + // The Amazon Chime SDK external user ID. An idempotency token. Links the attendee + // to an identity managed by a builder application. + // + // This member is required. + ExternalUserId *string + + // The unique ID of the meeting. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type CreateAttendeeOutput struct { + + // The attendee information, including attendee ID and join token. + Attendee *types.Attendee + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateAttendeeMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateAttendee{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateAttendee{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpCreateAttendeeValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateAttendee(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateAttendee(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "CreateAttendee", + } +} diff --git a/service/chimesdkmeetings/api_op_CreateMeeting.go b/service/chimesdkmeetings/api_op_CreateMeeting.go new file mode 100644 index 00000000000..24acbbc07b3 --- /dev/null +++ b/service/chimesdkmeetings/api_op_CreateMeeting.go @@ -0,0 +1,186 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new Amazon Chime SDK meeting in the specified media Region with no +// initial attendees. For more information about specifying media Regions, see +// Amazon Chime SDK Media Regions +// (https://docs.aws.amazon.com/chime/latest/dg/chime-sdk-meetings-regions.html) in +// the Amazon Chime Developer Guide. For more information about the Amazon Chime +// SDK, see Using the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) CreateMeeting(ctx context.Context, params *CreateMeetingInput, optFns ...func(*Options)) (*CreateMeetingOutput, error) { + if params == nil { + params = &CreateMeetingInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateMeeting", params, optFns, c.addOperationCreateMeetingMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateMeetingOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateMeetingInput struct { + + // The unique identifier for the client request. Use a different token for + // different meetings. + // + // This member is required. + ClientRequestToken *string + + // The external meeting ID. + // + // This member is required. + ExternalMeetingId *string + + // The Region in which to create the meeting. Available values: af-south-1 , + // ap-northeast-1 , ap-northeast-2 , ap-south-1 , ap-southeast-1 , ap-southeast-2 , + // ca-central-1 , eu-central-1 , eu-north-1 , eu-south-1 , eu-west-1 , eu-west-2 , + // eu-west-3 , sa-east-1 , us-east-1 , us-east-2 , us-west-1 , us-west-2 . + // + // This member is required. + MediaRegion *string + + // Reserved. + MeetingHostId *string + + // The configuration for resource targets to receive notifications when meeting and + // attendee events occur. + NotificationsConfiguration *types.NotificationsConfiguration + + noSmithyDocumentSerde +} + +type CreateMeetingOutput struct { + + // The meeting information, including the meeting ID and MediaPlacement. + Meeting *types.Meeting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateMeetingMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateMeeting{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateMeeting{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateMeetingMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateMeetingValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateMeeting(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateMeeting struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateMeeting) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateMeeting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateMeetingInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateMeetingInput ") + } + + if input.ClientRequestToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientRequestToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateMeetingMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateMeeting{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateMeeting(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "CreateMeeting", + } +} diff --git a/service/chimesdkmeetings/api_op_CreateMeetingWithAttendees.go b/service/chimesdkmeetings/api_op_CreateMeetingWithAttendees.go new file mode 100644 index 00000000000..256aee068ba --- /dev/null +++ b/service/chimesdkmeetings/api_op_CreateMeetingWithAttendees.go @@ -0,0 +1,195 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new Amazon Chime SDK meeting in the specified media Region, with +// attendees. For more information about specifying media Regions, see Amazon Chime +// SDK Media Regions +// (https://docs.aws.amazon.com/chime/latest/dg/chime-sdk-meetings-regions.html) in +// the Amazon Chime Developer Guide. For more information about the Amazon Chime +// SDK, see Using the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) CreateMeetingWithAttendees(ctx context.Context, params *CreateMeetingWithAttendeesInput, optFns ...func(*Options)) (*CreateMeetingWithAttendeesOutput, error) { + if params == nil { + params = &CreateMeetingWithAttendeesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateMeetingWithAttendees", params, optFns, c.addOperationCreateMeetingWithAttendeesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateMeetingWithAttendeesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateMeetingWithAttendeesInput struct { + + // The attendee information, including attendees' IDs and join tokens. + // + // This member is required. + Attendees []types.CreateAttendeeRequestItem + + // The unique identifier for the client request. Use a different token for + // different meetings. + // + // This member is required. + ClientRequestToken *string + + // The external meeting ID. + // + // This member is required. + ExternalMeetingId *string + + // The Region in which to create the meeting. + // + // This member is required. + MediaRegion *string + + // Reserved. + MeetingHostId *string + + // The configuration for resource targets to receive notifications when meeting and + // attendee events occur. + NotificationsConfiguration *types.NotificationsConfiguration + + noSmithyDocumentSerde +} + +type CreateMeetingWithAttendeesOutput struct { + + // The attendee information, including attendees' IDs and join tokens. + Attendees []types.Attendee + + // If the action fails for one or more of the attendees in the request, a list of + // the attendees is returned, along with error codes and error messages. + Errors []types.CreateAttendeeError + + // The meeting information, including the meeting ID and MediaPlacement. + Meeting *types.Meeting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateMeetingWithAttendeesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateMeetingWithAttendees{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateMeetingWithAttendees{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateMeetingWithAttendeesMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateMeetingWithAttendeesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateMeetingWithAttendees(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateMeetingWithAttendees struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateMeetingWithAttendees) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateMeetingWithAttendees) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateMeetingWithAttendeesInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateMeetingWithAttendeesInput ") + } + + if input.ClientRequestToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientRequestToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateMeetingWithAttendeesMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateMeetingWithAttendees{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateMeetingWithAttendees(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "CreateMeetingWithAttendees", + } +} diff --git a/service/chimesdkmeetings/api_op_DeleteAttendee.go b/service/chimesdkmeetings/api_op_DeleteAttendee.go new file mode 100644 index 00000000000..b33bd0ae8cf --- /dev/null +++ b/service/chimesdkmeetings/api_op_DeleteAttendee.go @@ -0,0 +1,126 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes an attendee from the specified Amazon Chime SDK meeting and deletes +// their JoinToken. Attendees are automatically deleted when a Amazon Chime SDK +// meeting is deleted. For more information about the Amazon Chime SDK, see Using +// the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) DeleteAttendee(ctx context.Context, params *DeleteAttendeeInput, optFns ...func(*Options)) (*DeleteAttendeeOutput, error) { + if params == nil { + params = &DeleteAttendeeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteAttendee", params, optFns, c.addOperationDeleteAttendeeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteAttendeeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteAttendeeInput struct { + + // The Amazon Chime SDK attendee ID. + // + // This member is required. + AttendeeId *string + + // The Amazon Chime SDK meeting ID. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type DeleteAttendeeOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteAttendeeMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteAttendee{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteAttendee{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteAttendeeValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteAttendee(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteAttendee(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "DeleteAttendee", + } +} diff --git a/service/chimesdkmeetings/api_op_DeleteMeeting.go b/service/chimesdkmeetings/api_op_DeleteMeeting.go new file mode 100644 index 00000000000..721283f58ab --- /dev/null +++ b/service/chimesdkmeetings/api_op_DeleteMeeting.go @@ -0,0 +1,120 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes the specified Amazon Chime SDK meeting. The operation deletes all +// attendees, disconnects all clients, and prevents new clients from joining the +// meeting. For more information about the Amazon Chime SDK, see Using the Amazon +// Chime SDK (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the +// Amazon Chime Developer Guide. +func (c *Client) DeleteMeeting(ctx context.Context, params *DeleteMeetingInput, optFns ...func(*Options)) (*DeleteMeetingOutput, error) { + if params == nil { + params = &DeleteMeetingInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteMeeting", params, optFns, c.addOperationDeleteMeetingMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteMeetingOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteMeetingInput struct { + + // The Amazon Chime SDK meeting ID. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type DeleteMeetingOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteMeetingMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteMeeting{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteMeeting{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteMeetingValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteMeeting(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteMeeting(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "DeleteMeeting", + } +} diff --git a/service/chimesdkmeetings/api_op_GetAttendee.go b/service/chimesdkmeetings/api_op_GetAttendee.go new file mode 100644 index 00000000000..90edee0eeba --- /dev/null +++ b/service/chimesdkmeetings/api_op_GetAttendee.go @@ -0,0 +1,129 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Gets the Amazon Chime SDK attendee details for a specified meeting ID and +// attendee ID. For more information about the Amazon Chime SDK, see Using the +// Amazon Chime SDK (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) +// in the Amazon Chime Developer Guide. +func (c *Client) GetAttendee(ctx context.Context, params *GetAttendeeInput, optFns ...func(*Options)) (*GetAttendeeOutput, error) { + if params == nil { + params = &GetAttendeeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetAttendee", params, optFns, c.addOperationGetAttendeeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetAttendeeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetAttendeeInput struct { + + // The Amazon Chime SDK attendee ID. + // + // This member is required. + AttendeeId *string + + // The Amazon Chime SDK meeting ID. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type GetAttendeeOutput struct { + + // The Amazon Chime SDK attendee information. + Attendee *types.Attendee + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetAttendeeMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetAttendee{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetAttendee{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetAttendeeValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetAttendee(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetAttendee(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "GetAttendee", + } +} diff --git a/service/chimesdkmeetings/api_op_GetMeeting.go b/service/chimesdkmeetings/api_op_GetMeeting.go new file mode 100644 index 00000000000..0cd82ebf850 --- /dev/null +++ b/service/chimesdkmeetings/api_op_GetMeeting.go @@ -0,0 +1,124 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Gets the Amazon Chime SDK meeting details for the specified meeting ID. For more +// information about the Amazon Chime SDK, see Using the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) GetMeeting(ctx context.Context, params *GetMeetingInput, optFns ...func(*Options)) (*GetMeetingOutput, error) { + if params == nil { + params = &GetMeetingInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetMeeting", params, optFns, c.addOperationGetMeetingMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetMeetingOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetMeetingInput struct { + + // The Amazon Chime SDK meeting ID. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type GetMeetingOutput struct { + + // The Amazon Chime SDK meeting information. + Meeting *types.Meeting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetMeetingMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetMeeting{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetMeeting{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetMeetingValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetMeeting(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetMeeting(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "GetMeeting", + } +} diff --git a/service/chimesdkmeetings/api_op_ListAttendees.go b/service/chimesdkmeetings/api_op_ListAttendees.go new file mode 100644 index 00000000000..a894658d8b3 --- /dev/null +++ b/service/chimesdkmeetings/api_op_ListAttendees.go @@ -0,0 +1,219 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the attendees for the specified Amazon Chime SDK meeting. For more +// information about the Amazon Chime SDK, see Using the Amazon Chime SDK +// (https://docs.aws.amazon.com/chime/latest/dg/meetings-sdk.html) in the Amazon +// Chime Developer Guide. +func (c *Client) ListAttendees(ctx context.Context, params *ListAttendeesInput, optFns ...func(*Options)) (*ListAttendeesOutput, error) { + if params == nil { + params = &ListAttendeesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAttendees", params, optFns, c.addOperationListAttendeesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAttendeesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAttendeesInput struct { + + // The Amazon Chime SDK meeting ID. + // + // This member is required. + MeetingId *string + + // The maximum number of results to return in a single call. + MaxResults *int32 + + // The token to use to retrieve the next page of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAttendeesOutput struct { + + // The Amazon Chime SDK attendee information. + Attendees []types.Attendee + + // The token to use to retrieve the next page of results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAttendeesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAttendees{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAttendees{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAttendeesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAttendees(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAttendeesAPIClient is a client that implements the ListAttendees operation. +type ListAttendeesAPIClient interface { + ListAttendees(context.Context, *ListAttendeesInput, ...func(*Options)) (*ListAttendeesOutput, error) +} + +var _ ListAttendeesAPIClient = (*Client)(nil) + +// ListAttendeesPaginatorOptions is the paginator options for ListAttendees +type ListAttendeesPaginatorOptions struct { + // The maximum number of results to return in a single call. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAttendeesPaginator is a paginator for ListAttendees +type ListAttendeesPaginator struct { + options ListAttendeesPaginatorOptions + client ListAttendeesAPIClient + params *ListAttendeesInput + nextToken *string + firstPage bool +} + +// NewListAttendeesPaginator returns a new ListAttendeesPaginator +func NewListAttendeesPaginator(client ListAttendeesAPIClient, params *ListAttendeesInput, optFns ...func(*ListAttendeesPaginatorOptions)) *ListAttendeesPaginator { + if params == nil { + params = &ListAttendeesInput{} + } + + options := ListAttendeesPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListAttendeesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAttendeesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAttendees page. +func (p *ListAttendeesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAttendeesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + result, err := p.client.ListAttendees(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAttendees(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "ListAttendees", + } +} diff --git a/service/chimesdkmeetings/api_op_StartMeetingTranscription.go b/service/chimesdkmeetings/api_op_StartMeetingTranscription.go new file mode 100644 index 00000000000..aba876a59ac --- /dev/null +++ b/service/chimesdkmeetings/api_op_StartMeetingTranscription.go @@ -0,0 +1,123 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts transcription for the specified meetingId. +func (c *Client) StartMeetingTranscription(ctx context.Context, params *StartMeetingTranscriptionInput, optFns ...func(*Options)) (*StartMeetingTranscriptionOutput, error) { + if params == nil { + params = &StartMeetingTranscriptionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartMeetingTranscription", params, optFns, c.addOperationStartMeetingTranscriptionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartMeetingTranscriptionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartMeetingTranscriptionInput struct { + + // The unique ID of the meeting being transcribed. + // + // This member is required. + MeetingId *string + + // The configuration for the current transcription operation. Must contain + // EngineTranscribeSettings or EngineTranscribeMedicalSettings. + // + // This member is required. + TranscriptionConfiguration *types.TranscriptionConfiguration + + noSmithyDocumentSerde +} + +type StartMeetingTranscriptionOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartMeetingTranscriptionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartMeetingTranscription{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartMeetingTranscription{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStartMeetingTranscriptionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartMeetingTranscription(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartMeetingTranscription(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "StartMeetingTranscription", + } +} diff --git a/service/chimesdkmeetings/api_op_StopMeetingTranscription.go b/service/chimesdkmeetings/api_op_StopMeetingTranscription.go new file mode 100644 index 00000000000..d5cf31773ba --- /dev/null +++ b/service/chimesdkmeetings/api_op_StopMeetingTranscription.go @@ -0,0 +1,116 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Stops transcription for the specified meetingId. +func (c *Client) StopMeetingTranscription(ctx context.Context, params *StopMeetingTranscriptionInput, optFns ...func(*Options)) (*StopMeetingTranscriptionOutput, error) { + if params == nil { + params = &StopMeetingTranscriptionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StopMeetingTranscription", params, optFns, c.addOperationStopMeetingTranscriptionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StopMeetingTranscriptionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StopMeetingTranscriptionInput struct { + + // The unique ID of the meeting for which you stop transcription. + // + // This member is required. + MeetingId *string + + noSmithyDocumentSerde +} + +type StopMeetingTranscriptionOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStopMeetingTranscriptionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStopMeetingTranscription{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStopMeetingTranscription{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStopMeetingTranscriptionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStopMeetingTranscription(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStopMeetingTranscription(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "chime", + OperationName: "StopMeetingTranscription", + } +} diff --git a/service/chimesdkmeetings/deserializers.go b/service/chimesdkmeetings/deserializers.go new file mode 100644 index 00000000000..7d7f1efad3f --- /dev/null +++ b/service/chimesdkmeetings/deserializers.go @@ -0,0 +1,2579 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws/protocol/restjson" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + smithy "github.com/aws/smithy-go" + smithyio "github.com/aws/smithy-go/io" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + smithyhttp "github.com/aws/smithy-go/transport/http" + "io" + "io/ioutil" + "strings" +) + +type awsRestjson1_deserializeOpBatchCreateAttendee struct { +} + +func (*awsRestjson1_deserializeOpBatchCreateAttendee) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpBatchCreateAttendee) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorBatchCreateAttendee(response, &metadata) + } + output := &BatchCreateAttendeeOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentBatchCreateAttendeeOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorBatchCreateAttendee(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentBatchCreateAttendeeOutput(v **BatchCreateAttendeeOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *BatchCreateAttendeeOutput + if *v == nil { + sv = &BatchCreateAttendeeOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Attendees": + if err := awsRestjson1_deserializeDocumentAttendeeList(&sv.Attendees, value); err != nil { + return err + } + + case "Errors": + if err := awsRestjson1_deserializeDocumentBatchCreateAttendeeErrorList(&sv.Errors, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateAttendee struct { +} + +func (*awsRestjson1_deserializeOpCreateAttendee) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateAttendee) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateAttendee(response, &metadata) + } + output := &CreateAttendeeOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateAttendeeOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateAttendee(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + case strings.EqualFold("UnprocessableEntityException", errorCode): + return awsRestjson1_deserializeErrorUnprocessableEntityException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateAttendeeOutput(v **CreateAttendeeOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateAttendeeOutput + if *v == nil { + sv = &CreateAttendeeOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Attendee": + if err := awsRestjson1_deserializeDocumentAttendee(&sv.Attendee, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateMeeting struct { +} + +func (*awsRestjson1_deserializeOpCreateMeeting) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateMeeting) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateMeeting(response, &metadata) + } + output := &CreateMeetingOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateMeetingOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateMeeting(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateMeetingOutput(v **CreateMeetingOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateMeetingOutput + if *v == nil { + sv = &CreateMeetingOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Meeting": + if err := awsRestjson1_deserializeDocumentMeeting(&sv.Meeting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateMeetingWithAttendees struct { +} + +func (*awsRestjson1_deserializeOpCreateMeetingWithAttendees) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateMeetingWithAttendees) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateMeetingWithAttendees(response, &metadata) + } + output := &CreateMeetingWithAttendeesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateMeetingWithAttendeesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateMeetingWithAttendees(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateMeetingWithAttendeesOutput(v **CreateMeetingWithAttendeesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateMeetingWithAttendeesOutput + if *v == nil { + sv = &CreateMeetingWithAttendeesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Attendees": + if err := awsRestjson1_deserializeDocumentAttendeeList(&sv.Attendees, value); err != nil { + return err + } + + case "Errors": + if err := awsRestjson1_deserializeDocumentBatchCreateAttendeeErrorList(&sv.Errors, value); err != nil { + return err + } + + case "Meeting": + if err := awsRestjson1_deserializeDocumentMeeting(&sv.Meeting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteAttendee struct { +} + +func (*awsRestjson1_deserializeOpDeleteAttendee) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteAttendee) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteAttendee(response, &metadata) + } + output := &DeleteAttendeeOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteAttendee(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteMeeting struct { +} + +func (*awsRestjson1_deserializeOpDeleteMeeting) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteMeeting) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteMeeting(response, &metadata) + } + output := &DeleteMeetingOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteMeeting(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpGetAttendee struct { +} + +func (*awsRestjson1_deserializeOpGetAttendee) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetAttendee) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetAttendee(response, &metadata) + } + output := &GetAttendeeOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetAttendeeOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetAttendee(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetAttendeeOutput(v **GetAttendeeOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetAttendeeOutput + if *v == nil { + sv = &GetAttendeeOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Attendee": + if err := awsRestjson1_deserializeDocumentAttendee(&sv.Attendee, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetMeeting struct { +} + +func (*awsRestjson1_deserializeOpGetMeeting) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetMeeting) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetMeeting(response, &metadata) + } + output := &GetMeetingOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetMeetingOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetMeeting(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetMeetingOutput(v **GetMeetingOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetMeetingOutput + if *v == nil { + sv = &GetMeetingOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Meeting": + if err := awsRestjson1_deserializeDocumentMeeting(&sv.Meeting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAttendees struct { +} + +func (*awsRestjson1_deserializeOpListAttendees) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAttendees) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAttendees(response, &metadata) + } + output := &ListAttendeesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAttendeesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAttendees(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAttendeesOutput(v **ListAttendeesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAttendeesOutput + if *v == nil { + sv = &ListAttendeesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Attendees": + if err := awsRestjson1_deserializeDocumentAttendeeList(&sv.Attendees, value); err != nil { + return err + } + + case "NextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpStartMeetingTranscription struct { +} + +func (*awsRestjson1_deserializeOpStartMeetingTranscription) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpStartMeetingTranscription) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorStartMeetingTranscription(response, &metadata) + } + output := &StartMeetingTranscriptionOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorStartMeetingTranscription(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + case strings.EqualFold("UnprocessableEntityException", errorCode): + return awsRestjson1_deserializeErrorUnprocessableEntityException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpStopMeetingTranscription struct { +} + +func (*awsRestjson1_deserializeOpStopMeetingTranscription) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpStopMeetingTranscription) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorStopMeetingTranscription(response, &metadata) + } + output := &StopMeetingTranscriptionOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorStopMeetingTranscription(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceUnavailableException", errorCode): + return awsRestjson1_deserializeErrorServiceUnavailableException(response, errorBody) + + case strings.EqualFold("UnauthorizedException", errorCode): + return awsRestjson1_deserializeErrorUnauthorizedException(response, errorBody) + + case strings.EqualFold("UnprocessableEntityException", errorCode): + return awsRestjson1_deserializeErrorUnprocessableEntityException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpHttpBindingsServiceUnavailableException(v *types.ServiceUnavailableException, response *smithyhttp.Response) error { + if v == nil { + return fmt.Errorf("unsupported deserialization for nil %T", v) + } + + if headerValues := response.Header.Values("Retry-After"); len(headerValues) != 0 { + headerValues[0] = strings.TrimSpace(headerValues[0]) + v.RetryAfterSeconds = ptr.String(headerValues[0]) + } + + return nil +} +func awsRestjson1_deserializeErrorBadRequestException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.BadRequestException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentBadRequestException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorForbiddenException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ForbiddenException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentForbiddenException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorLimitExceededException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.LimitExceededException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentLimitExceededException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.NotFoundException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorServiceUnavailableException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ServiceUnavailableException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentServiceUnavailableException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + if err := awsRestjson1_deserializeOpHttpBindingsServiceUnavailableException(output, response); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to decode response error with invalid HTTP bindings, %w", err)} + } + + return output +} + +func awsRestjson1_deserializeErrorUnauthorizedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.UnauthorizedException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentUnauthorizedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorUnprocessableEntityException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.UnprocessableEntityException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentUnprocessableEntityException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeDocumentAttendee(v **types.Attendee, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Attendee + if *v == nil { + sv = &types.Attendee{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AttendeeId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected GuidString to be of type string, got %T instead", value) + } + sv.AttendeeId = ptr.String(jtv) + } + + case "ExternalUserId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExternalUserId to be of type string, got %T instead", value) + } + sv.ExternalUserId = ptr.String(jtv) + } + + case "JoinToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected JoinTokenString to be of type string, got %T instead", value) + } + sv.JoinToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAttendeeList(v *[]types.Attendee, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Attendee + if *v == nil { + cv = []types.Attendee{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Attendee + destAddr := &col + if err := awsRestjson1_deserializeDocumentAttendee(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentBadRequestException(v **types.BadRequestException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.BadRequestException + if *v == nil { + sv = &types.BadRequestException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentBatchCreateAttendeeErrorList(v *[]types.CreateAttendeeError, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.CreateAttendeeError + if *v == nil { + cv = []types.CreateAttendeeError{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.CreateAttendeeError + destAddr := &col + if err := awsRestjson1_deserializeDocumentCreateAttendeeError(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentCreateAttendeeError(v **types.CreateAttendeeError, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CreateAttendeeError + if *v == nil { + sv = &types.CreateAttendeeError{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ErrorCode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ErrorCode = ptr.String(jtv) + } + + case "ErrorMessage": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ErrorMessage = ptr.String(jtv) + } + + case "ExternalUserId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExternalUserId to be of type string, got %T instead", value) + } + sv.ExternalUserId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentForbiddenException(v **types.ForbiddenException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ForbiddenException + if *v == nil { + sv = &types.ForbiddenException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLimitExceededException(v **types.LimitExceededException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LimitExceededException + if *v == nil { + sv = &types.LimitExceededException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentMediaPlacement(v **types.MediaPlacement, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.MediaPlacement + if *v == nil { + sv = &types.MediaPlacement{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AudioFallbackUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AudioFallbackUrl = ptr.String(jtv) + } + + case "AudioHostUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AudioHostUrl = ptr.String(jtv) + } + + case "EventIngestionUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.EventIngestionUrl = ptr.String(jtv) + } + + case "ScreenDataUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ScreenDataUrl = ptr.String(jtv) + } + + case "ScreenSharingUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ScreenSharingUrl = ptr.String(jtv) + } + + case "ScreenViewingUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ScreenViewingUrl = ptr.String(jtv) + } + + case "SignalingUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SignalingUrl = ptr.String(jtv) + } + + case "TurnControlUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TurnControlUrl = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentMeeting(v **types.Meeting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Meeting + if *v == nil { + sv = &types.Meeting{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ExternalMeetingId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExternalMeetingId to be of type string, got %T instead", value) + } + sv.ExternalMeetingId = ptr.String(jtv) + } + + case "MediaPlacement": + if err := awsRestjson1_deserializeDocumentMediaPlacement(&sv.MediaPlacement, value); err != nil { + return err + } + + case "MediaRegion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MediaRegion to be of type string, got %T instead", value) + } + sv.MediaRegion = ptr.String(jtv) + } + + case "MeetingHostId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExternalUserId to be of type string, got %T instead", value) + } + sv.MeetingHostId = ptr.String(jtv) + } + + case "MeetingId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected GuidString to be of type string, got %T instead", value) + } + sv.MeetingId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentNotFoundException(v **types.NotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NotFoundException + if *v == nil { + sv = &types.NotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentServiceUnavailableException(v **types.ServiceUnavailableException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceUnavailableException + if *v == nil { + sv = &types.ServiceUnavailableException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + case "RetryAfterSeconds": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RetryAfterSeconds to be of type string, got %T instead", value) + } + sv.RetryAfterSeconds = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentUnauthorizedException(v **types.UnauthorizedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UnauthorizedException + if *v == nil { + sv = &types.UnauthorizedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentUnprocessableEntityException(v **types.UnprocessableEntityException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UnprocessableEntityException + if *v == nil { + sv = &types.UnprocessableEntityException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Code": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Code = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} diff --git a/service/chimesdkmeetings/doc.go b/service/chimesdkmeetings/doc.go new file mode 100644 index 00000000000..c9291da45a7 --- /dev/null +++ b/service/chimesdkmeetings/doc.go @@ -0,0 +1,11 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +// Package chimesdkmeetings provides the API client, operations, and parameter +// types for Amazon Chime SDK Meetings. +// +// The Amazon Chime SDK meetings APIs in this section allow software developers to +// create Amazon Chime SDK meetings, set the AWS Regions for meetings, create and +// manage users, and send and receive meeting notifications. For more information +// about the meeting APIs, see Amazon Chime SDK meetings +// (http://amazonaws.com/chime/latest/APIReference/API_Operations_Amazon_Chime_SDK_meetings). +package chimesdkmeetings diff --git a/service/chimesdkmeetings/endpoints.go b/service/chimesdkmeetings/endpoints.go new file mode 100644 index 00000000000..215c5ad4f56 --- /dev/null +++ b/service/chimesdkmeetings/endpoints.go @@ -0,0 +1,200 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + "errors" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalendpoints "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/internal/endpoints" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/url" + "strings" +) + +// EndpointResolverOptions is the service endpoint resolver options +type EndpointResolverOptions = internalendpoints.Options + +// EndpointResolver interface for resolving service endpoints. +type EndpointResolver interface { + ResolveEndpoint(region string, options EndpointResolverOptions) (aws.Endpoint, error) +} + +var _ EndpointResolver = &internalendpoints.Resolver{} + +// NewDefaultEndpointResolver constructs a new service endpoint resolver +func NewDefaultEndpointResolver() *internalendpoints.Resolver { + return internalendpoints.New() +} + +// EndpointResolverFunc is a helper utility that wraps a function so it satisfies +// the EndpointResolver interface. This is useful when you want to add additional +// endpoint resolving logic, or stub out specific endpoints with custom values. +type EndpointResolverFunc func(region string, options EndpointResolverOptions) (aws.Endpoint, error) + +func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + return fn(region, options) +} + +func resolveDefaultEndpointConfiguration(o *Options) { + if o.EndpointResolver != nil { + return + } + o.EndpointResolver = NewDefaultEndpointResolver() +} + +// EndpointResolverFromURL returns an EndpointResolver configured using the +// provided endpoint url. By default, the resolved endpoint resolver uses the +// client region as signing region, and the endpoint source is set to +// EndpointSourceCustom.You can provide functional options to configure endpoint +// values for the resolved endpoint. +func EndpointResolverFromURL(url string, optFns ...func(*aws.Endpoint)) EndpointResolver { + e := aws.Endpoint{URL: url, Source: aws.EndpointSourceCustom} + for _, fn := range optFns { + fn(&e) + } + + return EndpointResolverFunc( + func(region string, options EndpointResolverOptions) (aws.Endpoint, error) { + if len(e.SigningRegion) == 0 { + e.SigningRegion = region + } + return e, nil + }, + ) +} + +type ResolveEndpoint struct { + Resolver EndpointResolver + Options EndpointResolverOptions +} + +func (*ResolveEndpoint) ID() string { + return "ResolveEndpoint" +} + +func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.Resolver == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + eo := m.Options + eo.Logger = middleware.GetLogger(ctx) + + var endpoint aws.Endpoint + endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return out, metadata, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(awsmiddleware.GetSigningName(ctx)) == 0 { + signingName := endpoint.SigningName + if len(signingName) == 0 { + signingName = "chime" + } + ctx = awsmiddleware.SetSigningName(ctx, signingName) + } + ctx = awsmiddleware.SetEndpointSource(ctx, endpoint.Source) + ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable) + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID) + return next.HandleSerialize(ctx, in) +} +func addResolveEndpointMiddleware(stack *middleware.Stack, o Options) error { + return stack.Serialize.Insert(&ResolveEndpoint{ + Resolver: o.EndpointResolver, + Options: o.EndpointOptions, + }, "OperationSerializer", middleware.Before) +} + +func removeResolveEndpointMiddleware(stack *middleware.Stack) error { + _, err := stack.Serialize.Remove((&ResolveEndpoint{}).ID()) + return err +} + +type wrappedEndpointResolver struct { + awsResolver aws.EndpointResolverWithOptions + resolver EndpointResolver +} + +func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + if w.awsResolver == nil { + goto fallback + } + endpoint, err = w.awsResolver.ResolveEndpoint(ServiceID, region, options) + if err == nil { + return endpoint, nil + } + + if nf := (&aws.EndpointNotFoundError{}); !errors.As(err, &nf) { + return endpoint, err + } + +fallback: + if w.resolver == nil { + return endpoint, fmt.Errorf("default endpoint resolver provided was nil") + } + return w.resolver.ResolveEndpoint(region, options) +} + +type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) + +func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, options ...interface{}) (aws.Endpoint, error) { + return a(service, region) +} + +var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) + +// withEndpointResolver returns an EndpointResolver that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the resolver will use the the provided +// fallbackResolver for resolution. +// +// fallbackResolver must not be nil +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions, fallbackResolver EndpointResolver) EndpointResolver { + var resolver aws.EndpointResolverWithOptions + + if awsResolverWithOptions != nil { + resolver = awsResolverWithOptions + } else if awsResolver != nil { + resolver = awsEndpointResolverAdaptor(awsResolver.ResolveEndpoint) + } + + return &wrappedEndpointResolver{ + awsResolver: resolver, + resolver: fallbackResolver, + } +} + +func finalizeClientEndpointResolverOptions(options *Options) { + options.EndpointOptions.LogDeprecated = options.ClientLogMode.IsDeprecatedUsage() + + if len(options.EndpointOptions.ResolvedRegion) == 0 { + const fipsInfix = "-fips-" + const fipsPrefix = "fips-" + const fipsSuffix = "-fips" + + if strings.Contains(options.Region, fipsInfix) || + strings.Contains(options.Region, fipsPrefix) || + strings.Contains(options.Region, fipsSuffix) { + options.EndpointOptions.ResolvedRegion = strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll( + options.Region, fipsInfix, "-"), fipsPrefix, ""), fipsSuffix, "") + options.EndpointOptions.UseFIPSEndpoint = aws.FIPSEndpointStateEnabled + } + } + +} diff --git a/service/chimesdkmeetings/generated.json b/service/chimesdkmeetings/generated.json new file mode 100644 index 00000000000..56138b84a9b --- /dev/null +++ b/service/chimesdkmeetings/generated.json @@ -0,0 +1,37 @@ +{ + "dependencies": { + "github.com/aws/aws-sdk-go-v2": "v1.4.0", + "github.com/aws/aws-sdk-go-v2/internal/configsources": "v0.0.0-00010101000000-000000000000", + "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2": "v2.0.0-00010101000000-000000000000", + "github.com/aws/smithy-go": "v1.4.0" + }, + "files": [ + "api_client.go", + "api_op_BatchCreateAttendee.go", + "api_op_CreateAttendee.go", + "api_op_CreateMeeting.go", + "api_op_CreateMeetingWithAttendees.go", + "api_op_DeleteAttendee.go", + "api_op_DeleteMeeting.go", + "api_op_GetAttendee.go", + "api_op_GetMeeting.go", + "api_op_ListAttendees.go", + "api_op_StartMeetingTranscription.go", + "api_op_StopMeetingTranscription.go", + "deserializers.go", + "doc.go", + "endpoints.go", + "generated.json", + "internal/endpoints/endpoints.go", + "internal/endpoints/endpoints_test.go", + "protocol_test.go", + "serializers.go", + "types/enums.go", + "types/errors.go", + "types/types.go", + "validators.go" + ], + "go": "1.15", + "module": "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings", + "unstable": false +} diff --git a/service/chimesdkmeetings/go.mod b/service/chimesdkmeetings/go.mod new file mode 100644 index 00000000000..4ac6e0c266c --- /dev/null +++ b/service/chimesdkmeetings/go.mod @@ -0,0 +1,16 @@ +module github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings + +go 1.15 + +require ( + github.com/aws/aws-sdk-go-v2 v1.11.0 + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 + github.com/aws/smithy-go v1.9.0 +) + +replace github.com/aws/aws-sdk-go-v2 => ../../ + +replace github.com/aws/aws-sdk-go-v2/internal/configsources => ../../internal/configsources/ + +replace github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 => ../../internal/endpoints/v2/ diff --git a/service/chimesdkmeetings/go.sum b/service/chimesdkmeetings/go.sum new file mode 100644 index 00000000000..45efc0b1e03 --- /dev/null +++ b/service/chimesdkmeetings/go.sum @@ -0,0 +1,14 @@ +github.com/aws/smithy-go v1.9.0 h1:c7FUdEqrQA1/UVKKCNDFQPNKGp4FQg3YW4Ck5SLTG58= +github.com/aws/smithy-go v1.9.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/service/chimesdkmeetings/go_module_metadata.go b/service/chimesdkmeetings/go_module_metadata.go new file mode 100644 index 00000000000..a18d4186176 --- /dev/null +++ b/service/chimesdkmeetings/go_module_metadata.go @@ -0,0 +1,6 @@ +// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT. + +package chimesdkmeetings + +// goModuleVersion is the tagged release for this module +const goModuleVersion = "tip" diff --git a/service/chimesdkmeetings/internal/endpoints/endpoints.go b/service/chimesdkmeetings/internal/endpoints/endpoints.go new file mode 100644 index 00000000000..4b05e209ef7 --- /dev/null +++ b/service/chimesdkmeetings/internal/endpoints/endpoints.go @@ -0,0 +1,250 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "github.com/aws/aws-sdk-go-v2/aws" + endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2" + "github.com/aws/smithy-go/logging" + "regexp" +) + +// Options is the endpoint resolver configuration options +type Options struct { + // Logger is a logging implementation that log events should be sent to. + Logger logging.Logger + + // LogDeprecated indicates that deprecated endpoints should be logged to the + // provided logger. + LogDeprecated bool + + // ResolvedRegion is used to override the region to be resolved, rather then the + // using the value passed to the ResolveEndpoint method. This value is used by the + // SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative + // name. You must not set this value directly in your application. + ResolvedRegion string + + // DisableHTTPS informs the resolver to return an endpoint that does not use the + // HTTPS scheme. + DisableHTTPS bool + + // UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint. + UseDualStackEndpoint aws.DualStackEndpointState + + // UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint. + UseFIPSEndpoint aws.FIPSEndpointState +} + +func (o Options) GetResolvedRegion() string { + return o.ResolvedRegion +} + +func (o Options) GetDisableHTTPS() bool { + return o.DisableHTTPS +} + +func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState { + return o.UseDualStackEndpoint +} + +func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState { + return o.UseFIPSEndpoint +} + +func transformToSharedOptions(options Options) endpoints.Options { + return endpoints.Options{ + Logger: options.Logger, + LogDeprecated: options.LogDeprecated, + ResolvedRegion: options.ResolvedRegion, + DisableHTTPS: options.DisableHTTPS, + UseDualStackEndpoint: options.UseDualStackEndpoint, + UseFIPSEndpoint: options.UseFIPSEndpoint, + } +} + +// Resolver Chime SDK Meetings endpoint resolver +type Resolver struct { + partitions endpoints.Partitions +} + +// ResolveEndpoint resolves the service endpoint for the given region and options +func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) { + if len(region) == 0 { + return endpoint, &aws.MissingRegionError{} + } + + opt := transformToSharedOptions(options) + return r.partitions.ResolveEndpoint(region, opt) +} + +// New returns a new Resolver +func New() *Resolver { + return &Resolver{ + partitions: defaultPartitions, + } +} + +var partitionRegexp = struct { + Aws *regexp.Regexp + AwsCn *regexp.Regexp + AwsIso *regexp.Regexp + AwsIsoB *regexp.Regexp + AwsUsGov *regexp.Regexp +}{ + + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), + AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), +} + +var defaultPartitions = endpoints.Partitions{ + { + ID: "aws", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "meetings-chime-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "meetings-chime.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.Aws, + IsRegionalized: true, + }, + { + ID: "aws-cn", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "meetings-chime-fips.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime-fips.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "meetings-chime.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsCn, + IsRegionalized: true, + }, + { + ID: "aws-iso", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "meetings-chime-fips.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "meetings-chime.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIso, + IsRegionalized: true, + }, + { + ID: "aws-iso-b", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "meetings-chime-fips.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "meetings-chime.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoB, + IsRegionalized: true, + }, + { + ID: "aws-us-gov", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "meetings-chime-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "meetings-chime-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "meetings-chime.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsUsGov, + IsRegionalized: true, + }, +} diff --git a/service/chimesdkmeetings/internal/endpoints/endpoints_test.go b/service/chimesdkmeetings/internal/endpoints/endpoints_test.go new file mode 100644 index 00000000000..08e5da2d833 --- /dev/null +++ b/service/chimesdkmeetings/internal/endpoints/endpoints_test.go @@ -0,0 +1,11 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "testing" +) + +func TestRegexCompile(t *testing.T) { + _ = defaultPartitions +} diff --git a/service/chimesdkmeetings/protocol_test.go b/service/chimesdkmeetings/protocol_test.go new file mode 100644 index 00000000000..b553be35474 --- /dev/null +++ b/service/chimesdkmeetings/protocol_test.go @@ -0,0 +1,3 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings diff --git a/service/chimesdkmeetings/serializers.go b/service/chimesdkmeetings/serializers.go new file mode 100644 index 00000000000..eee8b4b0fa2 --- /dev/null +++ b/service/chimesdkmeetings/serializers.go @@ -0,0 +1,968 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "bytes" + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/encoding/httpbinding" + smithyjson "github.com/aws/smithy-go/encoding/json" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +type awsRestjson1_serializeOpBatchCreateAttendee struct { +} + +func (*awsRestjson1_serializeOpBatchCreateAttendee) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpBatchCreateAttendee) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*BatchCreateAttendeeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/attendees?operation=batch-create") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsBatchCreateAttendeeInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentBatchCreateAttendeeInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsBatchCreateAttendeeInput(v *BatchCreateAttendeeInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentBatchCreateAttendeeInput(v *BatchCreateAttendeeInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attendees != nil { + ok := object.Key("Attendees") + if err := awsRestjson1_serializeDocumentCreateAttendeeRequestItemList(v.Attendees, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpCreateAttendee struct { +} + +func (*awsRestjson1_serializeOpCreateAttendee) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateAttendee) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateAttendeeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/attendees") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsCreateAttendeeInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateAttendeeInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateAttendeeInput(v *CreateAttendeeInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateAttendeeInput(v *CreateAttendeeInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ExternalUserId != nil { + ok := object.Key("ExternalUserId") + ok.String(*v.ExternalUserId) + } + + return nil +} + +type awsRestjson1_serializeOpCreateMeeting struct { +} + +func (*awsRestjson1_serializeOpCreateMeeting) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateMeeting) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateMeetingInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateMeetingInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateMeetingInput(v *CreateMeetingInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateMeetingInput(v *CreateMeetingInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } + + if v.ExternalMeetingId != nil { + ok := object.Key("ExternalMeetingId") + ok.String(*v.ExternalMeetingId) + } + + if v.MediaRegion != nil { + ok := object.Key("MediaRegion") + ok.String(*v.MediaRegion) + } + + if v.MeetingHostId != nil { + ok := object.Key("MeetingHostId") + ok.String(*v.MeetingHostId) + } + + if v.NotificationsConfiguration != nil { + ok := object.Key("NotificationsConfiguration") + if err := awsRestjson1_serializeDocumentNotificationsConfiguration(v.NotificationsConfiguration, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpCreateMeetingWithAttendees struct { +} + +func (*awsRestjson1_serializeOpCreateMeetingWithAttendees) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateMeetingWithAttendees) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateMeetingWithAttendeesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings?operation=create-attendees") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateMeetingWithAttendeesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateMeetingWithAttendeesInput(v *CreateMeetingWithAttendeesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateMeetingWithAttendeesInput(v *CreateMeetingWithAttendeesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attendees != nil { + ok := object.Key("Attendees") + if err := awsRestjson1_serializeDocumentCreateMeetingWithAttendeesRequestItemList(v.Attendees, ok); err != nil { + return err + } + } + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } + + if v.ExternalMeetingId != nil { + ok := object.Key("ExternalMeetingId") + ok.String(*v.ExternalMeetingId) + } + + if v.MediaRegion != nil { + ok := object.Key("MediaRegion") + ok.String(*v.MediaRegion) + } + + if v.MeetingHostId != nil { + ok := object.Key("MeetingHostId") + ok.String(*v.MeetingHostId) + } + + if v.NotificationsConfiguration != nil { + ok := object.Key("NotificationsConfiguration") + if err := awsRestjson1_serializeDocumentNotificationsConfiguration(v.NotificationsConfiguration, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpDeleteAttendee struct { +} + +func (*awsRestjson1_serializeOpDeleteAttendee) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteAttendee) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteAttendeeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/attendees/{AttendeeId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsDeleteAttendeeInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteAttendeeInput(v *DeleteAttendeeInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AttendeeId == nil || len(*v.AttendeeId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member AttendeeId must not be empty")} + } + if v.AttendeeId != nil { + if err := encoder.SetURI("AttendeeId").String(*v.AttendeeId); err != nil { + return err + } + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpDeleteMeeting struct { +} + +func (*awsRestjson1_serializeOpDeleteMeeting) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteMeeting) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteMeetingInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsDeleteMeetingInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteMeetingInput(v *DeleteMeetingInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetAttendee struct { +} + +func (*awsRestjson1_serializeOpGetAttendee) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetAttendee) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetAttendeeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/attendees/{AttendeeId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetAttendeeInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetAttendeeInput(v *GetAttendeeInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AttendeeId == nil || len(*v.AttendeeId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member AttendeeId must not be empty")} + } + if v.AttendeeId != nil { + if err := encoder.SetURI("AttendeeId").String(*v.AttendeeId); err != nil { + return err + } + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetMeeting struct { +} + +func (*awsRestjson1_serializeOpGetMeeting) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetMeeting) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetMeetingInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetMeetingInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetMeetingInput(v *GetMeetingInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpListAttendees struct { +} + +func (*awsRestjson1_serializeOpListAttendees) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAttendees) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAttendeesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/attendees") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListAttendeesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAttendeesInput(v *ListAttendeesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != nil { + encoder.SetQuery("max-results").Integer(*v.MaxResults) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + if v.NextToken != nil { + encoder.SetQuery("next-token").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpStartMeetingTranscription struct { +} + +func (*awsRestjson1_serializeOpStartMeetingTranscription) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartMeetingTranscription) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartMeetingTranscriptionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/transcription?operation=start") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStartMeetingTranscriptionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartMeetingTranscriptionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartMeetingTranscriptionInput(v *StartMeetingTranscriptionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartMeetingTranscriptionInput(v *StartMeetingTranscriptionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.TranscriptionConfiguration != nil { + ok := object.Key("TranscriptionConfiguration") + if err := awsRestjson1_serializeDocumentTranscriptionConfiguration(v.TranscriptionConfiguration, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpStopMeetingTranscription struct { +} + +func (*awsRestjson1_serializeOpStopMeetingTranscription) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStopMeetingTranscription) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StopMeetingTranscriptionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/meetings/{MeetingId}/transcription?operation=stop") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStopMeetingTranscriptionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStopMeetingTranscriptionInput(v *StopMeetingTranscriptionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MeetingId == nil || len(*v.MeetingId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MeetingId must not be empty")} + } + if v.MeetingId != nil { + if err := encoder.SetURI("MeetingId").String(*v.MeetingId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeDocumentCreateAttendeeRequestItem(v *types.CreateAttendeeRequestItem, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ExternalUserId != nil { + ok := object.Key("ExternalUserId") + ok.String(*v.ExternalUserId) + } + + return nil +} + +func awsRestjson1_serializeDocumentCreateAttendeeRequestItemList(v []types.CreateAttendeeRequestItem, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentCreateAttendeeRequestItem(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsRestjson1_serializeDocumentCreateMeetingWithAttendeesRequestItemList(v []types.CreateAttendeeRequestItem, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentCreateAttendeeRequestItem(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsRestjson1_serializeDocumentEngineTranscribeMedicalSettings(v *types.EngineTranscribeMedicalSettings, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.LanguageCode) > 0 { + ok := object.Key("LanguageCode") + ok.String(string(v.LanguageCode)) + } + + if len(v.Region) > 0 { + ok := object.Key("Region") + ok.String(string(v.Region)) + } + + if len(v.Specialty) > 0 { + ok := object.Key("Specialty") + ok.String(string(v.Specialty)) + } + + if len(v.Type) > 0 { + ok := object.Key("Type") + ok.String(string(v.Type)) + } + + if v.VocabularyName != nil { + ok := object.Key("VocabularyName") + ok.String(*v.VocabularyName) + } + + return nil +} + +func awsRestjson1_serializeDocumentEngineTranscribeSettings(v *types.EngineTranscribeSettings, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.LanguageCode) > 0 { + ok := object.Key("LanguageCode") + ok.String(string(v.LanguageCode)) + } + + if len(v.Region) > 0 { + ok := object.Key("Region") + ok.String(string(v.Region)) + } + + if len(v.VocabularyFilterMethod) > 0 { + ok := object.Key("VocabularyFilterMethod") + ok.String(string(v.VocabularyFilterMethod)) + } + + if v.VocabularyFilterName != nil { + ok := object.Key("VocabularyFilterName") + ok.String(*v.VocabularyFilterName) + } + + if v.VocabularyName != nil { + ok := object.Key("VocabularyName") + ok.String(*v.VocabularyName) + } + + return nil +} + +func awsRestjson1_serializeDocumentNotificationsConfiguration(v *types.NotificationsConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.LambdaFunctionArn != nil { + ok := object.Key("LambdaFunctionArn") + ok.String(*v.LambdaFunctionArn) + } + + if v.SnsTopicArn != nil { + ok := object.Key("SnsTopicArn") + ok.String(*v.SnsTopicArn) + } + + if v.SqsQueueArn != nil { + ok := object.Key("SqsQueueArn") + ok.String(*v.SqsQueueArn) + } + + return nil +} + +func awsRestjson1_serializeDocumentTranscriptionConfiguration(v *types.TranscriptionConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.EngineTranscribeMedicalSettings != nil { + ok := object.Key("EngineTranscribeMedicalSettings") + if err := awsRestjson1_serializeDocumentEngineTranscribeMedicalSettings(v.EngineTranscribeMedicalSettings, ok); err != nil { + return err + } + } + + if v.EngineTranscribeSettings != nil { + ok := object.Key("EngineTranscribeSettings") + if err := awsRestjson1_serializeDocumentEngineTranscribeSettings(v.EngineTranscribeSettings, ok); err != nil { + return err + } + } + + return nil +} diff --git a/service/chimesdkmeetings/types/enums.go b/service/chimesdkmeetings/types/enums.go new file mode 100644 index 00000000000..19705025ab6 --- /dev/null +++ b/service/chimesdkmeetings/types/enums.go @@ -0,0 +1,189 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +type TranscribeLanguageCode string + +// Enum values for TranscribeLanguageCode +const ( + TranscribeLanguageCodeEnUs TranscribeLanguageCode = "en-US" + TranscribeLanguageCodeEnGb TranscribeLanguageCode = "en-GB" + TranscribeLanguageCodeEsUs TranscribeLanguageCode = "es-US" + TranscribeLanguageCodeFrCa TranscribeLanguageCode = "fr-CA" + TranscribeLanguageCodeFrFr TranscribeLanguageCode = "fr-FR" + TranscribeLanguageCodeEnAu TranscribeLanguageCode = "en-AU" + TranscribeLanguageCodeItIt TranscribeLanguageCode = "it-IT" + TranscribeLanguageCodeDeDe TranscribeLanguageCode = "de-DE" + TranscribeLanguageCodePtBr TranscribeLanguageCode = "pt-BR" + TranscribeLanguageCodeJaJp TranscribeLanguageCode = "ja-JP" + TranscribeLanguageCodeKoKr TranscribeLanguageCode = "ko-KR" + TranscribeLanguageCodeZhCn TranscribeLanguageCode = "zh-CN" +) + +// Values returns all known values for TranscribeLanguageCode. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (TranscribeLanguageCode) Values() []TranscribeLanguageCode { + return []TranscribeLanguageCode{ + "en-US", + "en-GB", + "es-US", + "fr-CA", + "fr-FR", + "en-AU", + "it-IT", + "de-DE", + "pt-BR", + "ja-JP", + "ko-KR", + "zh-CN", + } +} + +type TranscribeMedicalLanguageCode string + +// Enum values for TranscribeMedicalLanguageCode +const ( + TranscribeMedicalLanguageCodeEnUs TranscribeMedicalLanguageCode = "en-US" +) + +// Values returns all known values for TranscribeMedicalLanguageCode. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (TranscribeMedicalLanguageCode) Values() []TranscribeMedicalLanguageCode { + return []TranscribeMedicalLanguageCode{ + "en-US", + } +} + +type TranscribeMedicalRegion string + +// Enum values for TranscribeMedicalRegion +const ( + TranscribeMedicalRegionUsEast1 TranscribeMedicalRegion = "us-east-1" + TranscribeMedicalRegionUsEast2 TranscribeMedicalRegion = "us-east-2" + TranscribeMedicalRegionUsWest2 TranscribeMedicalRegion = "us-west-2" + TranscribeMedicalRegionApSoutheast2 TranscribeMedicalRegion = "ap-southeast-2" + TranscribeMedicalRegionCaCentral1 TranscribeMedicalRegion = "ca-central-1" + TranscribeMedicalRegionEuWest1 TranscribeMedicalRegion = "eu-west-1" + TranscribeMedicalRegionAuto TranscribeMedicalRegion = "auto" +) + +// Values returns all known values for TranscribeMedicalRegion. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (TranscribeMedicalRegion) Values() []TranscribeMedicalRegion { + return []TranscribeMedicalRegion{ + "us-east-1", + "us-east-2", + "us-west-2", + "ap-southeast-2", + "ca-central-1", + "eu-west-1", + "auto", + } +} + +type TranscribeMedicalSpecialty string + +// Enum values for TranscribeMedicalSpecialty +const ( + TranscribeMedicalSpecialtyPrimarycare TranscribeMedicalSpecialty = "PRIMARYCARE" + TranscribeMedicalSpecialtyCardiology TranscribeMedicalSpecialty = "CARDIOLOGY" + TranscribeMedicalSpecialtyNeurology TranscribeMedicalSpecialty = "NEUROLOGY" + TranscribeMedicalSpecialtyOncology TranscribeMedicalSpecialty = "ONCOLOGY" + TranscribeMedicalSpecialtyRadiology TranscribeMedicalSpecialty = "RADIOLOGY" + TranscribeMedicalSpecialtyUrology TranscribeMedicalSpecialty = "UROLOGY" +) + +// Values returns all known values for TranscribeMedicalSpecialty. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (TranscribeMedicalSpecialty) Values() []TranscribeMedicalSpecialty { + return []TranscribeMedicalSpecialty{ + "PRIMARYCARE", + "CARDIOLOGY", + "NEUROLOGY", + "ONCOLOGY", + "RADIOLOGY", + "UROLOGY", + } +} + +type TranscribeMedicalType string + +// Enum values for TranscribeMedicalType +const ( + TranscribeMedicalTypeConversation TranscribeMedicalType = "CONVERSATION" + TranscribeMedicalTypeDictation TranscribeMedicalType = "DICTATION" +) + +// Values returns all known values for TranscribeMedicalType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (TranscribeMedicalType) Values() []TranscribeMedicalType { + return []TranscribeMedicalType{ + "CONVERSATION", + "DICTATION", + } +} + +type TranscribeRegion string + +// Enum values for TranscribeRegion +const ( + TranscribeRegionUsEast2 TranscribeRegion = "us-east-2" + TranscribeRegionUsEast1 TranscribeRegion = "us-east-1" + TranscribeRegionUsWest2 TranscribeRegion = "us-west-2" + TranscribeRegionApNortheast2 TranscribeRegion = "ap-northeast-2" + TranscribeRegionApSoutheast2 TranscribeRegion = "ap-southeast-2" + TranscribeRegionApNortheast1 TranscribeRegion = "ap-northeast-1" + TranscribeRegionCaCentral1 TranscribeRegion = "ca-central-1" + TranscribeRegionEuCentral1 TranscribeRegion = "eu-central-1" + TranscribeRegionEuWest1 TranscribeRegion = "eu-west-1" + TranscribeRegionEuWest2 TranscribeRegion = "eu-west-2" + TranscribeRegionSaEast1 TranscribeRegion = "sa-east-1" + TranscribeRegionAuto TranscribeRegion = "auto" +) + +// Values returns all known values for TranscribeRegion. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (TranscribeRegion) Values() []TranscribeRegion { + return []TranscribeRegion{ + "us-east-2", + "us-east-1", + "us-west-2", + "ap-northeast-2", + "ap-southeast-2", + "ap-northeast-1", + "ca-central-1", + "eu-central-1", + "eu-west-1", + "eu-west-2", + "sa-east-1", + "auto", + } +} + +type TranscribeVocabularyFilterMethod string + +// Enum values for TranscribeVocabularyFilterMethod +const ( + TranscribeVocabularyFilterMethodRemove TranscribeVocabularyFilterMethod = "remove" + TranscribeVocabularyFilterMethodMask TranscribeVocabularyFilterMethod = "mask" + TranscribeVocabularyFilterMethodTag TranscribeVocabularyFilterMethod = "tag" +) + +// Values returns all known values for TranscribeVocabularyFilterMethod. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (TranscribeVocabularyFilterMethod) Values() []TranscribeVocabularyFilterMethod { + return []TranscribeVocabularyFilterMethod{ + "remove", + "mask", + "tag", + } +} diff --git a/service/chimesdkmeetings/types/errors.go b/service/chimesdkmeetings/types/errors.go new file mode 100644 index 00000000000..2867a0a3e7e --- /dev/null +++ b/service/chimesdkmeetings/types/errors.go @@ -0,0 +1,164 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + "fmt" + smithy "github.com/aws/smithy-go" +) + +// The input parameters don't match the service's restrictions. +type BadRequestException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *BadRequestException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *BadRequestException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *BadRequestException) ErrorCode() string { return "BadRequestException" } +func (e *BadRequestException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The client is permanently forbidden from making the request. +type ForbiddenException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *ForbiddenException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ForbiddenException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ForbiddenException) ErrorCode() string { return "ForbiddenException" } +func (e *ForbiddenException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The request exceeds the resource limit. +type LimitExceededException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *LimitExceededException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *LimitExceededException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *LimitExceededException) ErrorCode() string { return "LimitExceededException" } +func (e *LimitExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// One or more of the resources in the request does not exist in the system. +type NotFoundException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *NotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *NotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *NotFoundException) ErrorCode() string { return "NotFoundException" } +func (e *NotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The service is currently unavailable. +type ServiceUnavailableException struct { + Message *string + + Code *string + RequestId *string + RetryAfterSeconds *string + + noSmithyDocumentSerde +} + +func (e *ServiceUnavailableException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ServiceUnavailableException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ServiceUnavailableException) ErrorCode() string { return "ServiceUnavailableException" } +func (e *ServiceUnavailableException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } + +// The user isn't authorized to request a resource. +type UnauthorizedException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *UnauthorizedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *UnauthorizedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *UnauthorizedException) ErrorCode() string { return "UnauthorizedException" } +func (e *UnauthorizedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The request was well-formed but was unable to be followed due to semantic +// errors. +type UnprocessableEntityException struct { + Message *string + + Code *string + RequestId *string + + noSmithyDocumentSerde +} + +func (e *UnprocessableEntityException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *UnprocessableEntityException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *UnprocessableEntityException) ErrorCode() string { return "UnprocessableEntityException" } +func (e *UnprocessableEntityException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/service/chimesdkmeetings/types/types.go b/service/chimesdkmeetings/types/types.go new file mode 100644 index 00000000000..cccdcba612c --- /dev/null +++ b/service/chimesdkmeetings/types/types.go @@ -0,0 +1,198 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + smithydocument "github.com/aws/smithy-go/document" +) + +// An Amazon Chime SDK meeting attendee. Includes a unique AttendeeId and +// JoinToken. The JoinToken allows a client to authenticate and join as the +// specified attendee. The JoinToken expires when the meeting ends, or when +// DeleteAttendee is called. After that, the attendee is unable to join the +// meeting. We recommend securely transferring each JoinToken from your server +// application to the client so that no other client has access to the token except +// for the one authorized to represent the attendee. +type Attendee struct { + + // The Amazon Chime SDK attendee ID. + AttendeeId *string + + // The Amazon Chime SDK external user ID. An idempotency token. Links the attendee + // to an identity managed by a builder application. + ExternalUserId *string + + // The join token used by the Amazon Chime SDK attendee. + JoinToken *string + + noSmithyDocumentSerde +} + +// The list of errors returned when errors are encountered during the +// BatchCreateAttendee and CreateAttendee actions. This includes external user IDs, +// error codes, and error messages. +type CreateAttendeeError struct { + + // The error code. + ErrorCode *string + + // The error message. + ErrorMessage *string + + // The Amazon Chime SDK external user ID. An idempotency token. Links the attendee + // to an identity managed by a builder application. + ExternalUserId *string + + noSmithyDocumentSerde +} + +// The Amazon Chime SDK attendee fields to create, used with the +// BatchCreateAttendee action. +type CreateAttendeeRequestItem struct { + + // The Amazon Chime SDK external user ID. An idempotency token. Links the attendee + // to an identity managed by a builder application. + // + // This member is required. + ExternalUserId *string + + noSmithyDocumentSerde +} + +// Settings specific to the Amazon Transcribe Medical engine. +type EngineTranscribeMedicalSettings struct { + + // The language code specified for the Amazon Transcribe Medical engine. + // + // This member is required. + LanguageCode TranscribeMedicalLanguageCode + + // The specialty specified for the Amazon Transcribe Medical engine. + // + // This member is required. + Specialty TranscribeMedicalSpecialty + + // The type of transcription. + // + // This member is required. + Type TranscribeMedicalType + + // The AWS Region passed to Amazon Transcribe Medical. If you don't specify a + // Region, Amazon Chime uses the meeting's Region. + Region TranscribeMedicalRegion + + // The name of the vocabulary passed to Amazon Transcribe Medical. + VocabularyName *string + + noSmithyDocumentSerde +} + +// Settings specific to the Amazon Transcribe engine. +type EngineTranscribeSettings struct { + + // The language code specified for the Amazon Transcribe engine. + // + // This member is required. + LanguageCode TranscribeLanguageCode + + // The AWS Region passed to Amazon Transcribe. If you don't specify a Region, + // Amazon Chime uses the meeting's Region. + Region TranscribeRegion + + // The filtering method passed to Amazon Transcribe. + VocabularyFilterMethod TranscribeVocabularyFilterMethod + + // The name of the vocabulary filter passed to Amazon Transcribe. + VocabularyFilterName *string + + // The name of the vocabulary passed to Amazon Transcribe. + VocabularyName *string + + noSmithyDocumentSerde +} + +// A set of endpoints used by clients to connect to the media service group for an +// Amazon Chime SDK meeting. +type MediaPlacement struct { + + // The audio fallback URL. + AudioFallbackUrl *string + + // The audio host URL. + AudioHostUrl *string + + // The event ingestion URL. + EventIngestionUrl *string + + // The screen data URL. + ScreenDataUrl *string + + // The screen sharing URL. + ScreenSharingUrl *string + + // The screen viewing URL. + ScreenViewingUrl *string + + // The signaling URL. + SignalingUrl *string + + // The turn control URL. + TurnControlUrl *string + + noSmithyDocumentSerde +} + +// A meeting created using the Amazon Chime SDK. +type Meeting struct { + + // The external meeting ID. + ExternalMeetingId *string + + // The media placement for the meeting. + MediaPlacement *MediaPlacement + + // The Region in which you create the meeting. Available values: af-south-1, + // ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, + // ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, + // eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. + MediaRegion *string + + // Reserved. + MeetingHostId *string + + // The Amazon Chime SDK meeting ID. + MeetingId *string + + noSmithyDocumentSerde +} + +// The configuration for resource targets to receive notifications when meeting and +// attendee events occur. +type NotificationsConfiguration struct { + + // The ARN of the AWS Lambda function in the notifications configuration. + LambdaFunctionArn *string + + // The ARN of the SNS topic. + SnsTopicArn *string + + // The ARN of the SQS queue. + SqsQueueArn *string + + noSmithyDocumentSerde +} + +// The configuration for the current transcription operation. Must contain +// EngineTranscribeSettings or EngineTranscribeMedicalSettings. +type TranscriptionConfiguration struct { + + // The transcription configuration settings passed to Amazon Transcribe Medical. + EngineTranscribeMedicalSettings *EngineTranscribeMedicalSettings + + // The transcription configuration settings passed to Amazon Transcribe. + EngineTranscribeSettings *EngineTranscribeSettings + + noSmithyDocumentSerde +} + +type noSmithyDocumentSerde = smithydocument.NoSerde diff --git a/service/chimesdkmeetings/validators.go b/service/chimesdkmeetings/validators.go new file mode 100644 index 00000000000..3d1857ea1b9 --- /dev/null +++ b/service/chimesdkmeetings/validators.go @@ -0,0 +1,589 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package chimesdkmeetings + +import ( + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/chimesdkmeetings/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/middleware" +) + +type validateOpBatchCreateAttendee struct { +} + +func (*validateOpBatchCreateAttendee) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpBatchCreateAttendee) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*BatchCreateAttendeeInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpBatchCreateAttendeeInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateAttendee struct { +} + +func (*validateOpCreateAttendee) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateAttendee) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateAttendeeInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateAttendeeInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateMeeting struct { +} + +func (*validateOpCreateMeeting) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateMeeting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateMeetingInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateMeetingInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateMeetingWithAttendees struct { +} + +func (*validateOpCreateMeetingWithAttendees) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateMeetingWithAttendees) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateMeetingWithAttendeesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateMeetingWithAttendeesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteAttendee struct { +} + +func (*validateOpDeleteAttendee) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteAttendee) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteAttendeeInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteAttendeeInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteMeeting struct { +} + +func (*validateOpDeleteMeeting) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteMeeting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteMeetingInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteMeetingInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpGetAttendee struct { +} + +func (*validateOpGetAttendee) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetAttendee) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetAttendeeInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetAttendeeInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpGetMeeting struct { +} + +func (*validateOpGetMeeting) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetMeeting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetMeetingInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetMeetingInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAttendees struct { +} + +func (*validateOpListAttendees) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAttendees) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAttendeesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAttendeesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartMeetingTranscription struct { +} + +func (*validateOpStartMeetingTranscription) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartMeetingTranscription) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartMeetingTranscriptionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartMeetingTranscriptionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStopMeetingTranscription struct { +} + +func (*validateOpStopMeetingTranscription) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStopMeetingTranscription) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StopMeetingTranscriptionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStopMeetingTranscriptionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +func addOpBatchCreateAttendeeValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpBatchCreateAttendee{}, middleware.After) +} + +func addOpCreateAttendeeValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateAttendee{}, middleware.After) +} + +func addOpCreateMeetingValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateMeeting{}, middleware.After) +} + +func addOpCreateMeetingWithAttendeesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateMeetingWithAttendees{}, middleware.After) +} + +func addOpDeleteAttendeeValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteAttendee{}, middleware.After) +} + +func addOpDeleteMeetingValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteMeeting{}, middleware.After) +} + +func addOpGetAttendeeValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetAttendee{}, middleware.After) +} + +func addOpGetMeetingValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetMeeting{}, middleware.After) +} + +func addOpListAttendeesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAttendees{}, middleware.After) +} + +func addOpStartMeetingTranscriptionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartMeetingTranscription{}, middleware.After) +} + +func addOpStopMeetingTranscriptionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStopMeetingTranscription{}, middleware.After) +} + +func validateCreateAttendeeRequestItem(v *types.CreateAttendeeRequestItem) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateAttendeeRequestItem"} + if v.ExternalUserId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ExternalUserId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateCreateAttendeeRequestItemList(v []types.CreateAttendeeRequestItem) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateAttendeeRequestItemList"} + for i := range v { + if err := validateCreateAttendeeRequestItem(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateCreateMeetingWithAttendeesRequestItemList(v []types.CreateAttendeeRequestItem) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateMeetingWithAttendeesRequestItemList"} + for i := range v { + if err := validateCreateAttendeeRequestItem(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEngineTranscribeMedicalSettings(v *types.EngineTranscribeMedicalSettings) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EngineTranscribeMedicalSettings"} + if len(v.LanguageCode) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("LanguageCode")) + } + if len(v.Specialty) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Specialty")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEngineTranscribeSettings(v *types.EngineTranscribeSettings) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EngineTranscribeSettings"} + if len(v.LanguageCode) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("LanguageCode")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTranscriptionConfiguration(v *types.TranscriptionConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TranscriptionConfiguration"} + if v.EngineTranscribeSettings != nil { + if err := validateEngineTranscribeSettings(v.EngineTranscribeSettings); err != nil { + invalidParams.AddNested("EngineTranscribeSettings", err.(smithy.InvalidParamsError)) + } + } + if v.EngineTranscribeMedicalSettings != nil { + if err := validateEngineTranscribeMedicalSettings(v.EngineTranscribeMedicalSettings); err != nil { + invalidParams.AddNested("EngineTranscribeMedicalSettings", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpBatchCreateAttendeeInput(v *BatchCreateAttendeeInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "BatchCreateAttendeeInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if v.Attendees == nil { + invalidParams.Add(smithy.NewErrParamRequired("Attendees")) + } else if v.Attendees != nil { + if err := validateCreateAttendeeRequestItemList(v.Attendees); err != nil { + invalidParams.AddNested("Attendees", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateAttendeeInput(v *CreateAttendeeInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateAttendeeInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if v.ExternalUserId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ExternalUserId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateMeetingInput(v *CreateMeetingInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateMeetingInput"} + if v.ClientRequestToken == nil { + invalidParams.Add(smithy.NewErrParamRequired("ClientRequestToken")) + } + if v.MediaRegion == nil { + invalidParams.Add(smithy.NewErrParamRequired("MediaRegion")) + } + if v.ExternalMeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ExternalMeetingId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateMeetingWithAttendeesInput(v *CreateMeetingWithAttendeesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateMeetingWithAttendeesInput"} + if v.ClientRequestToken == nil { + invalidParams.Add(smithy.NewErrParamRequired("ClientRequestToken")) + } + if v.MediaRegion == nil { + invalidParams.Add(smithy.NewErrParamRequired("MediaRegion")) + } + if v.ExternalMeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ExternalMeetingId")) + } + if v.Attendees == nil { + invalidParams.Add(smithy.NewErrParamRequired("Attendees")) + } else if v.Attendees != nil { + if err := validateCreateMeetingWithAttendeesRequestItemList(v.Attendees); err != nil { + invalidParams.AddNested("Attendees", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteAttendeeInput(v *DeleteAttendeeInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteAttendeeInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if v.AttendeeId == nil { + invalidParams.Add(smithy.NewErrParamRequired("AttendeeId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteMeetingInput(v *DeleteMeetingInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteMeetingInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpGetAttendeeInput(v *GetAttendeeInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetAttendeeInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if v.AttendeeId == nil { + invalidParams.Add(smithy.NewErrParamRequired("AttendeeId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpGetMeetingInput(v *GetMeetingInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetMeetingInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAttendeesInput(v *ListAttendeesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAttendeesInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartMeetingTranscriptionInput(v *StartMeetingTranscriptionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartMeetingTranscriptionInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if v.TranscriptionConfiguration == nil { + invalidParams.Add(smithy.NewErrParamRequired("TranscriptionConfiguration")) + } else if v.TranscriptionConfiguration != nil { + if err := validateTranscriptionConfiguration(v.TranscriptionConfiguration); err != nil { + invalidParams.AddNested("TranscriptionConfiguration", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStopMeetingTranscriptionInput(v *StopMeetingTranscriptionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StopMeetingTranscriptionInput"} + if v.MeetingId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MeetingId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} diff --git a/service/computeoptimizer/internal/endpoints/endpoints.go b/service/computeoptimizer/internal/endpoints/endpoints.go index d8d72786768..de2cad46985 100644 --- a/service/computeoptimizer/internal/endpoints/endpoints.go +++ b/service/computeoptimizer/internal/endpoints/endpoints.go @@ -134,6 +134,136 @@ var defaultPartitions = endpoints.Partitions{ }, RegionRegex: partitionRegexp.Aws, IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "ap-northeast-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ap-northeast-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-northeast-1", + }, + }, + endpoints.EndpointKey{ + Region: "ap-northeast-2", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ap-northeast-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-northeast-2", + }, + }, + endpoints.EndpointKey{ + Region: "ap-south-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ap-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-south-1", + }, + }, + endpoints.EndpointKey{ + Region: "ap-southeast-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ap-southeast-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-1", + }, + }, + endpoints.EndpointKey{ + Region: "ap-southeast-2", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ap-southeast-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-2", + }, + }, + endpoints.EndpointKey{ + Region: "ca-central-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.ca-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ca-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "eu-central-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.eu-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "eu-north-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.eu-north-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "eu-west-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.eu-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-1", + }, + }, + endpoints.EndpointKey{ + Region: "eu-west-2", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.eu-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-2", + }, + }, + endpoints.EndpointKey{ + Region: "eu-west-3", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.eu-west-3.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-3", + }, + }, + endpoints.EndpointKey{ + Region: "sa-east-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.sa-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "sa-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "us-east-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.us-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "us-east-2", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.us-east-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-2", + }, + }, + endpoints.EndpointKey{ + Region: "us-west-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + }, + endpoints.EndpointKey{ + Region: "us-west-2", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.us-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-2", + }, + }, + }, }, { ID: "aws-cn", @@ -169,6 +299,24 @@ var defaultPartitions = endpoints.Partitions{ }, RegionRegex: partitionRegexp.AwsCn, IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "cn-north-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.cn-north-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "cn-northwest-1", + }: endpoints.Endpoint{ + Hostname: "compute-optimizer.cn-northwest-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-northwest-1", + }, + }, + }, }, { ID: "aws-iso", diff --git a/service/connect/api_op_CreateAgentStatus.go b/service/connect/api_op_CreateAgentStatus.go index bdbcf2f2601..e755d486b6c 100644 --- a/service/connect/api_op_CreateAgentStatus.go +++ b/service/connect/api_op_CreateAgentStatus.go @@ -52,7 +52,7 @@ type CreateAgentStatusInput struct { // The display order of the status. DisplayOrder *int32 - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_CreateHoursOfOperation.go b/service/connect/api_op_CreateHoursOfOperation.go index 7a1db95ef91..b22e63db24e 100644 --- a/service/connect/api_op_CreateHoursOfOperation.go +++ b/service/connect/api_op_CreateHoursOfOperation.go @@ -54,7 +54,7 @@ type CreateHoursOfOperationInput struct { // The description of the hours of operation. Description *string - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_CreateIntegrationAssociation.go b/service/connect/api_op_CreateIntegrationAssociation.go index 61742710c87..bff885a25cf 100644 --- a/service/connect/api_op_CreateIntegrationAssociation.go +++ b/service/connect/api_op_CreateIntegrationAssociation.go @@ -11,7 +11,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Creates an AWS resource association with an Amazon Connect instance. +// Creates an Amazon Web Services resource association with an Amazon Connect +// instance. func (c *Client) CreateIntegrationAssociation(ctx context.Context, params *CreateIntegrationAssociationInput, optFns ...func(*Options)) (*CreateIntegrationAssociationOutput, error) { if params == nil { params = &CreateIntegrationAssociationInput{} @@ -57,7 +58,7 @@ type CreateIntegrationAssociationInput struct { // integration type. SourceType types.SourceType - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_CreateQueue.go b/service/connect/api_op_CreateQueue.go index e00695f7e96..acd495745a7 100644 --- a/service/connect/api_op_CreateQueue.go +++ b/service/connect/api_op_CreateQueue.go @@ -59,7 +59,7 @@ type CreateQueueInput struct { // The quick connects available to agents who are working the queue. QuickConnectIds []string - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_CreateQuickConnect.go b/service/connect/api_op_CreateQuickConnect.go index 448cee01cf5..036b479ae96 100644 --- a/service/connect/api_op_CreateQuickConnect.go +++ b/service/connect/api_op_CreateQuickConnect.go @@ -48,7 +48,7 @@ type CreateQuickConnectInput struct { // The description of the quick connect. Description *string - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_CreateSecurityProfile.go b/service/connect/api_op_CreateSecurityProfile.go new file mode 100644 index 00000000000..b0d086c8b24 --- /dev/null +++ b/service/connect/api_op_CreateSecurityProfile.go @@ -0,0 +1,139 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This API is in preview release for Amazon Connect and is subject to change. +// Creates a security profile. +func (c *Client) CreateSecurityProfile(ctx context.Context, params *CreateSecurityProfileInput, optFns ...func(*Options)) (*CreateSecurityProfileOutput, error) { + if params == nil { + params = &CreateSecurityProfileInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateSecurityProfile", params, optFns, c.addOperationCreateSecurityProfileMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateSecurityProfileOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateSecurityProfileInput struct { + + // The identifier of the Amazon Connect instance. You can find the instanceId in + // the ARN of the instance. + // + // This member is required. + InstanceId *string + + // The name of the security profile. + // + // This member is required. + SecurityProfileName *string + + // The description of the security profile. + Description *string + + // Permissions assigned to the security profile. + Permissions []string + + // The tags used to organize, track, or control access for this resource. + Tags map[string]string + + noSmithyDocumentSerde +} + +type CreateSecurityProfileOutput struct { + + // The Amazon Resource Name (ARN) for the security profile. + SecurityProfileArn *string + + // The identifier for the security profle. + SecurityProfileId *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateSecurityProfileMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateSecurityProfile{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateSecurityProfile{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpCreateSecurityProfileValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateSecurityProfile(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateSecurityProfile(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "connect", + OperationName: "CreateSecurityProfile", + } +} diff --git a/service/connect/api_op_CreateUseCase.go b/service/connect/api_op_CreateUseCase.go index cd704049724..5a51b51f149 100644 --- a/service/connect/api_op_CreateUseCase.go +++ b/service/connect/api_op_CreateUseCase.go @@ -46,7 +46,7 @@ type CreateUseCaseInput struct { // This member is required. UseCaseType types.UseCaseType - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde diff --git a/service/connect/api_op_DeleteIntegrationAssociation.go b/service/connect/api_op_DeleteIntegrationAssociation.go index bd1e8d30473..ac0dce09fa5 100644 --- a/service/connect/api_op_DeleteIntegrationAssociation.go +++ b/service/connect/api_op_DeleteIntegrationAssociation.go @@ -10,8 +10,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Deletes an AWS resource association from an Amazon Connect instance. The -// association must not have any use cases associated with it. +// Deletes an Amazon Web Services resource association from an Amazon Connect +// instance. The association must not have any use cases associated with it. func (c *Client) DeleteIntegrationAssociation(ctx context.Context, params *DeleteIntegrationAssociationInput, optFns ...func(*Options)) (*DeleteIntegrationAssociationOutput, error) { if params == nil { params = &DeleteIntegrationAssociationInput{} diff --git a/service/connect/api_op_DeleteSecurityProfile.go b/service/connect/api_op_DeleteSecurityProfile.go new file mode 100644 index 00000000000..58cdcb82ff4 --- /dev/null +++ b/service/connect/api_op_DeleteSecurityProfile.go @@ -0,0 +1,123 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This API is in preview release for Amazon Connect and is subject to change. +// Deletes a security profile. +func (c *Client) DeleteSecurityProfile(ctx context.Context, params *DeleteSecurityProfileInput, optFns ...func(*Options)) (*DeleteSecurityProfileOutput, error) { + if params == nil { + params = &DeleteSecurityProfileInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteSecurityProfile", params, optFns, c.addOperationDeleteSecurityProfileMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteSecurityProfileOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteSecurityProfileInput struct { + + // The identifier of the Amazon Connect instance. You can find the instanceId in + // the ARN of the instance. + // + // This member is required. + InstanceId *string + + // The identifier for the security profle. + // + // This member is required. + SecurityProfileId *string + + noSmithyDocumentSerde +} + +type DeleteSecurityProfileOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteSecurityProfileMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteSecurityProfile{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteSecurityProfile{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteSecurityProfileValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteSecurityProfile(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteSecurityProfile(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "connect", + OperationName: "DeleteSecurityProfile", + } +} diff --git a/service/connect/api_op_DescribeSecurityProfile.go b/service/connect/api_op_DescribeSecurityProfile.go new file mode 100644 index 00000000000..7b4637f4e37 --- /dev/null +++ b/service/connect/api_op_DescribeSecurityProfile.go @@ -0,0 +1,128 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/connect/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This API is in preview release for Amazon Connect and is subject to change. Gets +// basic information about the security profle. +func (c *Client) DescribeSecurityProfile(ctx context.Context, params *DescribeSecurityProfileInput, optFns ...func(*Options)) (*DescribeSecurityProfileOutput, error) { + if params == nil { + params = &DescribeSecurityProfileInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeSecurityProfile", params, optFns, c.addOperationDescribeSecurityProfileMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeSecurityProfileOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeSecurityProfileInput struct { + + // The identifier of the Amazon Connect instance. You can find the instanceId in + // the ARN of the instance. + // + // This member is required. + InstanceId *string + + // The identifier for the security profle. + // + // This member is required. + SecurityProfileId *string + + noSmithyDocumentSerde +} + +type DescribeSecurityProfileOutput struct { + + // The security profile. + SecurityProfile *types.SecurityProfile + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeSecurityProfileMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeSecurityProfile{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeSecurityProfile{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeSecurityProfileValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeSecurityProfile(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeSecurityProfile(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "connect", + OperationName: "DescribeSecurityProfile", + } +} diff --git a/service/connect/api_op_ListIntegrationAssociations.go b/service/connect/api_op_ListIntegrationAssociations.go index 6357f5e7ce9..3aa5478c628 100644 --- a/service/connect/api_op_ListIntegrationAssociations.go +++ b/service/connect/api_op_ListIntegrationAssociations.go @@ -12,8 +12,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Provides summary information about the AWS resource associations for the -// specified Amazon Connect instance. +// Provides summary information about the Amazon Web Services resource associations +// for the specified Amazon Connect instance. func (c *Client) ListIntegrationAssociations(ctx context.Context, params *ListIntegrationAssociationsInput, optFns ...func(*Options)) (*ListIntegrationAssociationsOutput, error) { if params == nil { params = &ListIntegrationAssociationsInput{} @@ -37,7 +37,7 @@ type ListIntegrationAssociationsInput struct { // This member is required. InstanceId *string - // + // The type of integration. IntegrationType types.IntegrationType // The maximum number of results to return per page. diff --git a/service/connect/api_op_ListLambdaFunctions.go b/service/connect/api_op_ListLambdaFunctions.go index 578b2924b51..a0792c0dea8 100644 --- a/service/connect/api_op_ListLambdaFunctions.go +++ b/service/connect/api_op_ListLambdaFunctions.go @@ -49,7 +49,7 @@ type ListLambdaFunctionsInput struct { type ListLambdaFunctionsOutput struct { - // The Lambdafunction ARNs associated with the specified instance. + // The Lambda function ARNs associated with the specified instance. LambdaFunctions []string // If there are additional results, this is the token for the next set of results. diff --git a/service/connect/api_op_ListSecurityProfilePermissions.go b/service/connect/api_op_ListSecurityProfilePermissions.go new file mode 100644 index 00000000000..4bbc4ab79b2 --- /dev/null +++ b/service/connect/api_op_ListSecurityProfilePermissions.go @@ -0,0 +1,223 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This API is in preview release for Amazon Connect and is subject to change. +// Lists the permissions granted to a security profile. +func (c *Client) ListSecurityProfilePermissions(ctx context.Context, params *ListSecurityProfilePermissionsInput, optFns ...func(*Options)) (*ListSecurityProfilePermissionsOutput, error) { + if params == nil { + params = &ListSecurityProfilePermissionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListSecurityProfilePermissions", params, optFns, c.addOperationListSecurityProfilePermissionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListSecurityProfilePermissionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListSecurityProfilePermissionsInput struct { + + // The identifier of the Amazon Connect instance. You can find the instanceId in + // the ARN of the instance. + // + // This member is required. + InstanceId *string + + // The identifier for the security profle. + // + // This member is required. + SecurityProfileId *string + + // The maximum number of results to return per page. + MaxResults int32 + + // The token for the next set of results. Use the value returned in the previous + // response in the next request to retrieve the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListSecurityProfilePermissionsOutput struct { + + // If there are additional results, this is the token for the next set of results. + NextToken *string + + // The permissions granted to the security profile. + Permissions []string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListSecurityProfilePermissionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListSecurityProfilePermissions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListSecurityProfilePermissions{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListSecurityProfilePermissionsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListSecurityProfilePermissions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListSecurityProfilePermissionsAPIClient is a client that implements the +// ListSecurityProfilePermissions operation. +type ListSecurityProfilePermissionsAPIClient interface { + ListSecurityProfilePermissions(context.Context, *ListSecurityProfilePermissionsInput, ...func(*Options)) (*ListSecurityProfilePermissionsOutput, error) +} + +var _ ListSecurityProfilePermissionsAPIClient = (*Client)(nil) + +// ListSecurityProfilePermissionsPaginatorOptions is the paginator options for +// ListSecurityProfilePermissions +type ListSecurityProfilePermissionsPaginatorOptions struct { + // The maximum number of results to return per page. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListSecurityProfilePermissionsPaginator is a paginator for +// ListSecurityProfilePermissions +type ListSecurityProfilePermissionsPaginator struct { + options ListSecurityProfilePermissionsPaginatorOptions + client ListSecurityProfilePermissionsAPIClient + params *ListSecurityProfilePermissionsInput + nextToken *string + firstPage bool +} + +// NewListSecurityProfilePermissionsPaginator returns a new +// ListSecurityProfilePermissionsPaginator +func NewListSecurityProfilePermissionsPaginator(client ListSecurityProfilePermissionsAPIClient, params *ListSecurityProfilePermissionsInput, optFns ...func(*ListSecurityProfilePermissionsPaginatorOptions)) *ListSecurityProfilePermissionsPaginator { + if params == nil { + params = &ListSecurityProfilePermissionsInput{} + } + + options := ListSecurityProfilePermissionsPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListSecurityProfilePermissionsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListSecurityProfilePermissionsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListSecurityProfilePermissions page. +func (p *ListSecurityProfilePermissionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListSecurityProfilePermissionsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + result, err := p.client.ListSecurityProfilePermissions(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListSecurityProfilePermissions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "connect", + OperationName: "ListSecurityProfilePermissions", + } +} diff --git a/service/connect/api_op_ListSecurityProfiles.go b/service/connect/api_op_ListSecurityProfiles.go index d4476e8559e..404fb32e33c 100644 --- a/service/connect/api_op_ListSecurityProfiles.go +++ b/service/connect/api_op_ListSecurityProfiles.go @@ -12,6 +12,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) +// This API is in preview release for Amazon Connect and is subject to change. // Provides summary information about the security profiles for the specified // Amazon Connect instance. For more information about security profiles, see // Security Profiles diff --git a/service/connect/api_op_UpdateInstanceAttribute.go b/service/connect/api_op_UpdateInstanceAttribute.go index 4e3b2a34eda..6e7482af21c 100644 --- a/service/connect/api_op_UpdateInstanceAttribute.go +++ b/service/connect/api_op_UpdateInstanceAttribute.go @@ -31,8 +31,8 @@ func (c *Client) UpdateInstanceAttribute(ctx context.Context, params *UpdateInst type UpdateInstanceAttributeInput struct { // The type of attribute. Only allowlisted customers can consume - // USE_CUSTOM_TTS_VOICES. To access this feature, contact AWS Support for - // allowlisting. + // USE_CUSTOM_TTS_VOICES. To access this feature, contact Amazon Web Services + // Support for allowlisting. // // This member is required. AttributeType types.InstanceAttributeType diff --git a/service/connect/api_op_UpdateSecurityProfile.go b/service/connect/api_op_UpdateSecurityProfile.go new file mode 100644 index 00000000000..3c86d44bba1 --- /dev/null +++ b/service/connect/api_op_UpdateSecurityProfile.go @@ -0,0 +1,129 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This API is in preview release for Amazon Connect and is subject to change. +// Updates a security profile. +func (c *Client) UpdateSecurityProfile(ctx context.Context, params *UpdateSecurityProfileInput, optFns ...func(*Options)) (*UpdateSecurityProfileOutput, error) { + if params == nil { + params = &UpdateSecurityProfileInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateSecurityProfile", params, optFns, c.addOperationUpdateSecurityProfileMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateSecurityProfileOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateSecurityProfileInput struct { + + // The identifier of the Amazon Connect instance. You can find the instanceId in + // the ARN of the instance. + // + // This member is required. + InstanceId *string + + // The identifier for the security profle. + // + // This member is required. + SecurityProfileId *string + + // The description of the security profile. + Description *string + + // The permissions granted to a security profile. + Permissions []string + + noSmithyDocumentSerde +} + +type UpdateSecurityProfileOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateSecurityProfileMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateSecurityProfile{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateSecurityProfile{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateSecurityProfileValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateSecurityProfile(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateSecurityProfile(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "connect", + OperationName: "UpdateSecurityProfile", + } +} diff --git a/service/connect/deserializers.go b/service/connect/deserializers.go index 84cbee3b77c..5c4d731e63d 100644 --- a/service/connect/deserializers.go +++ b/service/connect/deserializers.go @@ -2404,6 +2404,184 @@ func awsRestjson1_deserializeOpDocumentCreateRoutingProfileOutput(v **CreateRout return nil } +type awsRestjson1_deserializeOpCreateSecurityProfile struct { +} + +func (*awsRestjson1_deserializeOpCreateSecurityProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateSecurityProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateSecurityProfile(response, &metadata) + } + output := &CreateSecurityProfileOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateSecurityProfileOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateSecurityProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("DuplicateResourceException", errorCode): + return awsRestjson1_deserializeErrorDuplicateResourceException(response, errorBody) + + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateSecurityProfileOutput(v **CreateSecurityProfileOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateSecurityProfileOutput + if *v == nil { + sv = &CreateSecurityProfileOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "SecurityProfileArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ARN to be of type string, got %T instead", value) + } + sv.SecurityProfileArn = ptr.String(jtv) + } + + case "SecurityProfileId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecurityProfileId to be of type string, got %T instead", value) + } + sv.SecurityProfileId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpCreateUseCase struct { } @@ -3327,6 +3505,113 @@ func awsRestjson1_deserializeOpErrorDeleteQuickConnect(response *smithyhttp.Resp } } +type awsRestjson1_deserializeOpDeleteSecurityProfile struct { +} + +func (*awsRestjson1_deserializeOpDeleteSecurityProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteSecurityProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteSecurityProfile(response, &metadata) + } + output := &DeleteSecurityProfileOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteSecurityProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("ResourceInUseException", errorCode): + return awsRestjson1_deserializeErrorResourceInUseException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + type awsRestjson1_deserializeOpDeleteUseCase struct { } @@ -5058,6 +5343,165 @@ func awsRestjson1_deserializeOpDocumentDescribeRoutingProfileOutput(v **Describe return nil } +type awsRestjson1_deserializeOpDescribeSecurityProfile struct { +} + +func (*awsRestjson1_deserializeOpDescribeSecurityProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeSecurityProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeSecurityProfile(response, &metadata) + } + output := &DescribeSecurityProfileOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeSecurityProfileOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeSecurityProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeSecurityProfileOutput(v **DescribeSecurityProfileOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeSecurityProfileOutput + if *v == nil { + sv = &DescribeSecurityProfileOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "SecurityProfile": + if err := awsRestjson1_deserializeDocumentSecurityProfile(&sv.SecurityProfile, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpDescribeUser struct { } @@ -10184,6 +10628,174 @@ func awsRestjson1_deserializeOpDocumentListSecurityKeysOutput(v **ListSecurityKe return nil } +type awsRestjson1_deserializeOpListSecurityProfilePermissions struct { +} + +func (*awsRestjson1_deserializeOpListSecurityProfilePermissions) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListSecurityProfilePermissions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListSecurityProfilePermissions(response, &metadata) + } + output := &ListSecurityProfilePermissionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListSecurityProfilePermissionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListSecurityProfilePermissions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListSecurityProfilePermissionsOutput(v **ListSecurityProfilePermissionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListSecurityProfilePermissionsOutput + if *v == nil { + sv = &ListSecurityProfilePermissionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "NextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "Permissions": + if err := awsRestjson1_deserializeDocumentPermissionsList(&sv.Permissions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpListSecurityProfiles struct { } @@ -13580,9 +14192,110 @@ func (m *awsRestjson1_deserializeOpUpdateQueueStatus) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateQueueStatus(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateQueueStatus(response, &metadata) + } + output := &UpdateQueueStatusOutput{} + out.Result = output + + if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to discard response body, %w", err), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateQueueStatus(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpUpdateQuickConnectConfig struct { +} + +func (*awsRestjson1_deserializeOpUpdateQuickConnectConfig) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateQuickConnectConfig) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUpdateQuickConnectConfig(response, &metadata) } - output := &UpdateQueueStatusOutput{} + output := &UpdateQuickConnectConfigOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -13594,7 +14307,7 @@ func (m *awsRestjson1_deserializeOpUpdateQueueStatus) HandleDeserialize(ctx cont return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateQueueStatus(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateQuickConnectConfig(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -13660,14 +14373,14 @@ func awsRestjson1_deserializeOpErrorUpdateQueueStatus(response *smithyhttp.Respo } } -type awsRestjson1_deserializeOpUpdateQuickConnectConfig struct { +type awsRestjson1_deserializeOpUpdateQuickConnectName struct { } -func (*awsRestjson1_deserializeOpUpdateQuickConnectConfig) ID() string { +func (*awsRestjson1_deserializeOpUpdateQuickConnectName) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateQuickConnectConfig) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateQuickConnectName) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -13681,9 +14394,9 @@ func (m *awsRestjson1_deserializeOpUpdateQuickConnectConfig) HandleDeserialize(c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateQuickConnectConfig(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateQuickConnectName(response, &metadata) } - output := &UpdateQuickConnectConfigOutput{} + output := &UpdateQuickConnectNameOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -13695,7 +14408,7 @@ func (m *awsRestjson1_deserializeOpUpdateQuickConnectConfig) HandleDeserialize(c return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateQuickConnectConfig(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateQuickConnectName(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -13761,14 +14474,14 @@ func awsRestjson1_deserializeOpErrorUpdateQuickConnectConfig(response *smithyhtt } } -type awsRestjson1_deserializeOpUpdateQuickConnectName struct { +type awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency struct { } -func (*awsRestjson1_deserializeOpUpdateQuickConnectName) ID() string { +func (*awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateQuickConnectName) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -13782,9 +14495,9 @@ func (m *awsRestjson1_deserializeOpUpdateQuickConnectName) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateQuickConnectName(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileConcurrency(response, &metadata) } - output := &UpdateQuickConnectNameOutput{} + output := &UpdateRoutingProfileConcurrencyOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -13796,7 +14509,7 @@ func (m *awsRestjson1_deserializeOpUpdateQuickConnectName) HandleDeserialize(ctx return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateQuickConnectName(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateRoutingProfileConcurrency(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -13862,14 +14575,14 @@ func awsRestjson1_deserializeOpErrorUpdateQuickConnectName(response *smithyhttp. } } -type awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency struct { +type awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue struct { } -func (*awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) ID() string { +func (*awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -13883,9 +14596,9 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) HandleDeseri } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileConcurrency(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(response, &metadata) } - output := &UpdateRoutingProfileConcurrencyOutput{} + output := &UpdateRoutingProfileDefaultOutboundQueueOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -13897,7 +14610,7 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileConcurrency) HandleDeseri return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateRoutingProfileConcurrency(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -13963,14 +14676,14 @@ func awsRestjson1_deserializeOpErrorUpdateRoutingProfileConcurrency(response *sm } } -type awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue struct { +type awsRestjson1_deserializeOpUpdateRoutingProfileName struct { } -func (*awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) ID() string { +func (*awsRestjson1_deserializeOpUpdateRoutingProfileName) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateRoutingProfileName) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -13984,9 +14697,9 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) Han } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response, &metadata) } - output := &UpdateRoutingProfileDefaultOutboundQueueOutput{} + output := &UpdateRoutingProfileNameOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -13998,7 +14711,7 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileDefaultOutboundQueue) Han return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -14039,6 +14752,9 @@ func awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(res } switch { + case strings.EqualFold("DuplicateResourceException", errorCode): + return awsRestjson1_deserializeErrorDuplicateResourceException(response, errorBody) + case strings.EqualFold("InternalServiceException", errorCode): return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) @@ -14064,14 +14780,14 @@ func awsRestjson1_deserializeOpErrorUpdateRoutingProfileDefaultOutboundQueue(res } } -type awsRestjson1_deserializeOpUpdateRoutingProfileName struct { +type awsRestjson1_deserializeOpUpdateRoutingProfileQueues struct { } -func (*awsRestjson1_deserializeOpUpdateRoutingProfileName) ID() string { +func (*awsRestjson1_deserializeOpUpdateRoutingProfileQueues) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateRoutingProfileName) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateRoutingProfileQueues) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -14085,9 +14801,9 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileName) HandleDeserialize(c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileQueues(response, &metadata) } - output := &UpdateRoutingProfileNameOutput{} + output := &UpdateRoutingProfileQueuesOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -14099,7 +14815,7 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileName) HandleDeserialize(c return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateRoutingProfileQueues(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -14140,9 +14856,6 @@ func awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response *smithyhtt } switch { - case strings.EqualFold("DuplicateResourceException", errorCode): - return awsRestjson1_deserializeErrorDuplicateResourceException(response, errorBody) - case strings.EqualFold("InternalServiceException", errorCode): return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) @@ -14168,14 +14881,14 @@ func awsRestjson1_deserializeOpErrorUpdateRoutingProfileName(response *smithyhtt } } -type awsRestjson1_deserializeOpUpdateRoutingProfileQueues struct { +type awsRestjson1_deserializeOpUpdateSecurityProfile struct { } -func (*awsRestjson1_deserializeOpUpdateRoutingProfileQueues) ID() string { +func (*awsRestjson1_deserializeOpUpdateSecurityProfile) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateRoutingProfileQueues) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateSecurityProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -14189,9 +14902,9 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileQueues) HandleDeserialize } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateRoutingProfileQueues(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateSecurityProfile(response, &metadata) } - output := &UpdateRoutingProfileQueuesOutput{} + output := &UpdateSecurityProfileOutput{} out.Result = output if _, err = io.Copy(ioutil.Discard, response.Body); err != nil { @@ -14203,7 +14916,7 @@ func (m *awsRestjson1_deserializeOpUpdateRoutingProfileQueues) HandleDeserialize return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateRoutingProfileQueues(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateSecurityProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -14982,6 +15695,42 @@ func awsRestjson1_deserializeOpErrorUpdateUserSecurityProfiles(response *smithyh } } +func awsRestjson1_deserializeErrorAccessDeniedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.AccessDeniedException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentAccessDeniedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + func awsRestjson1_deserializeErrorContactFlowNotPublishedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { output := &types.ContactFlowNotPublishedException{} var buff [1024]byte @@ -15558,6 +16307,46 @@ func awsRestjson1_deserializeErrorUserNotFoundException(response *smithyhttp.Res return output } +func awsRestjson1_deserializeDocumentAccessDeniedException(v **types.AccessDeniedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AccessDeniedException + if *v == nil { + sv = &types.AccessDeniedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Message to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentAgentStatus(v **types.AgentStatus, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -18876,6 +19665,42 @@ func awsRestjson1_deserializeDocumentOutboundContactNotPermittedException(v **ty return nil } +func awsRestjson1_deserializeDocumentPermissionsList(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecurityProfilePermission to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentPhoneNumberQuickConnectConfig(v **types.PhoneNumberQuickConnectConfig, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -20337,6 +21162,87 @@ func awsRestjson1_deserializeDocumentSecurityKeysList(v *[]types.SecurityKey, va return nil } +func awsRestjson1_deserializeDocumentSecurityProfile(v **types.SecurityProfile, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SecurityProfile + if *v == nil { + sv = &types.SecurityProfile{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ARN to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecurityProfileDescription to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecurityProfileId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "OrganizationResourceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceId to be of type string, got %T instead", value) + } + sv.OrganizationResourceId = ptr.String(jtv) + } + + case "SecurityProfileName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecurityProfileName to be of type string, got %T instead", value) + } + sv.SecurityProfileName = ptr.String(jtv) + } + + case "Tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentSecurityProfileIds(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/connect/doc.go b/service/connect/doc.go index b113e6c31d7..1f94b81e2b9 100644 --- a/service/connect/doc.go +++ b/service/connect/doc.go @@ -13,8 +13,8 @@ // information, see Amazon Connect Service Quotas // (https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html) // in the Amazon Connect Administrator Guide. You can connect programmatically to -// an AWS service by using an endpoint. For a list of Amazon Connect endpoints, see -// Amazon Connect Endpoints +// an Amazon Web Services service by using an endpoint. For a list of Amazon +// Connect endpoints, see Amazon Connect Endpoints // (https://docs.aws.amazon.com/general/latest/gr/connect_region.html). Working // with contact flows? Check out the Amazon Connect Flow language // (https://docs.aws.amazon.com/connect/latest/adminguide/flow-language.html). diff --git a/service/connect/generated.json b/service/connect/generated.json index c2242c135b6..c30c287c5d9 100644 --- a/service/connect/generated.json +++ b/service/connect/generated.json @@ -23,6 +23,7 @@ "api_op_CreateQueue.go", "api_op_CreateQuickConnect.go", "api_op_CreateRoutingProfile.go", + "api_op_CreateSecurityProfile.go", "api_op_CreateUseCase.go", "api_op_CreateUser.go", "api_op_CreateUserHierarchyGroup.go", @@ -30,6 +31,7 @@ "api_op_DeleteInstance.go", "api_op_DeleteIntegrationAssociation.go", "api_op_DeleteQuickConnect.go", + "api_op_DeleteSecurityProfile.go", "api_op_DeleteUseCase.go", "api_op_DeleteUser.go", "api_op_DeleteUserHierarchyGroup.go", @@ -42,6 +44,7 @@ "api_op_DescribeQueue.go", "api_op_DescribeQuickConnect.go", "api_op_DescribeRoutingProfile.go", + "api_op_DescribeSecurityProfile.go", "api_op_DescribeUser.go", "api_op_DescribeUserHierarchyGroup.go", "api_op_DescribeUserHierarchyStructure.go", @@ -76,6 +79,7 @@ "api_op_ListRoutingProfileQueues.go", "api_op_ListRoutingProfiles.go", "api_op_ListSecurityKeys.go", + "api_op_ListSecurityProfilePermissions.go", "api_op_ListSecurityProfiles.go", "api_op_ListTagsForResource.go", "api_op_ListUseCases.go", @@ -111,6 +115,7 @@ "api_op_UpdateRoutingProfileDefaultOutboundQueue.go", "api_op_UpdateRoutingProfileName.go", "api_op_UpdateRoutingProfileQueues.go", + "api_op_UpdateSecurityProfile.go", "api_op_UpdateUserHierarchy.go", "api_op_UpdateUserHierarchyGroupName.go", "api_op_UpdateUserHierarchyStructure.go", diff --git a/service/connect/serializers.go b/service/connect/serializers.go index c692fae9ccf..2e30115bdd5 100644 --- a/service/connect/serializers.go +++ b/service/connect/serializers.go @@ -1545,6 +1545,106 @@ func awsRestjson1_serializeOpDocumentCreateRoutingProfileInput(v *CreateRoutingP return nil } +type awsRestjson1_serializeOpCreateSecurityProfile struct { +} + +func (*awsRestjson1_serializeOpCreateSecurityProfile) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateSecurityProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateSecurityProfileInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/security-profiles/{InstanceId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "PUT" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsCreateSecurityProfileInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateSecurityProfileInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateSecurityProfileInput(v *CreateSecurityProfileInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateSecurityProfileInput(v *CreateSecurityProfileInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.Permissions != nil { + ok := object.Key("Permissions") + if err := awsRestjson1_serializeDocumentPermissionsList(v.Permissions, ok); err != nil { + return err + } + } + + if v.SecurityProfileName != nil { + ok := object.Key("SecurityProfileName") + ok.String(*v.SecurityProfileName) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpCreateUseCase struct { } @@ -2116,6 +2216,73 @@ func awsRestjson1_serializeOpHttpBindingsDeleteQuickConnectInput(v *DeleteQuickC return nil } +type awsRestjson1_serializeOpDeleteSecurityProfile struct { +} + +func (*awsRestjson1_serializeOpDeleteSecurityProfile) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteSecurityProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteSecurityProfileInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/security-profiles/{InstanceId}/{SecurityProfileId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsDeleteSecurityProfileInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteSecurityProfileInput(v *DeleteSecurityProfileInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + if v.SecurityProfileId == nil || len(*v.SecurityProfileId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member SecurityProfileId must not be empty")} + } + if v.SecurityProfileId != nil { + if err := encoder.SetURI("SecurityProfileId").String(*v.SecurityProfileId); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpDeleteUseCase struct { } @@ -2924,6 +3091,73 @@ func awsRestjson1_serializeOpHttpBindingsDescribeRoutingProfileInput(v *Describe return nil } +type awsRestjson1_serializeOpDescribeSecurityProfile struct { +} + +func (*awsRestjson1_serializeOpDescribeSecurityProfile) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeSecurityProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeSecurityProfileInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/security-profiles/{InstanceId}/{SecurityProfileId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsDescribeSecurityProfileInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeSecurityProfileInput(v *DescribeSecurityProfileInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + if v.SecurityProfileId == nil || len(*v.SecurityProfileId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member SecurityProfileId must not be empty")} + } + if v.SecurityProfileId != nil { + if err := encoder.SetURI("SecurityProfileId").String(*v.SecurityProfileId); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpDescribeUser struct { } @@ -5378,6 +5612,81 @@ func awsRestjson1_serializeOpHttpBindingsListSecurityKeysInput(v *ListSecurityKe return nil } +type awsRestjson1_serializeOpListSecurityProfilePermissions struct { +} + +func (*awsRestjson1_serializeOpListSecurityProfilePermissions) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListSecurityProfilePermissions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListSecurityProfilePermissionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/security-profiles-permissions/{InstanceId}/{SecurityProfileId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListSecurityProfilePermissionsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListSecurityProfilePermissionsInput(v *ListSecurityProfilePermissionsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if v.SecurityProfileId == nil || len(*v.SecurityProfileId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member SecurityProfileId must not be empty")} + } + if v.SecurityProfileId != nil { + if err := encoder.SetURI("SecurityProfileId").String(*v.SecurityProfileId); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpListSecurityProfiles struct { } @@ -8415,6 +8724,103 @@ func awsRestjson1_serializeOpDocumentUpdateRoutingProfileQueuesInput(v *UpdateRo return nil } +type awsRestjson1_serializeOpUpdateSecurityProfile struct { +} + +func (*awsRestjson1_serializeOpUpdateSecurityProfile) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUpdateSecurityProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateSecurityProfileInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/security-profiles/{InstanceId}/{SecurityProfileId}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsUpdateSecurityProfileInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateSecurityProfileInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUpdateSecurityProfileInput(v *UpdateSecurityProfileInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + if v.SecurityProfileId == nil || len(*v.SecurityProfileId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member SecurityProfileId must not be empty")} + } + if v.SecurityProfileId != nil { + if err := encoder.SetURI("SecurityProfileId").String(*v.SecurityProfileId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateSecurityProfileInput(v *UpdateSecurityProfileInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.Permissions != nil { + ok := object.Key("Permissions") + if err := awsRestjson1_serializeDocumentPermissionsList(v.Permissions, ok); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpUpdateUserHierarchy struct { } @@ -9543,6 +9949,17 @@ func awsRestjson1_serializeDocumentParticipantDetails(v *types.ParticipantDetail return nil } +func awsRestjson1_serializeDocumentPermissionsList(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + func awsRestjson1_serializeDocumentPhoneNumberQuickConnectConfig(v *types.PhoneNumberQuickConnectConfig, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/connect/types/errors.go b/service/connect/types/errors.go index 200d6f80643..a2cb1a2bfbf 100644 --- a/service/connect/types/errors.go +++ b/service/connect/types/errors.go @@ -7,6 +7,25 @@ import ( smithy "github.com/aws/smithy-go" ) +// You do not have sufficient access to perform this action. +type AccessDeniedException struct { + Message *string + + noSmithyDocumentSerde +} + +func (e *AccessDeniedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *AccessDeniedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *AccessDeniedException) ErrorCode() string { return "AccessDeniedException" } +func (e *AccessDeniedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + // The contact flow has not been published. type ContactFlowNotPublishedException struct { Message *string diff --git a/service/connect/types/types.go b/service/connect/types/types.go index 458241b6d51..42915c42bab 100644 --- a/service/connect/types/types.go +++ b/service/connect/types/types.go @@ -28,7 +28,7 @@ type AgentStatus struct { // The state of the agent status. State AgentStatusState - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string // The type of agent status. @@ -447,7 +447,7 @@ type HoursOfOperation struct { // The name for the hours of operation. Name *string - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string // The time zone for the hours of operation. @@ -853,7 +853,7 @@ type Queue struct { // The status of the queue. Status QueueStatus - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde @@ -924,7 +924,7 @@ type QuickConnect struct { // The identifier for the quick connect. QuickConnectId *string - // One or more tags. + // The tags used to organize, track, or control access for this resource. Tags map[string]string noSmithyDocumentSerde @@ -1158,6 +1158,30 @@ type SecurityKey struct { noSmithyDocumentSerde } +// Contains information about a security profile. +type SecurityProfile struct { + + // The Amazon Resource Name (ARN) for the secruity profile. + Arn *string + + // The description of the security profile. + Description *string + + // The identifier for the security profile. + Id *string + + // The organization resource identifier for the security profile. + OrganizationResourceId *string + + // The name for the security profile. + SecurityProfileName *string + + // The tags used to organize, track, or control access for this resource. + Tags map[string]string + + noSmithyDocumentSerde +} + // Contains information about a security profile. type SecurityProfileSummary struct { diff --git a/service/connect/validators.go b/service/connect/validators.go index c1db7698da6..1361cf9602c 100644 --- a/service/connect/validators.go +++ b/service/connect/validators.go @@ -330,6 +330,26 @@ func (m *validateOpCreateRoutingProfile) HandleInitialize(ctx context.Context, i return next.HandleInitialize(ctx, in) } +type validateOpCreateSecurityProfile struct { +} + +func (*validateOpCreateSecurityProfile) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateSecurityProfile) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateSecurityProfileInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateSecurityProfileInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpCreateUseCase struct { } @@ -470,6 +490,26 @@ func (m *validateOpDeleteQuickConnect) HandleInitialize(ctx context.Context, in return next.HandleInitialize(ctx, in) } +type validateOpDeleteSecurityProfile struct { +} + +func (*validateOpDeleteSecurityProfile) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteSecurityProfile) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteSecurityProfileInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteSecurityProfileInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDeleteUseCase struct { } @@ -710,6 +750,26 @@ func (m *validateOpDescribeRoutingProfile) HandleInitialize(ctx context.Context, return next.HandleInitialize(ctx, in) } +type validateOpDescribeSecurityProfile struct { +} + +func (*validateOpDescribeSecurityProfile) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeSecurityProfile) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeSecurityProfileInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeSecurityProfileInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDescribeUserHierarchyGroup struct { } @@ -1370,6 +1430,26 @@ func (m *validateOpListSecurityKeys) HandleInitialize(ctx context.Context, in mi return next.HandleInitialize(ctx, in) } +type validateOpListSecurityProfilePermissions struct { +} + +func (*validateOpListSecurityProfilePermissions) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListSecurityProfilePermissions) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListSecurityProfilePermissionsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListSecurityProfilePermissionsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpListSecurityProfiles struct { } @@ -2070,6 +2150,26 @@ func (m *validateOpUpdateRoutingProfileQueues) HandleInitialize(ctx context.Cont return next.HandleInitialize(ctx, in) } +type validateOpUpdateSecurityProfile struct { +} + +func (*validateOpUpdateSecurityProfile) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateSecurityProfile) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateSecurityProfileInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateSecurityProfileInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpUpdateUserHierarchyGroupName struct { } @@ -2274,6 +2374,10 @@ func addOpCreateRoutingProfileValidationMiddleware(stack *middleware.Stack) erro return stack.Initialize.Add(&validateOpCreateRoutingProfile{}, middleware.After) } +func addOpCreateSecurityProfileValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateSecurityProfile{}, middleware.After) +} + func addOpCreateUseCaseValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCreateUseCase{}, middleware.After) } @@ -2302,6 +2406,10 @@ func addOpDeleteQuickConnectValidationMiddleware(stack *middleware.Stack) error return stack.Initialize.Add(&validateOpDeleteQuickConnect{}, middleware.After) } +func addOpDeleteSecurityProfileValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteSecurityProfile{}, middleware.After) +} + func addOpDeleteUseCaseValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeleteUseCase{}, middleware.After) } @@ -2350,6 +2458,10 @@ func addOpDescribeRoutingProfileValidationMiddleware(stack *middleware.Stack) er return stack.Initialize.Add(&validateOpDescribeRoutingProfile{}, middleware.After) } +func addOpDescribeSecurityProfileValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeSecurityProfile{}, middleware.After) +} + func addOpDescribeUserHierarchyGroupValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDescribeUserHierarchyGroup{}, middleware.After) } @@ -2482,6 +2594,10 @@ func addOpListSecurityKeysValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListSecurityKeys{}, middleware.After) } +func addOpListSecurityProfilePermissionsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListSecurityProfilePermissions{}, middleware.After) +} + func addOpListSecurityProfilesValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListSecurityProfiles{}, middleware.After) } @@ -2622,6 +2738,10 @@ func addOpUpdateRoutingProfileQueuesValidationMiddleware(stack *middleware.Stack return stack.Initialize.Add(&validateOpUpdateRoutingProfileQueues{}, middleware.After) } +func addOpUpdateSecurityProfileValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateSecurityProfile{}, middleware.After) +} + func addOpUpdateUserHierarchyGroupNameValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdateUserHierarchyGroupName{}, middleware.After) } @@ -3526,6 +3646,24 @@ func validateOpCreateRoutingProfileInput(v *CreateRoutingProfileInput) error { } } +func validateOpCreateSecurityProfileInput(v *CreateSecurityProfileInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateSecurityProfileInput"} + if v.SecurityProfileName == nil { + invalidParams.Add(smithy.NewErrParamRequired("SecurityProfileName")) + } + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpCreateUseCaseInput(v *CreateUseCaseInput) error { if v == nil { return nil @@ -3665,6 +3803,24 @@ func validateOpDeleteQuickConnectInput(v *DeleteQuickConnectInput) error { } } +func validateOpDeleteSecurityProfileInput(v *DeleteSecurityProfileInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteSecurityProfileInput"} + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if v.SecurityProfileId == nil { + invalidParams.Add(smithy.NewErrParamRequired("SecurityProfileId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDeleteUseCaseInput(v *DeleteUseCaseInput) error { if v == nil { return nil @@ -3884,6 +4040,24 @@ func validateOpDescribeRoutingProfileInput(v *DescribeRoutingProfileInput) error } } +func validateOpDescribeSecurityProfileInput(v *DescribeSecurityProfileInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeSecurityProfileInput"} + if v.SecurityProfileId == nil { + invalidParams.Add(smithy.NewErrParamRequired("SecurityProfileId")) + } + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDescribeUserHierarchyGroupInput(v *DescribeUserHierarchyGroupInput) error { if v == nil { return nil @@ -4455,6 +4629,24 @@ func validateOpListSecurityKeysInput(v *ListSecurityKeysInput) error { } } +func validateOpListSecurityProfilePermissionsInput(v *ListSecurityProfilePermissionsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListSecurityProfilePermissionsInput"} + if v.SecurityProfileId == nil { + invalidParams.Add(smithy.NewErrParamRequired("SecurityProfileId")) + } + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpListSecurityProfilesInput(v *ListSecurityProfilesInput) error { if v == nil { return nil @@ -5181,6 +5373,24 @@ func validateOpUpdateRoutingProfileQueuesInput(v *UpdateRoutingProfileQueuesInpu } } +func validateOpUpdateSecurityProfileInput(v *UpdateSecurityProfileInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateSecurityProfileInput"} + if v.SecurityProfileId == nil { + invalidParams.Add(smithy.NewErrParamRequired("SecurityProfileId")) + } + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpUpdateUserHierarchyGroupNameInput(v *UpdateUserHierarchyGroupNameInput) error { if v == nil { return nil diff --git a/service/docdb/internal/endpoints/endpoints.go b/service/docdb/internal/endpoints/endpoints.go index 3b99451db5b..4160c589428 100644 --- a/service/docdb/internal/endpoints/endpoints.go +++ b/service/docdb/internal/endpoints/endpoints.go @@ -521,7 +521,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "rds-fips.{region}.amazonaws.com", + Hostname: "rds.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/dynamodb/api_op_BatchExecuteStatement.go b/service/dynamodb/api_op_BatchExecuteStatement.go index d033dcdf29a..70ec9f0aa75 100644 --- a/service/dynamodb/api_op_BatchExecuteStatement.go +++ b/service/dynamodb/api_op_BatchExecuteStatement.go @@ -11,8 +11,9 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// This operation allows you to perform batch reads and writes on data stored in -// DynamoDB, using PartiQL. +// This operation allows you to perform batch reads or writes on data stored in +// DynamoDB, using PartiQL. The entire batch must consist of either read statements +// or write statements, you cannot mix both in one batch. func (c *Client) BatchExecuteStatement(ctx context.Context, params *BatchExecuteStatementInput, optFns ...func(*Options)) (*BatchExecuteStatementOutput, error) { if params == nil { params = &BatchExecuteStatementInput{} diff --git a/service/dynamodb/api_op_CreateTable.go b/service/dynamodb/api_op_CreateTable.go index 943a5db8c4a..28be2e8d5b0 100644 --- a/service/dynamodb/api_op_CreateTable.go +++ b/service/dynamodb/api_op_CreateTable.go @@ -13,18 +13,18 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// The CreateTable operation adds a new table to your account. In an AWS account, -// table names must be unique within each Region. That is, you can have two tables -// with same name if you create the tables in different Regions. CreateTable is an -// asynchronous operation. Upon receiving a CreateTable request, DynamoDB -// immediately returns a response with a TableStatus of CREATING. After the table -// is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and -// write operations only on an ACTIVE table. You can optionally define secondary -// indexes on the new table, as part of the CreateTable operation. If you want to -// create multiple tables with secondary indexes on them, you must create the -// tables sequentially. Only one table with secondary indexes can be in the -// CREATING state at any given time. You can use the DescribeTable action to check -// the table status. +// The CreateTable operation adds a new table to your account. In an Amazon Web +// Services account, table names must be unique within each Region. That is, you +// can have two tables with same name if you create the tables in different +// Regions. CreateTable is an asynchronous operation. Upon receiving a CreateTable +// request, DynamoDB immediately returns a response with a TableStatus of CREATING. +// After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can +// perform read and write operations only on an ACTIVE table. You can optionally +// define secondary indexes on the new table, as part of the CreateTable operation. +// If you want to create multiple tables with secondary indexes on them, you must +// create the tables sequentially. Only one table with secondary indexes can be in +// the CREATING state at any given time. You can use the DescribeTable action to +// check the table status. func (c *Client) CreateTable(ctx context.Context, params *CreateTableInput, optFns ...func(*Options)) (*CreateTableOutput, error) { if params == nil { params = &CreateTableInput{} diff --git a/service/dynamodb/api_op_DescribeContributorInsights.go b/service/dynamodb/api_op_DescribeContributorInsights.go index c18abd795d8..fbcad2054bb 100644 --- a/service/dynamodb/api_op_DescribeContributorInsights.go +++ b/service/dynamodb/api_op_DescribeContributorInsights.go @@ -44,13 +44,13 @@ type DescribeContributorInsightsInput struct { type DescribeContributorInsightsOutput struct { - // List of names of the associated Alpine rules. + // List of names of the associated contributor insights rules. ContributorInsightsRuleList []string - // Current Status contributor insights. + // Current status of contributor insights. ContributorInsightsStatus types.ContributorInsightsStatus - // Returns information about the last failure that encountered. The most common + // Returns information about the last failure that was encountered. The most common // exceptions for a FAILED status are: // // * LimitExceededException - Per-account diff --git a/service/dynamodb/api_op_DescribeLimits.go b/service/dynamodb/api_op_DescribeLimits.go index ab3b7e17af4..404e4b82caa 100644 --- a/service/dynamodb/api_op_DescribeLimits.go +++ b/service/dynamodb/api_op_DescribeLimits.go @@ -12,58 +12,58 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns the current provisioned-capacity quotas for your AWS account in a -// Region, both for the Region as a whole and for any one DynamoDB table that you -// create there. When you establish an AWS account, the account has initial quotas -// on the maximum read capacity units and write capacity units that you can -// provision across all of your DynamoDB tables in a given Region. Also, there are -// per-table quotas that apply when you create a table there. For more information, -// see Service, Account, and Table Quotas +// Returns the current provisioned-capacity quotas for your Amazon Web Services +// account in a Region, both for the Region as a whole and for any one DynamoDB +// table that you create there. When you establish an Amazon Web Services account, +// the account has initial quotas on the maximum read capacity units and write +// capacity units that you can provision across all of your DynamoDB tables in a +// given Region. Also, there are per-table quotas that apply when you create a +// table there. For more information, see Service, Account, and Table Quotas // (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html) // page in the Amazon DynamoDB Developer Guide. Although you can increase these -// quotas by filing a case at AWS Support Center +// quotas by filing a case at Amazon Web Services Support Center // (https://console.aws.amazon.com/support/home#/), obtaining the increase is not // instantaneous. The DescribeLimits action lets you write code to compare the // capacity you are currently using to those quotas imposed by your account so that // you have enough time to apply for an increase before you hit a quota. For -// example, you could use one of the AWS SDKs to do the following: +// example, you could use one of the Amazon Web Services SDKs to do the +// following: // -// * Call -// DescribeLimits for a particular Region to obtain your current account quotas on -// provisioned capacity there. +// * Call DescribeLimits for a particular Region to obtain your current +// account quotas on provisioned capacity there. // -// * Create a variable to hold the aggregate read -// capacity units provisioned for all your tables in that Region, and one to hold -// the aggregate write capacity units. Zero them both. +// * Create a variable to hold the +// aggregate read capacity units provisioned for all your tables in that Region, +// and one to hold the aggregate write capacity units. Zero them both. // -// * Call ListTables to obtain -// a list of all your DynamoDB tables. +// * Call +// ListTables to obtain a list of all your DynamoDB tables. // -// * For each table name listed by ListTables, -// do the following: +// * For each table name +// listed by ListTables, do the following: // -// * Call DescribeTable with the table name. +// * Call DescribeTable with the table +// name. // -// * Use the data -// returned by DescribeTable to add the read capacity units and write capacity -// units provisioned for the table itself to your variables. +// * Use the data returned by DescribeTable to add the read capacity units +// and write capacity units provisioned for the table itself to your variables. // -// * If the table has -// one or more global secondary indexes (GSIs), loop over these GSIs and add their -// provisioned capacity values to your variables as well. +// * +// If the table has one or more global secondary indexes (GSIs), loop over these +// GSIs and add their provisioned capacity values to your variables as well. // -// * Report the account -// quotas for that Region returned by DescribeLimits, along with the total current -// provisioned capacity levels you have calculated. +// * +// Report the account quotas for that Region returned by DescribeLimits, along with +// the total current provisioned capacity levels you have calculated. // -// This will let you see whether -// you are getting close to your account-level quotas. The per-table quotas apply -// only when you are creating a new table. They restrict the sum of the provisioned -// capacity of the new table itself and all its global secondary indexes. For -// existing tables and their GSIs, DynamoDB doesn't let you increase provisioned -// capacity extremely rapidly, but the only quota that applies is that the -// aggregate provisioned capacity over all your tables and GSIs cannot exceed -// either of the per-account quotas. DescribeLimits should only be called +// This will +// let you see whether you are getting close to your account-level quotas. The +// per-table quotas apply only when you are creating a new table. They restrict the +// sum of the provisioned capacity of the new table itself and all its global +// secondary indexes. For existing tables and their GSIs, DynamoDB doesn't let you +// increase provisioned capacity extremely rapidly, but the only quota that applies +// is that the aggregate provisioned capacity over all your tables and GSIs cannot +// exceed either of the per-account quotas. DescribeLimits should only be called // periodically. You can expect throttling errors if you call it more than once in // a minute. The DescribeLimits Request element has no content. func (c *Client) DescribeLimits(ctx context.Context, params *DescribeLimitsInput, optFns ...func(*Options)) (*DescribeLimitsOutput, error) { diff --git a/service/dynamodb/api_op_ExecuteStatement.go b/service/dynamodb/api_op_ExecuteStatement.go index 9d276b4d753..db090cfc92a 100644 --- a/service/dynamodb/api_op_ExecuteStatement.go +++ b/service/dynamodb/api_op_ExecuteStatement.go @@ -51,7 +51,7 @@ type ExecuteStatementInput struct { type ExecuteStatementOutput struct { - // If a read operation was used, this property will contain the result of the reade + // If a read operation was used, this property will contain the result of the read // operation; a map of attribute names and their values. For the write operations // this value will be empty. Items []map[string]types.AttributeValue diff --git a/service/dynamodb/api_op_ExecuteTransaction.go b/service/dynamodb/api_op_ExecuteTransaction.go index 831de39d1b7..935b4393f8c 100644 --- a/service/dynamodb/api_op_ExecuteTransaction.go +++ b/service/dynamodb/api_op_ExecuteTransaction.go @@ -13,7 +13,13 @@ import ( ) // This operation allows you to perform transactional reads or writes on data -// stored in DynamoDB, using PartiQL. +// stored in DynamoDB, using PartiQL. The entire transaction must consist of either +// read statements or write statements, you cannot mix both in one transaction. The +// EXISTS function is an exception and can be used to check the condition of +// specific attributes of the item in a similar manner to ConditionCheck in the +// TransactWriteItems +// (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html#transaction-apis-txwriteitems) +// API. func (c *Client) ExecuteTransaction(ctx context.Context, params *ExecuteTransactionInput, optFns ...func(*Options)) (*ExecuteTransactionOutput, error) { if params == nil { params = &ExecuteTransactionInput{} diff --git a/service/dynamodb/api_op_ExportTableToPointInTime.go b/service/dynamodb/api_op_ExportTableToPointInTime.go index 1e29b39b19a..2462b3d72b6 100644 --- a/service/dynamodb/api_op_ExportTableToPointInTime.go +++ b/service/dynamodb/api_op_ExportTableToPointInTime.go @@ -62,7 +62,8 @@ type ExportTableToPointInTimeInput struct { // snapshot of the table's state at this point in time. ExportTime *time.Time - // The ID of the AWS account that owns the bucket the export will be stored in. + // The ID of the Amazon Web Services account that owns the bucket the export will + // be stored in. S3BucketOwner *string // The Amazon S3 bucket prefix to use as the file name and path of the exported @@ -75,11 +76,11 @@ type ExportTableToPointInTimeInput struct { // * AES256 - server-side encryption with Amazon S3 // managed keys // - // * KMS - server-side encryption with AWS KMS managed keys + // * KMS - server-side encryption with KMS managed keys S3SseAlgorithm types.S3SseAlgorithm - // The ID of the AWS KMS managed key used to encrypt the S3 bucket where export - // data will be stored (if applicable). + // The ID of the KMS managed key used to encrypt the S3 bucket where export data + // will be stored (if applicable). S3SseKmsKeyId *string noSmithyDocumentSerde diff --git a/service/dynamodb/api_op_ListBackups.go b/service/dynamodb/api_op_ListBackups.go index a85cf6ce3f7..7a72341d760 100644 --- a/service/dynamodb/api_op_ListBackups.go +++ b/service/dynamodb/api_op_ListBackups.go @@ -14,13 +14,13 @@ import ( "time" ) -// List backups associated with an AWS account. To list backups for a given table, -// specify TableName. ListBackups returns a paginated list of results with at most -// 1 MB worth of items in a page. You can also specify a maximum number of entries -// to be returned in a page. In the request, start time is inclusive, but end time -// is exclusive. Note that these boundaries are for the time at which the original -// backup was requested. You can call ListBackups a maximum of five times per -// second. +// List backups associated with an Amazon Web Services account. To list backups for +// a given table, specify TableName. ListBackups returns a paginated list of +// results with at most 1 MB worth of items in a page. You can also specify a +// maximum number of entries to be returned in a page. In the request, start time +// is inclusive, but end time is exclusive. Note that these boundaries are for the +// time at which the original backup was requested. You can call ListBackups a +// maximum of five times per second. func (c *Client) ListBackups(ctx context.Context, params *ListBackupsInput, optFns ...func(*Options)) (*ListBackupsOutput, error) { if params == nil { params = &ListBackupsInput{} diff --git a/service/dynamodb/api_op_PutItem.go b/service/dynamodb/api_op_PutItem.go index 2f38b7f1637..de33e1664da 100644 --- a/service/dynamodb/api_op_PutItem.go +++ b/service/dynamodb/api_op_PutItem.go @@ -20,42 +20,42 @@ import ( // exist), or replace an existing item if it has certain attribute values. You can // return the item's attribute values in the same operation, using the ReturnValues // parameter. This topic provides general information about the PutItem API. For -// information on how to call the PutItem API using the AWS SDK in specific -// languages, see the following: +// information on how to call the PutItem API using the Amazon Web Services SDK in +// specific languages, see the following: // -// * PutItem in the AWS Command Line Interface +// * PutItem in the Command Line Interface // (http://docs.aws.amazon.com/goto/aws-cli/dynamodb-2012-08-10/PutItem) // // * PutItem -// in the AWS SDK for .NET +// in the SDK for .NET // (http://docs.aws.amazon.com/goto/DotNetSDKV3/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for C++ +// PutItem in the SDK for C++ // (http://docs.aws.amazon.com/goto/SdkForCpp/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for Go +// PutItem in the SDK for Go // (http://docs.aws.amazon.com/goto/SdkForGoV1/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for Java +// PutItem in the SDK for Java // (http://docs.aws.amazon.com/goto/SdkForJava/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for JavaScript +// PutItem in the SDK for JavaScript // (http://docs.aws.amazon.com/goto/AWSJavaScriptSDK/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for PHP V3 +// PutItem in the SDK for PHP V3 // (http://docs.aws.amazon.com/goto/SdkForPHPV3/dynamodb-2012-08-10/PutItem) // // * -// PutItem in the AWS SDK for Python +// PutItem in the SDK for Python (Boto) // (http://docs.aws.amazon.com/goto/boto3/dynamodb-2012-08-10/PutItem) // // * PutItem -// in the AWS SDK for Ruby V2 +// in the SDK for Ruby V2 // (http://docs.aws.amazon.com/goto/SdkForRubyV2/dynamodb-2012-08-10/PutItem) // // When @@ -233,9 +233,9 @@ type PutItemInput struct { // - If PutItem overwrote an attribute name-value pair, then the content of the old // item is returned. // - // The ReturnValues parameter is used by several DynamoDB - // operations; however, PutItem does not recognize any values other than NONE or - // ALL_OLD. + // The values returned are strongly consistent. The ReturnValues + // parameter is used by several DynamoDB operations; however, PutItem does not + // recognize any values other than NONE or ALL_OLD. ReturnValues types.ReturnValue noSmithyDocumentSerde diff --git a/service/dynamodb/api_op_Query.go b/service/dynamodb/api_op_Query.go index 952b5117d1b..44f25214169 100644 --- a/service/dynamodb/api_op_Query.go +++ b/service/dynamodb/api_op_Query.go @@ -13,27 +13,28 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// The Query operation finds items based on primary key values. You can query any -// table or secondary index that has a composite primary key (a partition key and a -// sort key). Use the KeyConditionExpression parameter to provide a specific value -// for the partition key. The Query operation will return all of the items from the -// table or index with that partition key value. You can optionally narrow the -// scope of the Query operation by specifying a sort key value and a comparison -// operator in KeyConditionExpression. To further refine the Query results, you can -// optionally provide a FilterExpression. A FilterExpression determines which items -// within the results should be returned to you. All of the other results are -// discarded. A Query operation always returns a result set. If no matching items -// are found, the result set will be empty. Queries that do not return results -// consume the minimum number of read capacity units for that type of read -// operation. DynamoDB calculates the number of read capacity units consumed based -// on item size, not on the amount of data that is returned to an application. The -// number of capacity units consumed will be the same whether you request all of -// the attributes (the default behavior) or just some of them (using a projection -// expression). The number will also be the same whether or not you use a -// FilterExpression. Query results are always sorted by the sort key value. If the -// data type of the sort key is Number, the results are returned in numeric order; -// otherwise, the results are returned in order of UTF-8 bytes. By default, the -// sort order is ascending. To reverse the order, set the ScanIndexForward +// You must provide the name of the partition key attribute and a single value for +// that attribute. Query returns all items with that partition key value. +// Optionally, you can provide a sort key attribute and use a comparison operator +// to refine the search results. Use the KeyConditionExpression parameter to +// provide a specific value for the partition key. The Query operation will return +// all of the items from the table or index with that partition key value. You can +// optionally narrow the scope of the Query operation by specifying a sort key +// value and a comparison operator in KeyConditionExpression. To further refine the +// Query results, you can optionally provide a FilterExpression. A FilterExpression +// determines which items within the results should be returned to you. All of the +// other results are discarded. A Query operation always returns a result set. If +// no matching items are found, the result set will be empty. Queries that do not +// return results consume the minimum number of read capacity units for that type +// of read operation. DynamoDB calculates the number of read capacity units +// consumed based on item size, not on the amount of data that is returned to an +// application. The number of capacity units consumed will be the same whether you +// request all of the attributes (the default behavior) or just some of them (using +// a projection expression). The number will also be the same whether or not you +// use a FilterExpression. Query results are always sorted by the sort key value. +// If the data type of the sort key is Number, the results are returned in numeric +// order; otherwise, the results are returned in order of UTF-8 bytes. By default, +// the sort order is ascending. To reverse the order, set the ScanIndexForward // parameter to false. A single Query operation will read up to the maximum number // of items set (if using the Limit parameter) or a maximum of 1 MB of data and // then apply any filtering to the results using FilterExpression. If diff --git a/service/dynamodb/api_op_TransactGetItems.go b/service/dynamodb/api_op_TransactGetItems.go index 27aec6d83f1..aef58b6e722 100644 --- a/service/dynamodb/api_op_TransactGetItems.go +++ b/service/dynamodb/api_op_TransactGetItems.go @@ -18,21 +18,21 @@ import ( // Region. A TransactGetItems call can contain up to 25 TransactGetItem objects, // each of which contains a Get structure that specifies an item to retrieve from a // table in the account and Region. A call to TransactGetItems cannot retrieve -// items from tables in more than one AWS account or Region. The aggregate size of -// the items in the transaction cannot exceed 4 MB. DynamoDB rejects the entire -// TransactGetItems request if any of the following is true: +// items from tables in more than one Amazon Web Services account or Region. The +// aggregate size of the items in the transaction cannot exceed 4 MB. DynamoDB +// rejects the entire TransactGetItems request if any of the following is true: // -// * A conflicting -// operation is in the process of updating an item to be read. +// * +// A conflicting operation is in the process of updating an item to be read. // -// * There is -// insufficient provisioned capacity for the transaction to be completed. +// * +// There is insufficient provisioned capacity for the transaction to be +// completed. // -// * There -// is a user error, such as an invalid data format. +// * There is a user error, such as an invalid data format. // -// * The aggregate size of the -// items in the transaction cannot exceed 4 MB. +// * The +// aggregate size of the items in the transaction cannot exceed 4 MB. func (c *Client) TransactGetItems(ctx context.Context, params *TransactGetItemsInput, optFns ...func(*Options)) (*TransactGetItemsOutput, error) { if params == nil { params = &TransactGetItemsInput{} diff --git a/service/dynamodb/api_op_TransactWriteItems.go b/service/dynamodb/api_op_TransactWriteItems.go index 99bb26f7185..fa1b03a1e3c 100644 --- a/service/dynamodb/api_op_TransactWriteItems.go +++ b/service/dynamodb/api_op_TransactWriteItems.go @@ -15,61 +15,61 @@ import ( // TransactWriteItems is a synchronous write operation that groups up to 25 action // requests. These actions can target items in different tables, but not in -// different AWS accounts or Regions, and no two actions can target the same item. -// For example, you cannot both ConditionCheck and Update the same item. The -// aggregate size of the items in the transaction cannot exceed 4 MB. The actions -// are completed atomically so that either all of them succeed, or all of them -// fail. They are defined by the following objects: +// different Amazon Web Services accounts or Regions, and no two actions can target +// the same item. For example, you cannot both ConditionCheck and Update the same +// item. The aggregate size of the items in the transaction cannot exceed 4 MB. The +// actions are completed atomically so that either all of them succeed, or all of +// them fail. They are defined by the following objects: // -// * Put — Initiates a PutItem -// operation to write a new item. This structure specifies the primary key of the -// item to be written, the name of the table to write it in, an optional condition -// expression that must be satisfied for the write to succeed, a list of the item's -// attributes, and a field indicating whether to retrieve the item's attributes if -// the condition is not met. +// * Put — Initiates a +// PutItem operation to write a new item. This structure specifies the primary key +// of the item to be written, the name of the table to write it in, an optional +// condition expression that must be satisfied for the write to succeed, a list of +// the item's attributes, and a field indicating whether to retrieve the item's +// attributes if the condition is not met. // -// * Update — Initiates an UpdateItem operation to -// update an existing item. This structure specifies the primary key of the item to -// be updated, the name of the table where it resides, an optional condition -// expression that must be satisfied for the update to succeed, an expression that -// defines one or more attributes to be updated, and a field indicating whether to -// retrieve the item's attributes if the condition is not met. +// * Update — Initiates an UpdateItem +// operation to update an existing item. This structure specifies the primary key +// of the item to be updated, the name of the table where it resides, an optional +// condition expression that must be satisfied for the update to succeed, an +// expression that defines one or more attributes to be updated, and a field +// indicating whether to retrieve the item's attributes if the condition is not +// met. // -// * Delete — -// Initiates a DeleteItem operation to delete an existing item. This structure -// specifies the primary key of the item to be deleted, the name of the table where -// it resides, an optional condition expression that must be satisfied for the -// deletion to succeed, and a field indicating whether to retrieve the item's -// attributes if the condition is not met. +// * Delete — Initiates a DeleteItem operation to delete an existing item. +// This structure specifies the primary key of the item to be deleted, the name of +// the table where it resides, an optional condition expression that must be +// satisfied for the deletion to succeed, and a field indicating whether to +// retrieve the item's attributes if the condition is not met. // -// * ConditionCheck — Applies a condition -// to an item that is not being modified by the transaction. This structure -// specifies the primary key of the item to be checked, the name of the table where -// it resides, a condition expression that must be satisfied for the transaction to -// succeed, and a field indicating whether to retrieve the item's attributes if the -// condition is not met. +// * ConditionCheck — +// Applies a condition to an item that is not being modified by the transaction. +// This structure specifies the primary key of the item to be checked, the name of +// the table where it resides, a condition expression that must be satisfied for +// the transaction to succeed, and a field indicating whether to retrieve the +// item's attributes if the condition is not met. // -// DynamoDB rejects the entire TransactWriteItems request if -// any of the following is true: +// DynamoDB rejects the entire +// TransactWriteItems request if any of the following is true: // -// * A condition in one of the condition expressions -// is not met. +// * A condition in +// one of the condition expressions is not met. // -// * An ongoing operation is in the process of updating the same -// item. +// * An ongoing operation is in the +// process of updating the same item. // -// * There is insufficient provisioned capacity for the transaction to be -// completed. +// * There is insufficient provisioned capacity +// for the transaction to be completed. // -// * An item size becomes too large (bigger than 400 KB), a local -// secondary index (LSI) becomes too large, or a similar validation error occurs -// because of changes made by the transaction. +// * An item size becomes too large (bigger +// than 400 KB), a local secondary index (LSI) becomes too large, or a similar +// validation error occurs because of changes made by the transaction. // -// * The aggregate size of the items -// in the transaction exceeds 4 MB. +// * The +// aggregate size of the items in the transaction exceeds 4 MB. // -// * There is a user error, such as an invalid -// data format. +// * There is a user +// error, such as an invalid data format. func (c *Client) TransactWriteItems(ctx context.Context, params *TransactWriteItemsInput, optFns ...func(*Options)) (*TransactWriteItemsOutput, error) { if params == nil { params = &TransactWriteItemsInput{} @@ -89,8 +89,8 @@ type TransactWriteItemsInput struct { // An ordered array of up to 25 TransactWriteItem objects, each of which contains a // ConditionCheck, Put, Update, or Delete object. These can operate on items in - // different tables, but the tables must reside in the same AWS account and Region, - // and no two of them can operate on the same item. + // different tables, but the tables must reside in the same Amazon Web Services + // account and Region, and no two of them can operate on the same item. // // This member is required. TransactItems []types.TransactWriteItem diff --git a/service/dynamodb/api_op_UpdateContributorInsights.go b/service/dynamodb/api_op_UpdateContributorInsights.go index 1f02d913cc1..c7f8eebaf30 100644 --- a/service/dynamodb/api_op_UpdateContributorInsights.go +++ b/service/dynamodb/api_op_UpdateContributorInsights.go @@ -12,6 +12,12 @@ import ( ) // Updates the status for contributor insights for a specific table or index. +// CloudWatch Contributor Insights for DynamoDB graphs display the partition key +// and (if applicable) sort key of frequently accessed items and frequently +// throttled items in plaintext. If you require the use of AWS Key Management +// Service (KMS) to encrypt this table’s partition key and sort key data with an +// AWS managed key or customer managed key, you should not enable CloudWatch +// Contributor Insights for DynamoDB for this table. func (c *Client) UpdateContributorInsights(ctx context.Context, params *UpdateContributorInsightsInput, optFns ...func(*Options)) (*UpdateContributorInsightsOutput, error) { if params == nil { params = &UpdateContributorInsightsInput{} diff --git a/service/dynamodb/doc.go b/service/dynamodb/doc.go index 9d952b0034d..45ddcae39bd 100644 --- a/service/dynamodb/doc.go +++ b/service/dynamodb/doc.go @@ -11,11 +11,11 @@ // cluster scaling. With DynamoDB, you can create database tables that can store // and retrieve any amount of data, and serve any level of request traffic. You can // scale up or scale down your tables' throughput capacity without downtime or -// performance degradation, and use the AWS Management Console to monitor resource -// utilization and performance metrics. DynamoDB automatically spreads the data and -// traffic for your tables over a sufficient number of servers to handle your -// throughput and storage requirements, while maintaining consistent and fast -// performance. All of your data is stored on solid state disks (SSDs) and -// automatically replicated across multiple Availability Zones in an AWS region, -// providing built-in high availability and data durability. +// performance degradation, and use the Amazon Web Services Management Console to +// monitor resource utilization and performance metrics. DynamoDB automatically +// spreads the data and traffic for your tables over a sufficient number of servers +// to handle your throughput and storage requirements, while maintaining consistent +// and fast performance. All of your data is stored on solid state disks (SSDs) and +// automatically replicated across multiple Availability Zones in an Amazon Web +// Services Region, providing built-in high availability and data durability. package dynamodb diff --git a/service/dynamodb/types/errors.go b/service/dynamodb/types/errors.go index e6609e0ad8c..f20bcbe8950 100644 --- a/service/dynamodb/types/errors.go +++ b/service/dynamodb/types/errors.go @@ -380,11 +380,11 @@ func (e *PointInTimeRecoveryUnavailableException) ErrorFault() smithy.ErrorFault return smithy.FaultClient } -// Your request rate is too high. The AWS SDKs for DynamoDB automatically retry -// requests that receive this exception. Your request is eventually successful, -// unless your retry queue is too large to finish. Reduce the frequency of requests -// and use exponential backoff. For more information, go to Error Retries and -// Exponential Backoff +// Your request rate is too high. The Amazon Web Services SDKs for DynamoDB +// automatically retry requests that receive this exception. Your request is +// eventually successful, unless your retry queue is too large to finish. Reduce +// the frequency of requests and use exponential backoff. For more information, go +// to Error Retries and Exponential Backoff // (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.RetryAndBackoff) // in the Amazon DynamoDB Developer Guide. type ProvisionedThroughputExceededException struct { @@ -448,7 +448,7 @@ func (e *ReplicaNotFoundException) ErrorCode() string { return "Repl func (e *ReplicaNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } // Throughput exceeds the current throughput quota for your account. Please contact -// AWS Support at AWS Support (https://aws.amazon.com/support) to request a quota +// Amazon Web Services Support (https://aws.amazon.com/support) to request a quota // increase. type RequestLimitExceeded struct { Message *string diff --git a/service/dynamodb/types/types.go b/service/dynamodb/types/types.go index 56ccffe67bf..2cf6a5f6c6b 100644 --- a/service/dynamodb/types/types.go +++ b/service/dynamodb/types/types.go @@ -23,8 +23,8 @@ type ArchivalSummary struct { // is: // // * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The table was archived due to the - // table's AWS KMS key being inaccessible for more than seven days. An On-Demand - // backup was created at the archival time. + // table's KMS key being inaccessible for more than seven days. An On-Demand backup + // was created at the archival time. ArchivalReason *string noSmithyDocumentSerde @@ -451,7 +451,7 @@ type BackupDetails struct { // state it was in just before the point of deletion. // // * AWS_BACKUP - On-demand - // backup created by you from AWS Backup service. + // backup created by you from Backup service. // // This member is required. BackupType BackupType @@ -499,7 +499,7 @@ type BackupSummary struct { // state it was in just before the point of deletion. // // * AWS_BACKUP - On-demand - // backup created by you from AWS Backup service. + // backup created by you from Backup service. BackupType BackupType // ARN associated with the table. @@ -907,11 +907,10 @@ type CreateReplicationGroupMemberAction struct { // Replica-specific global secondary index settings. GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndex - // The AWS KMS customer master key (CMK) that should be used for AWS KMS encryption - // in the new replica. To specify a CMK, use its key ID, Amazon Resource Name - // (ARN), alias name, or alias ARN. Note that you should only provide this - // parameter if the key is different from the default DynamoDB KMS master key - // alias/aws/dynamodb. + // The KMS key that should be used for KMS encryption in the new replica. To + // specify a key, use its key ID, Amazon Resource Name (ARN), alias name, or alias + // ARN. Note that you should only provide this parameter if the key is different + // from the default DynamoDB KMS key alias/aws/dynamodb. KMSMasterKeyId *string // Replica-specific provisioned throughput. If not specified, uses the source @@ -1238,7 +1237,8 @@ type ExportDescription struct { // The name of the Amazon S3 bucket containing the export. S3Bucket *string - // The ID of the AWS account that owns the bucket containing the export. + // The ID of the Amazon Web Services account that owns the bucket containing the + // export. S3BucketOwner *string // The Amazon S3 bucket prefix used as the file name and path of the exported @@ -1251,11 +1251,11 @@ type ExportDescription struct { // * AES256 - server-side encryption with Amazon S3 // managed keys // - // * KMS - server-side encryption with AWS KMS managed keys + // * KMS - server-side encryption with KMS managed keys S3SseAlgorithm S3SseAlgorithm - // The ID of the AWS KMS managed key used to encrypt the S3 bucket where export - // data is stored (if applicable). + // The ID of the KMS managed key used to encrypt the S3 bucket where export data is + // stored (if applicable). S3SseKmsKeyId *string // The time at which the export task began. @@ -2129,8 +2129,7 @@ type ReplicaDescription struct { // Replica-specific global secondary index settings. GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndexDescription - // The AWS KMS customer master key (CMK) of the replica that will be used for AWS - // KMS encryption. + // The KMS key of the replica that will be used for KMS encryption. KMSMasterKeyId *string // Replica-specific provisioned throughput. If not described, uses the source @@ -2157,16 +2156,16 @@ type ReplicaDescription struct { // * ACTIVE - The replica is ready for use. // // * REGION_DISABLED - The - // replica is inaccessible because the AWS Region has been disabled. If the AWS - // Region remains inaccessible for more than 20 hours, DynamoDB will remove this - // replica from the replication group. The replica will not be deleted and - // replication will stop from and to this region. - // - // * - // INACCESSIBLE_ENCRYPTION_CREDENTIALS - The AWS KMS key used to encrypt the table - // is inaccessible. If the AWS KMS key remains inaccessible for more than 20 hours, - // DynamoDB will remove this replica from the replication group. The replica will - // not be deleted and replication will stop from and to this region. + // replica is inaccessible because the Amazon Web Services Region has been + // disabled. If the Amazon Web Services Region remains inaccessible for more than + // 20 hours, DynamoDB will remove this replica from the replication group. The + // replica will not be deleted and replication will stop from and to this + // region. + // + // * INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt + // the table is inaccessible. If the KMS key remains inaccessible for more than 20 + // hours, DynamoDB will remove this replica from the replication group. The replica + // will not be deleted and replication will stop from and to this region. ReplicaStatus ReplicaStatus // Detailed information about the replica status. @@ -2539,20 +2538,20 @@ type SourceTableFeatureDetails struct { type SSEDescription struct { // Indicates the time, in UNIX epoch date format, when DynamoDB detected that the - // table's AWS KMS key was inaccessible. This attribute will automatically be - // cleared when DynamoDB detects that the table's AWS KMS key is accessible again. - // DynamoDB will initiate the table archival process when table's AWS KMS key - // remains inaccessible for more than seven days from this date. + // table's KMS key was inaccessible. This attribute will automatically be cleared + // when DynamoDB detects that the table's KMS key is accessible again. DynamoDB + // will initiate the table archival process when table's KMS key remains + // inaccessible for more than seven days from this date. InaccessibleEncryptionDateTime *time.Time - // The AWS KMS customer master key (CMK) ARN used for the AWS KMS encryption. + // The KMS key ARN used for the KMS encryption. KMSMasterKeyArn *string // Server-side encryption type. The only supported value is: // // * KMS - Server-side - // encryption that uses AWS Key Management Service. The key is stored in your - // account and is managed by AWS KMS (AWS KMS charges apply). + // encryption that uses Key Management Service. The key is stored in your account + // and is managed by KMS (KMS charges apply). SSEType SSEType // Represents the current state of server-side encryption. The only supported @@ -2570,23 +2569,24 @@ type SSEDescription struct { // Represents the settings used to enable server-side encryption. type SSESpecification struct { - // Indicates whether server-side encryption is done using an AWS managed CMK or an - // AWS owned CMK. If enabled (true), server-side encryption type is set to KMS and - // an AWS managed CMK is used (AWS KMS charges apply). If disabled (false) or not - // specified, server-side encryption is set to AWS owned CMK. + // Indicates whether server-side encryption is done using an Amazon Web Services + // managed key or an Amazon Web Services owned key. If enabled (true), server-side + // encryption type is set to KMS and an Amazon Web Services managed key is used + // (KMS charges apply). If disabled (false) or not specified, server-side + // encryption is set to Amazon Web Services owned key. Enabled *bool - // The AWS KMS customer master key (CMK) that should be used for the AWS KMS - // encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias - // name, or alias ARN. Note that you should only provide this parameter if the key - // is different from the default DynamoDB customer master key alias/aws/dynamodb. + // The KMS key that should be used for the KMS encryption. To specify a key, use + // its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note that you + // should only provide this parameter if the key is different from the default + // DynamoDB key alias/aws/dynamodb. KMSMasterKeyId *string // Server-side encryption type. The only supported value is: // // * KMS - Server-side - // encryption that uses AWS Key Management Service. The key is stored in your - // account and is managed by AWS KMS (AWS KMS charges apply). + // encryption that uses Key Management Service. The key is stored in your account + // and is managed by KMS (KMS charges apply). SSEType SSEType noSmithyDocumentSerde @@ -2747,7 +2747,7 @@ type TableDescription struct { // Represents the version of global tables // (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html) - // in use, if the table is replicated across AWS Regions. + // in use, if the table is replicated across Amazon Web Services Regions. GlobalTableVersion *string // The number of items in the specified table. DynamoDB updates this value @@ -2790,10 +2790,10 @@ type TableDescription struct { // from another table might have the same timestamp. However, the combination of // the following three elements is guaranteed to be unique: // - // * AWS customer ID + // * Amazon Web Services + // customer ID // - // * - // Table name + // * Table name // // * StreamLabel LatestStreamLabel *string @@ -2891,29 +2891,28 @@ type TableDescription struct { // * ACTIVE - The table is ready for use. // // * - // INACCESSIBLE_ENCRYPTION_CREDENTIALS - The AWS KMS key used to encrypt the table - // in inaccessible. Table operations may fail due to failure to use the AWS KMS - // key. DynamoDB will initiate the table archival process when a table's AWS KMS - // key remains inaccessible for more than seven days. + // INACCESSIBLE_ENCRYPTION_CREDENTIALS - The KMS key used to encrypt the table in + // inaccessible. Table operations may fail due to failure to use the KMS key. + // DynamoDB will initiate the table archival process when a table's KMS key remains + // inaccessible for more than seven days. // - // * ARCHIVING - The table is - // being archived. Operations are not allowed until archival is complete. + // * ARCHIVING - The table is being + // archived. Operations are not allowed until archival is complete. // - // * - // ARCHIVED - The table has been archived. See the ArchivalReason for more - // information. + // * ARCHIVED - + // The table has been archived. See the ArchivalReason for more information. TableStatus TableStatus noSmithyDocumentSerde } // Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a -// single DynamoDB table. AWS-assigned tag names and values are automatically -// assigned the aws: prefix, which the user cannot assign. AWS-assigned tag names -// do not count towards the tag limit of 50. User-assigned tag names have the -// prefix user: in the Cost Allocation Report. You cannot backdate the application -// of a tag. For an overview on tagging DynamoDB resources, see Tagging for -// DynamoDB +// single DynamoDB table. Amazon Web Services-assigned tag names and values are +// automatically assigned the aws: prefix, which the user cannot assign. Amazon Web +// Services-assigned tag names do not count towards the tag limit of 50. +// User-assigned tag names have the prefix user: in the Cost Allocation Report. You +// cannot backdate the application of a tag. For an overview on tagging DynamoDB +// resources, see Tagging for DynamoDB // (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) // in the Amazon DynamoDB Developer Guide. type Tag struct { @@ -3064,11 +3063,10 @@ type UpdateReplicationGroupMemberAction struct { // Replica-specific global secondary index settings. GlobalSecondaryIndexes []ReplicaGlobalSecondaryIndex - // The AWS KMS customer master key (CMK) of the replica that should be used for AWS - // KMS encryption. To specify a CMK, use its key ID, Amazon Resource Name (ARN), - // alias name, or alias ARN. Note that you should only provide this parameter if - // the key is different from the default DynamoDB KMS master key - // alias/aws/dynamodb. + // The KMS key of the replica that should be used for KMS encryption. To specify a + // key, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. Note + // that you should only provide this parameter if the key is different from the + // default DynamoDB KMS key alias/aws/dynamodb. KMSMasterKeyId *string // Replica-specific provisioned throughput. If not specified, uses the source diff --git a/service/ec2/api_op_CreateRoute.go b/service/ec2/api_op_CreateRoute.go index 9ade8de0418..6bfbfba0180 100644 --- a/service/ec2/api_op_CreateRoute.go +++ b/service/ec2/api_op_CreateRoute.go @@ -55,6 +55,8 @@ type CreateRouteInput struct { // contains a subnet which is associated with a Wavelength Zone. CarrierGatewayId *string + CoreNetworkArn *string + // The IPv4 CIDR address block used for the destination match. Routing decisions // are based on the most specific match. We modify the specified CIDR block to its // canonical form; for example, if you specify 100.68.0.18/18, we modify it to diff --git a/service/ec2/api_op_ReplaceRoute.go b/service/ec2/api_op_ReplaceRoute.go index b79dba3eed3..7d0647f78ec 100644 --- a/service/ec2/api_op_ReplaceRoute.go +++ b/service/ec2/api_op_ReplaceRoute.go @@ -41,6 +41,8 @@ type ReplaceRouteInput struct { // [IPv4 traffic only] The ID of a carrier gateway. CarrierGatewayId *string + CoreNetworkArn *string + // The IPv4 CIDR address block used for the destination match. The value that you // provide must match the CIDR of an existing route in the table. DestinationCidrBlock *string diff --git a/service/ec2/deserializers.go b/service/ec2/deserializers.go index 29b8afcf926..c6a3325cbac 100644 --- a/service/ec2/deserializers.go +++ b/service/ec2/deserializers.go @@ -58925,6 +58925,23 @@ func awsEc2query_deserializeDocumentFleetSpotCapacityRebalance(v **types.FleetSp sv.ReplacementStrategy = types.FleetReplacementStrategy(xtv) } + case strings.EqualFold("terminationDelay", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + i64, err := strconv.ParseInt(xtv, 10, 64) + if err != nil { + return err + } + sv.TerminationDelay = ptr.Int32(int32(i64)) + } + default: // Do nothing and ignore the unexpected tag element err = decoder.Decoder.Skip() @@ -67045,6 +67062,19 @@ func awsEc2query_deserializeDocumentInstanceNetworkInterfaceAssociation(v **type sv.CarrierIp = ptr.String(xtv) } + case strings.EqualFold("customerOwnedIp", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.CustomerOwnedIp = ptr.String(xtv) + } + case strings.EqualFold("ipOwnerId", t.Name.Local): val, err := decoder.Value() if err != nil { @@ -88007,6 +88037,19 @@ func awsEc2query_deserializeDocumentRoute(v **types.Route, decoder smithyxml.Nod sv.CarrierGatewayId = ptr.String(xtv) } + case strings.EqualFold("coreNetworkArn", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.CoreNetworkArn = ptr.String(xtv) + } + case strings.EqualFold("destinationCidrBlock", t.Name.Local): val, err := decoder.Value() if err != nil { @@ -91886,6 +91929,23 @@ func awsEc2query_deserializeDocumentSpotCapacityRebalance(v **types.SpotCapacity sv.ReplacementStrategy = types.ReplacementStrategy(xtv) } + case strings.EqualFold("terminationDelay", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + i64, err := strconv.ParseInt(xtv, 10, 64) + if err != nil { + return err + } + sv.TerminationDelay = ptr.Int32(int32(i64)) + } + default: // Do nothing and ignore the unexpected tag element err = decoder.Decoder.Skip() @@ -107848,7 +107908,7 @@ func awsEc2query_deserializeDocumentVpnConnection(v **types.VpnConnection, decod } { xtv := string(val) - sv.GatewayAssociationState = ptr.String(xtv) + sv.GatewayAssociationState = types.GatewayAssociationState(xtv) } case strings.EqualFold("options", t.Name.Local): diff --git a/service/ec2/serializers.go b/service/ec2/serializers.go index dc045fb8d7c..7ef44c1e1dc 100644 --- a/service/ec2/serializers.go +++ b/service/ec2/serializers.go @@ -31924,6 +31924,11 @@ func awsEc2query_serializeDocumentFleetSpotCapacityRebalanceRequest(v *types.Fle objectKey.String(string(v.ReplacementStrategy)) } + if v.TerminationDelay != nil { + objectKey := object.Key("TerminationDelay") + objectKey.Integer(*v.TerminationDelay) + } + return nil } @@ -36910,6 +36915,11 @@ func awsEc2query_serializeDocumentSpotCapacityRebalance(v *types.SpotCapacityReb objectKey.String(string(v.ReplacementStrategy)) } + if v.TerminationDelay != nil { + objectKey := object.Key("TerminationDelay") + objectKey.Integer(*v.TerminationDelay) + } + return nil } @@ -41299,6 +41309,11 @@ func awsEc2query_serializeOpDocumentCreateRouteInput(v *CreateRouteInput, value objectKey.String(*v.CarrierGatewayId) } + if v.CoreNetworkArn != nil { + objectKey := object.Key("CoreNetworkArn") + objectKey.String(*v.CoreNetworkArn) + } + if v.DestinationCidrBlock != nil { objectKey := object.Key("DestinationCidrBlock") objectKey.String(*v.DestinationCidrBlock) @@ -52206,6 +52221,11 @@ func awsEc2query_serializeOpDocumentReplaceRouteInput(v *ReplaceRouteInput, valu objectKey.String(*v.CarrierGatewayId) } + if v.CoreNetworkArn != nil { + objectKey := object.Key("CoreNetworkArn") + objectKey.String(*v.CoreNetworkArn) + } + if v.DestinationCidrBlock != nil { objectKey := object.Key("DestinationCidrBlock") objectKey.String(*v.DestinationCidrBlock) diff --git a/service/ec2/types/enums.go b/service/ec2/types/enums.go index 46fb514caac..e5337582fc0 100644 --- a/service/ec2/types/enums.go +++ b/service/ec2/types/enums.go @@ -1786,7 +1786,8 @@ type FleetReplacementStrategy string // Enum values for FleetReplacementStrategy const ( - FleetReplacementStrategyLaunch FleetReplacementStrategy = "launch" + FleetReplacementStrategyLaunch FleetReplacementStrategy = "launch" + FleetReplacementStrategyLaunchBeforeTerminate FleetReplacementStrategy = "launch-before-terminate" ) // Values returns all known values for FleetReplacementStrategy. Note that this can @@ -1795,6 +1796,7 @@ const ( func (FleetReplacementStrategy) Values() []FleetReplacementStrategy { return []FleetReplacementStrategy{ "launch", + "launch-before-terminate", } } @@ -1910,6 +1912,28 @@ func (FpgaImageStateCode) Values() []FpgaImageStateCode { } } +type GatewayAssociationState string + +// Enum values for GatewayAssociationState +const ( + GatewayAssociationStateAssociated GatewayAssociationState = "associated" + GatewayAssociationStateNotAssociated GatewayAssociationState = "not-associated" + GatewayAssociationStateAssociating GatewayAssociationState = "associating" + GatewayAssociationStateDisassociating GatewayAssociationState = "disassociating" +) + +// Values returns all known values for GatewayAssociationState. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (GatewayAssociationState) Values() []GatewayAssociationState { + return []GatewayAssociationState{ + "associated", + "not-associated", + "associating", + "disassociating", + } +} + type GatewayType string // Enum values for GatewayType @@ -4202,7 +4226,8 @@ type ReplacementStrategy string // Enum values for ReplacementStrategy const ( - ReplacementStrategyLaunch ReplacementStrategy = "launch" + ReplacementStrategyLaunch ReplacementStrategy = "launch" + ReplacementStrategyLaunchBeforeTerminate ReplacementStrategy = "launch-before-terminate" ) // Values returns all known values for ReplacementStrategy. Note that this can be @@ -4211,6 +4236,7 @@ const ( func (ReplacementStrategy) Values() []ReplacementStrategy { return []ReplacementStrategy{ "launch", + "launch-before-terminate", } } diff --git a/service/ec2/types/types.go b/service/ec2/types/types.go index 6f9683da2cb..3aba1129b35 100644 --- a/service/ec2/types/types.go +++ b/service/ec2/types/types.go @@ -3614,33 +3614,48 @@ type FleetLaunchTemplateSpecificationRequest struct { // an elevated risk of being interrupted. type FleetSpotCapacityRebalance struct { - // To allow EC2 Fleet to launch a replacement Spot Instance when an instance - // rebalance notification is emitted for an existing Spot Instance in the fleet, - // specify launch. Only available for fleets of type maintain. When a replacement - // instance is launched, the instance marked for rebalance is not automatically - // terminated. You can terminate it, or you can leave it running. You are charged - // for both instances while they are running. + // The replacement strategy to use. Only available for fleets of type maintain. + // launch - EC2 Fleet launches a new replacement Spot Instance when a rebalance + // notification is emitted for an existing Spot Instance in the fleet. EC2 Fleet + // does not terminate the instances that receive a rebalance notification. You can + // terminate the old instances, or you can leave them running. You are charged for + // all instances while they are running. launch-before-terminate - EC2 Fleet + // launches a new replacement Spot Instance when a rebalance notification is + // emitted for an existing Spot Instance in the fleet, and then, after a delay that + // you specify (in TerminationDelay), terminates the instances that received a + // rebalance notification. ReplacementStrategy FleetReplacementStrategy + // The amount of time (in seconds) that Amazon EC2 waits before terminating the old + // Spot Instance after launching a new replacement Spot Instance. + TerminationDelay *int32 + noSmithyDocumentSerde } -// The Spot Instance replacement strategy to use when Amazon EC2 emits a signal -// that your Spot Instance is at an elevated risk of being interrupted. For more -// information, see Capacity rebalancing +// The Spot Instance replacement strategy to use when Amazon EC2 emits a rebalance +// notification signal that your Spot Instance is at an elevated risk of being +// interrupted. For more information, see Capacity rebalancing // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-capacity-rebalance) // in the Amazon EC2 User Guide. type FleetSpotCapacityRebalanceRequest struct { - // The replacement strategy to use. Only available for fleets of type maintain. To - // allow EC2 Fleet to launch a replacement Spot Instance when an instance rebalance - // notification is emitted for an existing Spot Instance in the fleet, specify - // launch. You must specify a value, otherwise you get an error. When a replacement - // instance is launched, the instance marked for rebalance is not automatically - // terminated. You can terminate it, or you can leave it running. You are charged - // for all instances while they are running. + // The replacement strategy to use. Only available for fleets of type maintain. + // launch - EC2 Fleet launches a replacement Spot Instance when a rebalance + // notification is emitted for an existing Spot Instance in the fleet. EC2 Fleet + // does not terminate the instances that receive a rebalance notification. You can + // terminate the old instances, or you can leave them running. You are charged for + // all instances while they are running. launch-before-terminate - EC2 Fleet + // launches a replacement Spot Instance when a rebalance notification is emitted + // for an existing Spot Instance in the fleet, and then, after a delay that you + // specify (in TerminationDelay), terminates the instances that received a + // rebalance notification. ReplacementStrategy FleetReplacementStrategy + // The amount of time (in seconds) that Amazon EC2 waits before terminating the old + // Spot Instance after launching a new replacement Spot Instance. + TerminationDelay *int32 + noSmithyDocumentSerde } @@ -5266,6 +5281,9 @@ type InstanceNetworkInterfaceAssociation struct { // The carrier IP address associated with the network interface. CarrierIp *string + // The customer-owned IP address associated with the network interface. + CustomerOwnedIp *string + // The ID of the owner of the Elastic IP address. IpOwnerId *string @@ -10189,6 +10207,8 @@ type Route struct { // The ID of the carrier gateway. CarrierGatewayId *string + CoreNetworkArn *string + // The IPv4 CIDR block used for the destination match. DestinationCidrBlock *string @@ -11271,15 +11291,22 @@ type SnapshotTaskDetail struct { // in the Amazon EC2 User Guide for Linux Instances. type SpotCapacityRebalance struct { - // The replacement strategy to use. Only available for fleets of type maintain. You - // must specify a value, otherwise you get an error. To allow Spot Fleet to launch - // a replacement Spot Instance when an instance rebalance notification is emitted - // for a Spot Instance in the fleet, specify launch. When a replacement instance is - // launched, the instance marked for rebalance is not automatically terminated. You - // can terminate it, or you can leave it running. You are charged for all instances - // while they are running. + // The replacement strategy to use. Only available for fleets of type maintain. + // launch - Spot Fleet launches a new replacement Spot Instance when a rebalance + // notification is emitted for an existing Spot Instance in the fleet. Spot Fleet + // does not terminate the instances that receive a rebalance notification. You can + // terminate the old instances, or you can leave them running. You are charged for + // all instances while they are running. launch-before-terminate - Spot Fleet + // launches a new replacement Spot Instance when a rebalance notification is + // emitted for an existing Spot Instance in the fleet, and then, after a delay that + // you specify (in TerminationDelay), terminates the instances that received a + // rebalance notification. ReplacementStrategy ReplacementStrategy + // The amount of time (in seconds) that Amazon EC2 waits before terminating the old + // Spot Instance after launching a new replacement Spot Instance. + TerminationDelay *int32 + noSmithyDocumentSerde } @@ -14314,7 +14341,7 @@ type VpnConnection struct { CustomerGatewayId *string // The current state of the gateway association. - GatewayAssociationState *string + GatewayAssociationState GatewayAssociationState // The VPN connection options. Options *VpnConnectionOptions diff --git a/service/ecs/api_op_CreateCapacityProvider.go b/service/ecs/api_op_CreateCapacityProvider.go index 6082d045211..f3344b9c3a4 100644 --- a/service/ecs/api_op_CreateCapacityProvider.go +++ b/service/ecs/api_op_CreateCapacityProvider.go @@ -13,10 +13,10 @@ import ( // Creates a new capacity provider. Capacity providers are associated with an // Amazon ECS cluster and are used in capacity provider strategies to facilitate -// cluster auto scaling. Only capacity providers using an Auto Scaling group can be -// created. Amazon ECS tasks on Fargate use the FARGATE and FARGATE_SPOT capacity -// providers which are already created and available to all accounts in Regions -// supported by Fargate. +// cluster auto scaling. Only capacity providers that use an Auto Scaling group can +// be created. Amazon ECS tasks on Fargate use the FARGATE and FARGATE_SPOT +// capacity providers. These providers are available to all accounts in the Amazon +// Web Services Regions that Fargate supports. func (c *Client) CreateCapacityProvider(ctx context.Context, params *CreateCapacityProviderInput, optFns ...func(*Options)) (*CreateCapacityProviderOutput, error) { if params == nil { params = &CreateCapacityProviderInput{} @@ -39,33 +39,33 @@ type CreateCapacityProviderInput struct { // This member is required. AutoScalingGroupProvider *types.AutoScalingGroupProvider - // The name of the capacity provider. Up to 255 characters are allowed, including - // letters (upper and lowercase), numbers, underscores, and hyphens. The name - // cannot be prefixed with "aws", "ecs", or "fargate". + // The name of the capacity provider. Up to 255 characters are allowed. They + // include letters (both upper and lowercase letters), numbers, underscores (_), + // and hyphens (-). The name can't be prefixed with "aws", "ecs", or "fargate". // // This member is required. Name *string - // The metadata that you apply to the capacity provider to help you categorize and - // organize them. Each tag consists of a key and an optional value, both of which - // you define. The following basic restrictions apply to tags: + // The metadata that you apply to the capacity provider to categorize and organize + // them more conveniently. Each tag consists of a key and an optional value. You + // define both of them. The following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum + // number of tags per resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be + // unique, and each tag key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 + // Unicode characters in UTF-8 // - // * Maximum value length - 256 Unicode characters in UTF-8 + // * Maximum value length - 256 Unicode characters in + // UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. diff --git a/service/ecs/api_op_CreateCluster.go b/service/ecs/api_op_CreateCluster.go index cf4d9aaea17..7bd80b2f6f8 100644 --- a/service/ecs/api_op_CreateCluster.go +++ b/service/ecs/api_op_CreateCluster.go @@ -15,11 +15,11 @@ import ( // cluster when you launch your first container instance. However, you can create // your own cluster with a unique name with the CreateCluster action. When you call // the CreateCluster API operation, Amazon ECS attempts to create the Amazon ECS -// service-linked role for your account so that required resources in other Amazon -// Web Services services can be managed on your behalf. However, if the IAM user -// that makes the call does not have permissions to create the service-linked role, -// it is not created. For more information, see Using Service-Linked Roles for -// Amazon ECS +// service-linked role for your account. This is so that it can manage required +// resources in other Amazon Web Services services on your behalf. However, if the +// IAM user that makes the call doesn't have permissions to create the +// service-linked role, it isn't created. For more information, see Using +// Service-Linked Roles for Amazon ECS // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) // in the Amazon Elastic Container Service Developer Guide. func (c *Client) CreateCluster(ctx context.Context, params *CreateClusterInput, optFns ...func(*Options)) (*CreateClusterOutput, error) { @@ -44,58 +44,58 @@ type CreateClusterInput struct { // as part of the default capacity provider strategy of the cluster or used in a // capacity provider strategy when calling the CreateService or RunTask actions. If // specifying a capacity provider that uses an Auto Scaling group, the capacity - // provider must already be created and not already associated with another - // cluster. New Auto Scaling group capacity providers can be created with the - // CreateCapacityProvider API operation. To use a Fargate capacity provider, - // specify either the FARGATE or FARGATE_SPOT capacity providers. The Fargate - // capacity providers are available to all accounts and only need to be associated - // with a cluster to be used. The PutClusterCapacityProviders API operation is used - // to update the list of available capacity providers for a cluster after the - // cluster is created. + // provider must be created but not associated with another cluster. New Auto + // Scaling group capacity providers can be created with the CreateCapacityProvider + // API operation. To use a Fargate capacity provider, specify either the FARGATE or + // FARGATE_SPOT capacity providers. The Fargate capacity providers are available to + // all accounts and only need to be associated with a cluster to be used. The + // PutClusterCapacityProviders API operation is used to update the list of + // available capacity providers for a cluster after the cluster is created. CapacityProviders []string - // The name of your cluster. If you do not specify a name for your cluster, you - // create a cluster named default. Up to 255 letters (uppercase and lowercase), - // numbers, underscores, and hyphens are allowed. + // The name of your cluster. If you don't specify a name for your cluster, you + // create a cluster that's named default. Up to 255 letters (uppercase and + // lowercase), numbers, underscores, and hyphens are allowed. ClusterName *string // The execute command configuration for the cluster. Configuration *types.ClusterConfiguration - // The capacity provider strategy to set as the default for the cluster. When a - // default capacity provider strategy is set for a cluster, when calling the + // The capacity provider strategy to set as the default for the cluster. After a + // default capacity provider strategy is set for a cluster, when you call the // RunTask or CreateService APIs with no capacity provider strategy or launch type // specified, the default capacity provider strategy for the cluster is used. If a - // default capacity provider strategy is not defined for a cluster during creation, - // it can be defined later with the PutClusterCapacityProviders API operation. + // default capacity provider strategy isn't defined for a cluster when it was + // created, it can be defined later with the PutClusterCapacityProviders API + // operation. DefaultCapacityProviderStrategy []types.CapacityProviderStrategyItem // The setting to use when creating a cluster. This parameter is used to enable - // CloudWatch Container Insights for a cluster. If this value is specified, it will - // override the containerInsights value set with PutAccountSetting or + // CloudWatch Container Insights for a cluster. If this value is specified, it + // overrides the containerInsights value set with PutAccountSetting or // PutAccountSettingDefault. Settings []types.ClusterSetting // The metadata that you apply to the cluster to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // them. Each tag consists of a key and an optional value. You define both. The + // following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags per + // resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each tag + // key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters in + // UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. diff --git a/service/ecs/api_op_CreateService.go b/service/ecs/api_op_CreateService.go index f3d06f70ecf..c8be7ba5abb 100644 --- a/service/ecs/api_op_CreateService.go +++ b/service/ecs/api_op_CreateService.go @@ -11,24 +11,24 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Runs and maintains a desired number of tasks from a specified task definition. -// If the number of tasks running in a service drops below the desiredCount, Amazon -// ECS runs another copy of the task in the specified cluster. To update an -// existing service, see the UpdateService action. In addition to maintaining the -// desired count of tasks in your service, you can optionally run your service -// behind one or more load balancers. The load balancers distribute traffic across -// the tasks that are associated with the service. For more information, see -// Service Load Balancing +// Runs and maintains your desired number of tasks from a specified task +// definition. If the number of tasks running in a service drops below the +// desiredCount, Amazon ECS runs another copy of the task in the specified cluster. +// To update an existing service, see the UpdateService action. In addition to +// maintaining the desired count of tasks in your service, you can optionally run +// your service behind one or more load balancers. The load balancers distribute +// traffic across the tasks that are associated with the service. For more +// information, see Service Load Balancing // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html) // in the Amazon Elastic Container Service Developer Guide. Tasks for services that -// do not use a load balancer are considered healthy if they're in the RUNNING -// state. Tasks for services that do use a load balancer are considered healthy if +// don't use a load balancer are considered healthy if they're in the RUNNING +// state. Tasks for services that use a load balancer are considered healthy if // they're in the RUNNING state and the container instance that they're hosted on // is reported as healthy by the load balancer. There are two service scheduler // strategies available: // // * REPLICA - The replica scheduling strategy places and -// maintains the desired number of tasks across your cluster. By default, the +// maintains your desired number of tasks across your cluster. By default, the // service scheduler spreads tasks across Availability Zones. You can use task // placement strategies and constraints to customize task placement decisions. For // more information, see Service Scheduler Concepts @@ -39,7 +39,7 @@ import ( // scheduling strategy deploys exactly one task on each active container instance // that meets all of the task placement constraints that you specify in your // cluster. The service scheduler also evaluates the task placement constraints for -// running tasks and will stop tasks that do not meet the placement constraints. +// running tasks. It also stops tasks that don't meet the placement constraints. // When using this strategy, you don't need to specify a desired number of tasks, a // task placement strategy, or use Service Auto Scaling policies. For more // information, see Service Scheduler Concepts @@ -47,69 +47,71 @@ import ( // in the Amazon Elastic Container Service Developer Guide. // // You can optionally -// specify a deployment configuration for your service. The deployment is triggered -// by changing properties, such as the task definition or the desired count of a -// service, with an UpdateService operation. The default value for a replica -// service for minimumHealthyPercent is 100%. The default value for a daemon -// service for minimumHealthyPercent is 0%. If a service is using the ECS -// deployment controller, the minimum healthy percent represents a lower limit on -// the number of tasks in a service that must remain in the RUNNING state during a -// deployment, as a percentage of the desired number of tasks (rounded up to the -// nearest integer), and while any container instances are in the DRAINING state if -// the service contains tasks using the EC2 launch type. This parameter enables you -// to deploy without using additional cluster capacity. For example, if your -// service has a desired number of four tasks and a minimum healthy percent of 50%, -// the scheduler might stop two existing tasks to free up cluster capacity before -// starting two new tasks. Tasks for services that do not use a load balancer are -// considered healthy if they're in the RUNNING state. Tasks for services that do -// use a load balancer are considered healthy if they're in the RUNNING state and -// they're reported as healthy by the load balancer. The default value for minimum -// healthy percent is 100%. If a service is using the ECS deployment controller, -// the maximum percent parameter represents an upper limit on the number of tasks -// in a service that are allowed in the RUNNING or PENDING state during a -// deployment, as a percentage of the desired number of tasks (rounded down to the -// nearest integer), and while any container instances are in the DRAINING state if -// the service contains tasks using the EC2 launch type. This parameter enables you -// to define the deployment batch size. For example, if your service has a desired +// specify a deployment configuration for your service. The deployment is initiated +// by changing properties. For example, the deployment might be initiated by the +// task definition or by your desired count of a service. This is done with an +// UpdateService operation. The default value for a replica service for +// minimumHealthyPercent is 100%. The default value for a daemon service for +// minimumHealthyPercent is 0%. If a service uses the ECS deployment controller, +// the minimum healthy percent represents a lower limit on the number of tasks in a +// service that must remain in the RUNNING state during a deployment. Specifically, +// it represents it as a percentage of your desired number of tasks (rounded up to +// the nearest integer). This happens when any of your container instances are in +// the DRAINING state if the service contains tasks using the EC2 launch type. +// Using this parameter, you can deploy without using additional cluster capacity. +// For example, if you set your service to have desired number of four tasks and a +// minimum healthy percent of 50%, the scheduler might stop two existing tasks to +// free up cluster capacity before starting two new tasks. If they're in the +// RUNNING state, tasks for services that don't use a load balancer are considered +// healthy . If they're in the RUNNING state and reported as healthy by the load +// balancer, tasks for services that do use a load balancer are considered healthy +// . The default value for minimum healthy percent is 100%. If a service uses the +// ECS deployment controller, the maximum percent parameter represents an upper +// limit on the number of tasks in a service that are allowed in the RUNNING or +// PENDING state during a deployment. Specifically, it represents it as a +// percentage of the desired number of tasks (rounded down to the nearest integer). +// This happens when any of your container instances are in the DRAINING state if +// the service contains tasks using the EC2 launch type. Using this parameter, you +// can define the deployment batch size. For example, if your service has a desired // number of four tasks and a maximum percent value of 200%, the scheduler may // start four new tasks before stopping the four older tasks (provided that the // cluster resources required to do this are available). The default value for -// maximum percent is 200%. If a service is using either the CODE_DEPLOY or -// EXTERNAL deployment controller types and tasks that use the EC2 launch type, the -// minimum healthy percent and maximum percent values are used only to define the -// lower and upper limit on the number of the tasks in the service that remain in -// the RUNNING state while the container instances are in the DRAINING state. If -// the tasks in the service use the Fargate launch type, the minimum healthy -// percent and maximum percent values aren't used, although they're currently -// visible when describing your service. When creating a service that uses the -// EXTERNAL deployment controller, you can specify only parameters that aren't -// controlled at the task set level. The only required parameter is the service -// name. You control your services using the CreateTaskSet operation. For more -// information, see Amazon ECS Deployment Types +// maximum percent is 200%. If a service uses either the CODE_DEPLOY or EXTERNAL +// deployment controller types and tasks that use the EC2 launch type, the minimum +// healthy percent and maximum percent values are used only to define the lower and +// upper limit on the number of the tasks in the service that remain in the RUNNING +// state. This is while the container instances are in the DRAINING state. If the +// tasks in the service use the Fargate launch type, the minimum healthy percent +// and maximum percent values aren't used. This is the case even if they're +// currently visible when describing your service. When creating a service that +// uses the EXTERNAL deployment controller, you can specify only parameters that +// aren't controlled at the task set level. The only required parameter is the +// service name. You control your services using the CreateTaskSet operation. For +// more information, see Amazon ECS Deployment Types // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html) // in the Amazon Elastic Container Service Developer Guide. When the service // scheduler launches new tasks, it determines task placement in your cluster using // the following logic: // // * Determine which of the container instances in your -// cluster can support your service's task definition (for example, they have the -// required CPU, memory, ports, and container instance attributes). +// cluster can support the task definition of your service. For example, they have +// the required CPU, memory, ports, and container instance attributes. // -// * By default, -// the service scheduler attempts to balance tasks across Availability Zones in -// this manner (although you can choose a different placement strategy) with the -// placementStrategy parameter): +// * By +// default, the service scheduler attempts to balance tasks across Availability +// Zones in this manner. This is the case even if you can choose a different +// placement strategy with the placementStrategy parameter. // -// * Sort the valid container instances, giving -// priority to instances that have the fewest number of running tasks for this -// service in their respective Availability Zone. For example, if zone A has one -// running service task and zones B and C each have zero, valid container instances -// in either zone B or C are considered optimal for placement. +// * Sort the valid +// container instances, giving priority to instances that have the fewest number of +// running tasks for this service in their respective Availability Zone. For +// example, if zone A has one running service task and zones B and C each have +// zero, valid container instances in either zone B or C are considered optimal for +// placement. // -// * Place the new -// service task on a valid container instance in an optimal Availability Zone -// (based on the previous steps), favoring container instances with the fewest -// number of running tasks for this service. +// * Place the new service task on a valid container instance in an +// optimal Availability Zone based on the previous steps, favoring container +// instances with the fewest number of running tasks for this service. func (c *Client) CreateService(ctx context.Context, params *CreateServiceInput, optFns ...func(*Options)) (*CreateServiceOutput, error) { if params == nil { params = &CreateServiceInput{} @@ -142,12 +144,13 @@ type CreateServiceInput struct { // strategy may contain a maximum of 6 capacity providers. CapacityProviderStrategy []types.CapacityProviderStrategyItem - // Unique, case-sensitive identifier that you provide to ensure the idempotency of - // the request. Up to 32 ASCII characters are allowed. + // An identifier that you provide to ensure the idempotency of the request. It must + // be unique and is case sensitive. Up to 32 ASCII characters are allowed. ClientToken *string - // The short name or full Amazon Resource Name (ARN) of the cluster on which to run - // your service. If you do not specify a cluster, the default cluster is assumed. + // The short name or full Amazon Resource Name (ARN) of the cluster that you run + // your service on. If you do not specify a cluster, the default cluster is + // assumed. Cluster *string // Optional deployment parameters that control how many tasks run during the @@ -159,8 +162,8 @@ type CreateServiceInput struct { DeploymentController *types.DeploymentController // The number of instantiations of the specified task definition to place and keep - // running on your cluster. This is required if schedulingStrategy is REPLICA or is - // not specified. If schedulingStrategy is DAEMON then this is not required. + // running on your cluster. This is required if schedulingStrategy is REPLICA or + // isn't specified. If schedulingStrategy is DAEMON then this isn't required. DesiredCount *int32 // Specifies whether to enable Amazon ECS managed tags for the tasks within the @@ -169,25 +172,25 @@ type CreateServiceInput struct { // in the Amazon Elastic Container Service Developer Guide. EnableECSManagedTags bool - // Whether or not the execute command functionality is enabled for the service. If - // true, this enables execute command functionality on all containers in the + // Determines whether the execute command functionality is enabled for the service. + // If true, this enables execute command functionality on all containers in the // service tasks. EnableExecuteCommand bool - // The period of time, in seconds, that the Amazon ECS service scheduler should - // ignore unhealthy Elastic Load Balancing target health checks after a task has - // first started. This is only used when your service is configured to use a load + // The period of time, in seconds, that the Amazon ECS service scheduler ignores + // unhealthy Elastic Load Balancing target health checks after a task has first + // started. This is only used when your service is configured to use a load // balancer. If your service has a load balancer defined and you don't specify a // health check grace period value, the default value of 0 is used. If your // service's tasks take a while to start and respond to Elastic Load Balancing // health checks, you can specify a health check grace period of up to - // 2,147,483,647 seconds. During that time, the Amazon ECS service scheduler - // ignores health check status. This grace period can prevent the service scheduler - // from marking tasks as unhealthy and stopping them before they have time to come - // up. + // 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service + // scheduler ignores health check status. This grace period can prevent the service + // scheduler from marking tasks as unhealthy and stopping them before they have + // time to come up. HealthCheckGracePeriodSeconds *int32 - // The infrastructure on which to run your service. For more information, see + // The infrastructure that you run your service on. For more information, see // Amazon ECS launch types // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) // in the Amazon Elastic Container Service Developer Guide. The FARGATE launch type @@ -197,82 +200,83 @@ type CreateServiceInput struct { // (https://docs.aws.amazon.com/AmazonECS/latest/userguide/fargate-capacity-providers.html) // in the Amazon ECS User Guide for Fargate. The EC2 launch type runs your tasks on // Amazon EC2 instances registered to your cluster. The EXTERNAL launch type runs - // your tasks on your on-premise server or virtual machine (VM) capacity registered - // to your cluster. A service can use either a launch type or a capacity provider - // strategy. If a launchType is specified, the capacityProviderStrategy parameter - // must be omitted. + // your tasks on your on-premises server or virtual machine (VM) capacity + // registered to your cluster. A service can use either a launch type or a capacity + // provider strategy. If a launchType is specified, the capacityProviderStrategy + // parameter must be omitted. LaunchType types.LaunchType // A load balancer object representing the load balancers to use with your service. // For more information, see Service Load Balancing // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html) - // in the Amazon Elastic Container Service Developer Guide. If the service is using - // the rolling update (ECS) deployment controller and using either an Application - // Load Balancer or Network Load Balancer, you must specify one or more target - // group ARNs to attach to the service. The service-linked role is required for - // services that make use of multiple target groups. For more information, see - // Using service-linked roles for Amazon ECS + // in the Amazon Elastic Container Service Developer Guide. If the service uses the + // rolling update (ECS) deployment controller and using either an Application Load + // Balancer or Network Load Balancer, you must specify one or more target group + // ARNs to attach to the service. The service-linked role is required for services + // that use multiple target groups. For more information, see Using service-linked + // roles for Amazon ECS // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) - // in the Amazon Elastic Container Service Developer Guide. If the service is using - // the CODE_DEPLOY deployment controller, the service is required to use either an + // in the Amazon Elastic Container Service Developer Guide. If the service uses the + // CODE_DEPLOY deployment controller, the service is required to use either an // Application Load Balancer or Network Load Balancer. When creating an CodeDeploy // deployment group, you specify two target groups (referred to as a // targetGroupPair). During a deployment, CodeDeploy determines which task set in - // your service has the status PRIMARY and associates one target group with it, and - // then associates the other target group with the replacement task set. The load - // balancer can also have up to two listeners: a required listener for production - // traffic and an optional listener that allows you perform validation tests with - // Lambda functions before routing production traffic to it. After you create a - // service using the ECS deployment controller, the load balancer name or target - // group ARN, container name, and container port specified in the service - // definition are immutable. If you are using the CODE_DEPLOY deployment - // controller, these values can be changed when updating the service. For - // Application Load Balancers and Network Load Balancers, this object must contain - // the load balancer target group ARN, the container name (as it appears in a - // container definition), and the container port to access from the load balancer. - // The load balancer name parameter must be omitted. When a task from this service - // is placed on a container instance, the container instance and port combination - // is registered as a target in the target group specified here. For Classic Load - // Balancers, this object must contain the load balancer name, the container name - // (as it appears in a container definition), and the container port to access from - // the load balancer. The target group ARN parameter must be omitted. When a task - // from this service is placed on a container instance, the container instance is - // registered with the load balancer specified here. Services with tasks that use - // the awsvpc network mode (for example, those with the Fargate launch type) only - // support Application Load Balancers and Network Load Balancers. Classic Load - // Balancers are not supported. Also, when you create any target groups for these - // services, you must choose ip as the target type, not instance, because tasks - // that use the awsvpc network mode are associated with an elastic network - // interface, not an Amazon EC2 instance. + // your service has the status PRIMARY, and it associates one target group with it. + // Then, it also associates the other target group with the replacement task set. + // The load balancer can also have up to two listeners: a required listener for + // production traffic and an optional listener that you can use to perform + // validation tests with Lambda functions before routing production traffic to it. + // After you create a service using the ECS deployment controller, the load + // balancer name or target group ARN, container name, and container port that's + // specified in the service definition are immutable. If you use the CODE_DEPLOY + // deployment controller, these values can be changed when updating the service. + // For Application Load Balancers and Network Load Balancers, this object must + // contain the load balancer target group ARN, the container name, and the + // container port to access from the load balancer. The container name must be as + // it appears in a container definition. The load balancer name parameter must be + // omitted. When a task from this service is placed on a container instance, the + // container instance and port combination is registered as a target in the target + // group that's specified here. For Classic Load Balancers, this object must + // contain the load balancer name, the container name , and the container port to + // access from the load balancer. The container name must be as it appears in a + // container definition. The target group ARN parameter must be omitted. When a + // task from this service is placed on a container instance, the container instance + // is registered with the load balancer that's specified here. Services with tasks + // that use the awsvpc network mode (for example, those with the Fargate launch + // type) only support Application Load Balancers and Network Load Balancers. + // Classic Load Balancers aren't supported. Also, when you create any target groups + // for these services, you must choose ip as the target type, not instance. This is + // because tasks that use the awsvpc network mode are associated with an elastic + // network interface, not an Amazon EC2 instance. LoadBalancers []types.LoadBalancer // The network configuration for the service. This parameter is required for task // definitions that use the awsvpc network mode to receive their own elastic - // network interface, and it is not supported for other network modes. For more + // network interface, and it isn't supported for other network modes. For more // information, see Task networking // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) // in the Amazon Elastic Container Service Developer Guide. NetworkConfiguration *types.NetworkConfiguration // An array of placement constraint objects to use for tasks in your service. You - // can specify a maximum of 10 constraints per task (this limit includes - // constraints in the task definition and those specified at runtime). + // can specify a maximum of 10 constraints for each task. This limit includes + // constraints in the task definition and those specified at runtime. PlacementConstraints []types.PlacementConstraint // The placement strategy objects to use for tasks in your service. You can specify - // a maximum of 5 strategy rules per service. + // a maximum of 5 strategy rules for each service. PlacementStrategy []types.PlacementStrategy // The platform version that your tasks in the service are running on. A platform // version is specified only for tasks using the Fargate launch type. If one isn't - // specified, the LATEST platform version is used by default. For more information, - // see Fargate platform versions + // specified, the LATEST platform version is used. For more information, see + // Fargate platform versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string // Specifies whether to propagate the tags from the task definition or the service - // to the tasks in the service. If no value is specified, the tags are not + // to the tasks in the service. If no value is specified, the tags aren't // propagated. Tags can only be propagated to the tasks within the service during // service creation. To add tags to a task after service creation or task creation, // use the TagResource API action. @@ -281,15 +285,15 @@ type CreateServiceInput struct { // The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon // ECS to make calls to your load balancer on your behalf. This parameter is only // permitted if you are using a load balancer with your service and your task - // definition does not use the awsvpc network mode. If you specify the role + // definition doesn't use the awsvpc network mode. If you specify the role // parameter, you must also specify a load balancer object with the loadBalancers // parameter. If your account has already created the Amazon ECS service-linked - // role, that role is used by default for your service unless you specify a role - // here. The service-linked role is required if your task definition uses the - // awsvpc network mode or if the service is configured to use service discovery, an - // external deployment controller, multiple target groups, or Elastic Inference - // accelerators in which case you should not specify a role here. For more - // information, see Using service-linked roles for Amazon ECS + // role, that role is used for your service unless you specify a role here. The + // service-linked role is required if your task definition uses the awsvpc network + // mode or if the service is configured to use service discovery, an external + // deployment controller, multiple target groups, or Elastic Inference accelerators + // in which case you don't specify a role here. For more information, see Using + // service-linked roles for Amazon ECS // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html) // in the Amazon Elastic Container Service Developer Guide. If your specified role // has a path other than /, then you must either specify the full role ARN (this is @@ -309,14 +313,14 @@ type CreateServiceInput struct { // scheduling strategy places and maintains the desired number of tasks across your // cluster. By default, the service scheduler spreads tasks across Availability // Zones. You can use task placement strategies and constraints to customize task - // placement decisions. This scheduler strategy is required if the service is using - // the CODE_DEPLOY or EXTERNAL deployment controller types. + // placement decisions. This scheduler strategy is required if the service uses the + // CODE_DEPLOY or EXTERNAL deployment controller types. // // * DAEMON-The daemon // scheduling strategy deploys exactly one task on each active container instance // that meets all of the task placement constraints that you specify in your // cluster. The service scheduler also evaluates the task placement constraints for - // running tasks and will stop tasks that do not meet the placement constraints. + // running tasks and will stop tasks that don't meet the placement constraints. // When you're using this strategy, you don't need to specify a desired number of // tasks, a task placement strategy, or use Service Auto Scaling policies. Tasks // using the Fargate launch type or the CODE_DEPLOY or EXTERNAL deployment @@ -327,7 +331,7 @@ type CreateServiceInput struct { // For more information, see Service discovery // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html). // Each service may be associated with one service registry. Multiple service - // registries per service isn't supported. + // registries for each service isn't supported. ServiceRegistries []types.ServiceRegistry // The metadata that you apply to the service to help you categorize and organize @@ -362,9 +366,9 @@ type CreateServiceInput struct { Tags []types.Tag // The family and revision (family:revision) or full ARN of the task definition to - // run in your service. If a revision is not specified, the latest ACTIVE revision - // is used. A task definition must be specified if the service is using either the - // ECS or CODE_DEPLOY deployment controllers. + // run in your service. If a revision isn't specified, the latest ACTIVE revision + // is used. A task definition must be specified if the service uses either the ECS + // or CODE_DEPLOY deployment controllers. TaskDefinition *string noSmithyDocumentSerde @@ -374,10 +378,10 @@ type CreateServiceOutput struct { // The full description of your service following the create call. A service will // return either a capacityProviderStrategy or launchType parameter, but not both, - // depending on which one was specified during creation. If a service is using the + // depending where one was specified when it was created. If a service is using the // ECS deployment controller, the deploymentController and taskSets parameters will - // not be returned. If the service is using the CODE_DEPLOY deployment controller, - // the deploymentController, taskSets and deployments parameters will be returned, + // not be returned. if the service uses the CODE_DEPLOY deployment controller, the + // deploymentController, taskSets and deployments parameters will be returned, // however the deployments parameter will be an empty list. Service *types.Service diff --git a/service/ecs/api_op_CreateTaskSet.go b/service/ecs/api_op_CreateTaskSet.go index 4862b8ce589..3f8e9613392 100644 --- a/service/ecs/api_op_CreateTaskSet.go +++ b/service/ecs/api_op_CreateTaskSet.go @@ -69,8 +69,9 @@ type CreateTaskSetInput struct { // cluster is created. CapacityProviderStrategy []types.CapacityProviderStrategyItem - // Unique, case-sensitive identifier that you provide to ensure the idempotency of - // the request. Up to 32 ASCII characters are allowed. + // The identifier that you provide to ensure the idempotency of the request. It's + // case sensitive and must be unique. It can be up to 32 ASCII characters are + // allowed. ClientToken *string // An optional non-unique tag that identifies this task set in external systems. If @@ -79,8 +80,8 @@ type CreateTaskSetInput struct { // provided value. ExternalId *string - // The launch type that new tasks in the task set will use. For more information, - // see Amazon ECS Launch Types + // The launch type that new tasks in the task set uses. For more information, see + // Amazon ECS Launch Types // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) // in the Amazon Elastic Container Service Developer Guide. If a launchType is // specified, the capacityProviderStrategy parameter must be omitted. @@ -94,9 +95,9 @@ type CreateTaskSetInput struct { // An object representing the network configuration for a task set. NetworkConfiguration *types.NetworkConfiguration - // The platform version that the tasks in the task set should use. A platform - // version is specified only for tasks using the Fargate launch type. If one isn't - // specified, the LATEST platform version is used by default. + // The platform version that the tasks in the task set uses. A platform version is + // specified only for tasks using the Fargate launch type. If one isn't specified, + // the LATEST platform version is used. PlatformVersion *string // A floating-point percentage of the desired number of tasks to place and keep @@ -109,34 +110,34 @@ type CreateTaskSetInput struct { ServiceRegistries []types.ServiceRegistry // The metadata that you apply to the task set to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. When a service is deleted, the tags are deleted as well. The following - // basic restrictions apply to tags: + // them. Each tag consists of a key and an optional value. You define both. When a + // service is deleted, the tags are deleted. The following basic restrictions apply + // to tags: // // * Maximum number of tags per resource - 50 // - // * - // For each resource, each tag key must be unique, and each tag key can have only - // one value. + // * For each resource, each + // tag key must be unique, and each tag key can have only one value. // - // * Maximum key length - 128 Unicode characters in UTF-8 + // * Maximum key + // length - 128 Unicode characters in UTF-8 // - // * Maximum - // value length - 256 Unicode characters in UTF-8 + // * Maximum value length - 256 Unicode + // characters in UTF-8 // - // * If your tagging schema is used - // across multiple services and resources, remember that other services may have - // restrictions on allowed characters. Generally allowed characters are: letters, - // numbers, and spaces representable in UTF-8, and the following characters: + - = - // . _ : / @. + // * If your tagging schema is used across multiple services + // and resources, remember that other services may have restrictions on allowed + // characters. Generally allowed characters are: letters, numbers, and spaces + // representable in UTF-8, and the following characters: + - = . _ : / @. // - // * Tag keys and values are case-sensitive. + // * Tag + // keys and values are case-sensitive. // - // * Do not use aws:, AWS:, - // or any upper or lowercase combination of such as a prefix for either keys or - // values as it is reserved for Amazon Web Services use. You cannot edit or delete - // tag keys or values with this prefix. Tags with this prefix do not count against - // your tags per resource limit. + // * Do not use aws:, AWS:, or any upper or + // lowercase combination of such as a prefix for either keys or values as it is + // reserved for Amazon Web Services use. You cannot edit or delete tag keys or + // values with this prefix. Tags with this prefix do not count against your tags + // per resource limit. Tags []types.Tag noSmithyDocumentSerde diff --git a/service/ecs/api_op_DeleteAccountSetting.go b/service/ecs/api_op_DeleteAccountSetting.go index d4d5cda6bc0..aef6a9b7706 100644 --- a/service/ecs/api_op_DeleteAccountSetting.go +++ b/service/ecs/api_op_DeleteAccountSetting.go @@ -30,22 +30,22 @@ func (c *Client) DeleteAccountSetting(ctx context.Context, params *DeleteAccount type DeleteAccountSettingInput struct { - // The resource name for which to disable the account setting. If - // serviceLongArnFormat is specified, the ARN for your Amazon ECS services is - // affected. If taskLongArnFormat is specified, the ARN and resource ID for your - // Amazon ECS tasks is affected. If containerInstanceLongArnFormat is specified, - // the ARN and resource ID for your Amazon ECS container instances is affected. If + // The resource name to disable the account setting for. If serviceLongArnFormat is + // specified, the ARN for your Amazon ECS services is affected. If + // taskLongArnFormat is specified, the ARN and resource ID for your Amazon ECS + // tasks is affected. If containerInstanceLongArnFormat is specified, the ARN and + // resource ID for your Amazon ECS container instances is affected. If // awsvpcTrunking is specified, the ENI limit for your Amazon ECS container // instances is affected. // // This member is required. Name types.SettingName - // The ARN of the principal, which can be an IAM user, IAM role, or the root user. - // If you specify the root user, it disables the account setting for all IAM users, - // IAM roles, and the root user of the account unless an IAM user or role - // explicitly overrides these settings. If this field is omitted, the setting is - // changed only for the authenticated user. + // The Amazon Resource Name (ARN) of the principal. It can be an IAM user, IAM + // role, or the root user. If you specify the root user, it disables the account + // setting for all IAM users, IAM roles, and the root user of the account unless an + // IAM user or role explicitly overrides these settings. If this field is omitted, + // the setting is changed only for the authenticated user. PrincipalArn *string noSmithyDocumentSerde diff --git a/service/ecs/api_op_DeleteAttributes.go b/service/ecs/api_op_DeleteAttributes.go index 72db86c249f..b922dc4b2f1 100644 --- a/service/ecs/api_op_DeleteAttributes.go +++ b/service/ecs/api_op_DeleteAttributes.go @@ -30,9 +30,9 @@ func (c *Client) DeleteAttributes(ctx context.Context, params *DeleteAttributesI type DeleteAttributesInput struct { // The attributes to delete from your resource. You can specify up to 10 attributes - // per request. For custom attributes, specify the attribute name and target ID, - // but do not specify the value. If you specify the target ID using the short form, - // you must also specify the target type. + // for each request. For custom attributes, specify the attribute name and target + // ID, but don't specify the value. If you specify the target ID using the short + // form, you must also specify the target type. // // This member is required. Attributes []types.Attribute diff --git a/service/ecs/api_op_DeleteCapacityProvider.go b/service/ecs/api_op_DeleteCapacityProvider.go index 8bdbd4df535..63ec468c458 100644 --- a/service/ecs/api_op_DeleteCapacityProvider.go +++ b/service/ecs/api_op_DeleteCapacityProvider.go @@ -12,7 +12,7 @@ import ( ) // Deletes the specified capacity provider. The FARGATE and FARGATE_SPOT capacity -// providers are reserved and cannot be deleted. You can disassociate them from a +// providers are reserved and can't be deleted. You can disassociate them from a // cluster using either the PutClusterCapacityProviders API or by deleting the // cluster. Prior to a capacity provider being deleted, the capacity provider must // be removed from the capacity provider strategy from all services. The @@ -20,7 +20,7 @@ import ( // capacity provider strategy. When updating a service, the forceNewDeployment // option can be used to ensure that any tasks using the Amazon EC2 instance // capacity provided by the capacity provider are transitioned to use the capacity -// from the remaining capacity providers. Only capacity providers that are not +// from the remaining capacity providers. Only capacity providers that aren't // associated with a cluster can be deleted. To remove a capacity provider from a // cluster, you can either use PutClusterCapacityProviders or delete the cluster. func (c *Client) DeleteCapacityProvider(ctx context.Context, params *DeleteCapacityProviderInput, optFns ...func(*Options)) (*DeleteCapacityProviderOutput, error) { diff --git a/service/ecs/api_op_DeleteCluster.go b/service/ecs/api_op_DeleteCluster.go index 0307693c7a0..82f18d369da 100644 --- a/service/ecs/api_op_DeleteCluster.go +++ b/service/ecs/api_op_DeleteCluster.go @@ -11,13 +11,13 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Deletes the specified cluster. The cluster will transition to the INACTIVE -// state. Clusters with an INACTIVE status may remain discoverable in your account -// for a period of time. However, this behavior is subject to change in the future, -// so you should not rely on INACTIVE clusters persisting. You must deregister all -// container instances from this cluster before you may delete it. You can list the -// container instances in a cluster with ListContainerInstances and deregister them -// with DeregisterContainerInstance. +// Deletes the specified cluster. The cluster transitions to the INACTIVE state. +// Clusters with an INACTIVE status might remain discoverable in your account for a +// period of time. However, this behavior is subject to change in the future. We +// don't recommend that you rely on INACTIVE clusters persisting. You must +// deregister all container instances from this cluster before you may delete it. +// You can list the container instances in a cluster with ListContainerInstances +// and deregister them with DeregisterContainerInstance. func (c *Client) DeleteCluster(ctx context.Context, params *DeleteClusterInput, optFns ...func(*Options)) (*DeleteClusterOutput, error) { if params == nil { params = &DeleteClusterInput{} diff --git a/service/ecs/api_op_DeleteService.go b/service/ecs/api_op_DeleteService.go index 27b20d824f0..d55d8ea32cd 100644 --- a/service/ecs/api_op_DeleteService.go +++ b/service/ecs/api_op_DeleteService.go @@ -13,7 +13,7 @@ import ( // Deletes a specified service within a cluster. You can delete a service if you // have no running tasks in it and the desired task count is zero. If the service -// is actively maintaining tasks, you cannot delete it, and you must update the +// is actively maintaining tasks, you can't delete it, and you must update the // service to a desired task count of zero. For more information, see // UpdateService. When you delete a service, if there are still running tasks that // require cleanup, the service status moves from ACTIVE to DRAINING, and the @@ -53,8 +53,8 @@ type DeleteServiceInput struct { // assumed. Cluster *string - // If true, allows you to delete a service even if it has not been scaled down to - // zero tasks. It is only necessary to use this if the service is using the REPLICA + // If true, allows you to delete a service even if it wasn't scaled down to zero + // tasks. It's only necessary to use this if the service uses the REPLICA // scheduling strategy. Force *bool diff --git a/service/ecs/api_op_DeleteTaskSet.go b/service/ecs/api_op_DeleteTaskSet.go index d06490b1c66..c21c881af2e 100644 --- a/service/ecs/api_op_DeleteTaskSet.go +++ b/service/ecs/api_op_DeleteTaskSet.go @@ -34,7 +34,7 @@ func (c *Client) DeleteTaskSet(ctx context.Context, params *DeleteTaskSetInput, type DeleteTaskSetInput struct { // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the - // service that the task set exists in to delete. + // service that the task set found in to delete. // // This member is required. Cluster *string @@ -50,8 +50,7 @@ type DeleteTaskSetInput struct { // This member is required. TaskSet *string - // If true, this allows you to delete a task set even if it hasn't been scaled down - // to zero. + // If true, you can delete a task set even if it hasn't been scaled down to zero. Force *bool noSmithyDocumentSerde diff --git a/service/ecs/api_op_DeregisterContainerInstance.go b/service/ecs/api_op_DeregisterContainerInstance.go index 64f64e5c79e..59be1ce979d 100644 --- a/service/ecs/api_op_DeregisterContainerInstance.go +++ b/service/ecs/api_op_DeregisterContainerInstance.go @@ -13,15 +13,15 @@ import ( // Deregisters an Amazon ECS container instance from the specified cluster. This // instance is no longer available to run tasks. If you intend to use the container -// instance for some other purpose after deregistration, you should stop all of the -// tasks running on the container instance before deregistration. That prevents any -// orphaned tasks from consuming resources. Deregistering a container instance -// removes the instance from a cluster, but it does not terminate the EC2 instance. -// If you are finished using the instance, be sure to terminate it in the Amazon -// EC2 console to stop billing. If you terminate a running container instance, -// Amazon ECS automatically deregisters the instance from your cluster (stopped -// container instances or instances with disconnected agents are not automatically -// deregistered when terminated). +// instance for some other purpose after deregistration, we recommend that you stop +// all of the tasks running on the container instance before deregistration. That +// prevents any orphaned tasks from consuming resources. Deregistering a container +// instance removes the instance from a cluster, but it doesn't terminate the EC2 +// instance. If you are finished using the instance, be sure to terminate it in the +// Amazon EC2 console to stop billing. If you terminate a running container +// instance, Amazon ECS automatically deregisters the instance from your cluster +// (stopped container instances or instances with disconnected agents aren't +// automatically deregistered when terminated). func (c *Client) DeregisterContainerInstance(ctx context.Context, params *DeregisterContainerInstanceInput, optFns ...func(*Options)) (*DeregisterContainerInstanceOutput, error) { if params == nil { params = &DeregisterContainerInstanceInput{} @@ -54,10 +54,10 @@ type DeregisterContainerInstanceInput struct { // cluster is assumed. Cluster *string - // Forces the deregistration of the container instance. If you have tasks running - // on the container instance when you deregister it with the force option, these - // tasks remain running until you terminate the instance or the tasks stop through - // some other means, but they are orphaned (no longer monitored or accounted for by + // Forces the container instance to be deregistered. If you have tasks running on + // the container instance when you deregister it with the force option, these tasks + // remain running until you terminate the instance or the tasks stop through some + // other means, but they're orphaned (no longer monitored or accounted for by // Amazon ECS). If an orphaned task on your container instance is part of an Amazon // ECS service, then the service scheduler starts another copy of that task, on a // different container instance if possible. Any containers in orphaned service diff --git a/service/ecs/api_op_DeregisterTaskDefinition.go b/service/ecs/api_op_DeregisterTaskDefinition.go index 27e1dd3ee5d..204cfcf2b60 100644 --- a/service/ecs/api_op_DeregisterTaskDefinition.go +++ b/service/ecs/api_op_DeregisterTaskDefinition.go @@ -15,15 +15,15 @@ import ( // deregistration, the task definition is marked as INACTIVE. Existing tasks and // services that reference an INACTIVE task definition continue to run without // disruption. Existing services that reference an INACTIVE task definition can -// still scale up or down by modifying the service's desired count. You cannot use +// still scale up or down by modifying the service's desired count. You can't use // an INACTIVE task definition to run new tasks or create new services, and you -// cannot update an existing service to reference an INACTIVE task definition. +// can't update an existing service to reference an INACTIVE task definition. // However, there may be up to a 10-minute window following deregistration where // these restrictions have not yet taken effect. At this time, INACTIVE task // definitions remain discoverable in your account indefinitely. However, this -// behavior is subject to change in the future, so you should not rely on INACTIVE -// task definitions persisting beyond the lifecycle of any associated tasks and -// services. +// behavior is subject to change in the future. We don't recommend that you rely on +// INACTIVE task definitions persisting beyond the lifecycle of any associated +// tasks and services. func (c *Client) DeregisterTaskDefinition(ctx context.Context, params *DeregisterTaskDefinitionInput, optFns ...func(*Options)) (*DeregisterTaskDefinitionOutput, error) { if params == nil { params = &DeregisterTaskDefinitionInput{} diff --git a/service/ecs/api_op_DescribeCapacityProviders.go b/service/ecs/api_op_DescribeCapacityProviders.go index 5a0b32ad44e..f071cfbde63 100644 --- a/service/ecs/api_op_DescribeCapacityProviders.go +++ b/service/ecs/api_op_DescribeCapacityProviders.go @@ -35,7 +35,7 @@ type DescribeCapacityProvidersInput struct { // Specifies whether or not you want to see the resource tags for the capacity // provider. If TAGS is specified, the tags are included in the response. If this - // field is omitted, tags are not included in the response. + // field is omitted, tags aren't included in the response. Include []types.CapacityProviderField // The maximum number of account setting results returned by diff --git a/service/ecs/api_op_DescribeClusters.go b/service/ecs/api_op_DescribeClusters.go index 47af106a756..b75a42c123e 100644 --- a/service/ecs/api_op_DescribeClusters.go +++ b/service/ecs/api_op_DescribeClusters.go @@ -33,14 +33,14 @@ type DescribeClustersInput struct { // entries. If you do not specify a cluster, the default cluster is assumed. Clusters []string - // Whether to include additional information about the clusters in the response. If - // this field is omitted, this information isn't included. If ATTACHMENTS is - // specified, the attachments for the container instances or tasks within the - // cluster are included. If SETTINGS is specified, the settings for the cluster are - // included. If CONFIGURATIONS is specified, the configuration for the cluster is - // included. If STATISTICS is specified, the task and service count is included, - // separated by launch type. If TAGS is specified, the metadata tags associated - // with the cluster are included. + // Determines whether to include additional information about the clusters in the + // response. If this field is omitted, this information isn't included. If + // ATTACHMENTS is specified, the attachments for the container instances or tasks + // within the cluster are included. If SETTINGS is specified, the settings for the + // cluster are included. If CONFIGURATIONS is specified, the configuration for the + // cluster is included. If STATISTICS is specified, the task and service count is + // included, separated by launch type. If TAGS is specified, the metadata tags + // associated with the cluster are included. Include []types.ClusterField noSmithyDocumentSerde diff --git a/service/ecs/api_op_DescribeContainerInstances.go b/service/ecs/api_op_DescribeContainerInstances.go index 7b0b093a593..b263ee3b6bf 100644 --- a/service/ecs/api_op_DescribeContainerInstances.go +++ b/service/ecs/api_op_DescribeContainerInstances.go @@ -44,8 +44,10 @@ type DescribeContainerInstancesInput struct { Cluster *string // Specifies whether you want to see the resource tags for the container instance. - // If TAGS is specified, the tags are included in the response. If this field is - // omitted, tags are not included in the response. + // If TAGS is specified, the tags are included in the response. If + // CONTAINER_INSTANCE_HEALTH is specified, the container instance health is + // included in the response. If this field is omitted, tags and container instance + // health status aren't included in the response. Include []types.ContainerInstanceField noSmithyDocumentSerde diff --git a/service/ecs/api_op_DescribeServices.go b/service/ecs/api_op_DescribeServices.go index a02027b5987..a2ffbced8fe 100644 --- a/service/ecs/api_op_DescribeServices.go +++ b/service/ecs/api_op_DescribeServices.go @@ -46,9 +46,9 @@ type DescribeServicesInput struct { // describing were launched in any cluster other than the default cluster. Cluster *string - // Specifies whether you want to see the resource tags for the service. If TAGS is + // Determines whether you want to see the resource tags for the service. If TAGS is // specified, the tags are included in the response. If this field is omitted, tags - // are not included in the response. + // aren't included in the response. Include []types.ServiceField noSmithyDocumentSerde diff --git a/service/ecs/api_op_DescribeTaskDefinition.go b/service/ecs/api_op_DescribeTaskDefinition.go index 31496f13787..8c0610cd0dc 100644 --- a/service/ecs/api_op_DescribeTaskDefinition.go +++ b/service/ecs/api_op_DescribeTaskDefinition.go @@ -39,9 +39,9 @@ type DescribeTaskDefinitionInput struct { // This member is required. TaskDefinition *string - // Specifies whether to see the resource tags for the task definition. If TAGS is + // Determines whether to see the resource tags for the task definition. If TAGS is // specified, the tags are included in the response. If this field is omitted, tags - // are not included in the response. + // aren't included in the response. Include []types.TaskDefinitionField noSmithyDocumentSerde @@ -49,26 +49,26 @@ type DescribeTaskDefinitionInput struct { type DescribeTaskDefinitionOutput struct { - // The metadata that is applied to the task definition to help you categorize and - // organize them. Each tag consists of a key and an optional value, both of which - // you define. The following basic restrictions apply to tags: + // The metadata that's applied to the task definition to help you categorize and + // organize them. Each tag consists of a key and an optional value. You define + // both. The following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags + // per resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each + // tag key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters + // in UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. diff --git a/service/ecs/api_op_DescribeTaskSets.go b/service/ecs/api_op_DescribeTaskSets.go index 808e63f0ac6..44f35ab334c 100644 --- a/service/ecs/api_op_DescribeTaskSets.go +++ b/service/ecs/api_op_DescribeTaskSets.go @@ -47,7 +47,7 @@ type DescribeTaskSetsInput struct { // Specifies whether to see the resource tags for the task set. If TAGS is // specified, the tags are included in the response. If this field is omitted, tags - // are not included in the response. + // aren't included in the response. Include []types.TaskSetField // The ID or full Amazon Resource Name (ARN) of task sets to describe. diff --git a/service/ecs/api_op_DescribeTasks.go b/service/ecs/api_op_DescribeTasks.go index 3cb6ce98570..4610d63e00a 100644 --- a/service/ecs/api_op_DescribeTasks.go +++ b/service/ecs/api_op_DescribeTasks.go @@ -47,7 +47,7 @@ type DescribeTasksInput struct { // Specifies whether you want to see the resource tags for the task. If TAGS is // specified, the tags are included in the response. If this field is omitted, tags - // are not included in the response. + // aren't included in the response. Include []types.TaskField noSmithyDocumentSerde diff --git a/service/ecs/api_op_DiscoverPollEndpoint.go b/service/ecs/api_op_DiscoverPollEndpoint.go index 2ea89bb7e3b..fc074c58989 100644 --- a/service/ecs/api_op_DiscoverPollEndpoint.go +++ b/service/ecs/api_op_DiscoverPollEndpoint.go @@ -30,8 +30,8 @@ func (c *Client) DiscoverPollEndpoint(ctx context.Context, params *DiscoverPollE type DiscoverPollEndpointInput struct { - // The short name or full Amazon Resource Name (ARN) of the cluster to which the - // container instance belongs. + // The short name or full Amazon Resource Name (ARN) of the cluster that the + // container instance belongs to. Cluster *string // The container instance ID or full ARN of the container instance. The ARN diff --git a/service/ecs/api_op_ExecuteCommand.go b/service/ecs/api_op_ExecuteCommand.go index 84ff16ccde9..b05f57493c8 100644 --- a/service/ecs/api_op_ExecuteCommand.go +++ b/service/ecs/api_op_ExecuteCommand.go @@ -66,7 +66,7 @@ type ExecuteCommandOutput struct { // The name of the container. ContainerName *string - // Whether or not the execute command session is running in interactive mode. + // Determines whether the execute command session is running in interactive mode. // Amazon ECS only supports initiating interactive sessions, so you must specify // true for this value. Interactive bool diff --git a/service/ecs/api_op_ListAccountSettings.go b/service/ecs/api_op_ListAccountSettings.go index a656b61a2fd..cbc445d0a26 100644 --- a/service/ecs/api_op_ListAccountSettings.go +++ b/service/ecs/api_op_ListAccountSettings.go @@ -30,10 +30,10 @@ func (c *Client) ListAccountSettings(ctx context.Context, params *ListAccountSet type ListAccountSettingsInput struct { - // Specifies whether to return the effective settings. If true, the account + // Determines whether to return the effective settings. If true, the account // settings for the root user or the default setting for the principalArn are // returned. If false, the account settings for the principalArn are returned if - // they are set. Otherwise, no account settings are returned. + // they're set. Otherwise, no account settings are returned. EffectiveSettings bool // The maximum number of account setting results returned by ListAccountSettings in @@ -41,8 +41,8 @@ type ListAccountSettingsInput struct { // maxResults results in a single page along with a nextToken response element. The // remaining results of the initial request can be seen by sending another // ListAccountSettings request with the returned nextToken value. This value can be - // between 1 and 10. If this parameter is not used, then ListAccountSettings - // returns up to 10 results and a nextToken value if applicable. + // between 1 and 10. If this parameter isn't used, then ListAccountSettings returns + // up to 10 results and a nextToken value if applicable. MaxResults int32 // The name of the account setting you want to list the settings for. @@ -50,7 +50,7 @@ type ListAccountSettingsInput struct { // The nextToken value returned from a ListAccountSettings request indicating that // more results are available to fulfill the request and further calls will be - // needed. If maxResults was provided, it is possible the number of results to be + // needed. If maxResults was provided, it's possible the number of results to be // fewer than maxResults. This token should be treated as an opaque identifier that // is only used to retrieve the next items in a list and not for other programmatic // purposes. @@ -62,8 +62,8 @@ type ListAccountSettingsInput struct { // and can't have explicit account settings set for them. PrincipalArn *string - // The value of the account settings with which to filter results. You must also - // specify an account setting name to use this parameter. + // The value of the account settings to filter results with. You must also specify + // an account setting name to use this parameter. Value *string noSmithyDocumentSerde @@ -162,8 +162,8 @@ type ListAccountSettingsPaginatorOptions struct { // maxResults results in a single page along with a nextToken response element. The // remaining results of the initial request can be seen by sending another // ListAccountSettings request with the returned nextToken value. This value can be - // between 1 and 10. If this parameter is not used, then ListAccountSettings - // returns up to 10 results and a nextToken value if applicable. + // between 1 and 10. If this parameter isn't used, then ListAccountSettings returns + // up to 10 results and a nextToken value if applicable. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/ecs/api_op_ListAttributes.go b/service/ecs/api_op_ListAttributes.go index 66735d94c97..14315931365 100644 --- a/service/ecs/api_op_ListAttributes.go +++ b/service/ecs/api_op_ListAttributes.go @@ -17,8 +17,8 @@ import ( // list of attribute objects, one for each attribute on each resource. You can // filter the list of results to a single attribute name to only return results // that have that name. You can also filter the results by attribute name and -// value, for example, to see which container instances in a cluster are running a -// Linux AMI (ecs.os-type=linux). +// value. You can do this, for example, to see which container instances in a +// cluster are running a Linux AMI (ecs.os-type=linux). func (c *Client) ListAttributes(ctx context.Context, params *ListAttributesInput, optFns ...func(*Options)) (*ListAttributesOutput, error) { if params == nil { params = &ListAttributesInput{} @@ -36,36 +36,36 @@ func (c *Client) ListAttributes(ctx context.Context, params *ListAttributesInput type ListAttributesInput struct { - // The type of the target with which to list attributes. + // The type of the target to list attributes with. // // This member is required. TargetType types.TargetType - // The name of the attribute with which to filter the results. + // The name of the attribute to filter the results with. AttributeName *string - // The value of the attribute with which to filter results. You must also specify - // an attribute name to use this parameter. + // The value of the attribute to filter results with. You must also specify an + // attribute name to use this parameter. AttributeValue *string // The short name or full Amazon Resource Name (ARN) of the cluster to list // attributes. If you do not specify a cluster, the default cluster is assumed. Cluster *string - // The maximum number of cluster results returned by ListAttributes in paginated + // The maximum number of cluster results that ListAttributes returned in paginated // output. When this parameter is used, ListAttributes only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListAttributes // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListAttributes returns up to 100 results and + // If this parameter isn't used, then ListAttributes returns up to 100 results and // a nextToken value if applicable. MaxResults *int32 // The nextToken value returned from a ListAttributes request indicating that more - // results are available to fulfill the request and further calls will be needed. - // If maxResults was provided, it is possible the number of results to be fewer - // than maxResults. This token should be treated as an opaque identifier that is - // only used to retrieve the next items in a list and not for other programmatic + // results are available to fulfill the request and further calls are needed. If + // maxResults was provided, it's possible the number of results to be fewer than + // maxResults. This token should be treated as an opaque identifier that is only + // used to retrieve the next items in a list and not for other programmatic // purposes. NextToken *string @@ -162,12 +162,12 @@ var _ ListAttributesAPIClient = (*Client)(nil) // ListAttributesPaginatorOptions is the paginator options for ListAttributes type ListAttributesPaginatorOptions struct { - // The maximum number of cluster results returned by ListAttributes in paginated + // The maximum number of cluster results that ListAttributes returned in paginated // output. When this parameter is used, ListAttributes only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListAttributes // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListAttributes returns up to 100 results and + // If this parameter isn't used, then ListAttributes returns up to 100 results and // a nextToken value if applicable. Limit int32 diff --git a/service/ecs/api_op_ListClusters.go b/service/ecs/api_op_ListClusters.go index bd7583d2248..73c5054543b 100644 --- a/service/ecs/api_op_ListClusters.go +++ b/service/ecs/api_op_ListClusters.go @@ -29,20 +29,20 @@ func (c *Client) ListClusters(ctx context.Context, params *ListClustersInput, op type ListClustersInput struct { - // The maximum number of cluster results returned by ListClusters in paginated + // The maximum number of cluster results that ListClusters returned in paginated // output. When this parameter is used, ListClusters only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListClusters // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListClusters returns up to 100 results and a + // If this parameter isn't used, then ListClusters returns up to 100 results and a // nextToken value if applicable. MaxResults *int32 // The nextToken value returned from a ListClusters request indicating that more - // results are available to fulfill the request and further calls will be needed. - // If maxResults was provided, it is possible the number of results to be fewer - // than maxResults. This token should be treated as an opaque identifier that is - // only used to retrieve the next items in a list and not for other programmatic + // results are available to fulfill the request and further calls are needed. If + // maxResults was provided, it's possible the number of results to be fewer than + // maxResults. This token should be treated as an opaque identifier that is only + // used to retrieve the next items in a list and not for other programmatic // purposes. NextToken *string @@ -51,8 +51,8 @@ type ListClustersInput struct { type ListClustersOutput struct { - // The list of full Amazon Resource Name (ARN) entries for each cluster associated - // with your account. + // The list of full Amazon Resource Name (ARN) entries for each cluster that's + // associated with your account. ClusterArns []string // The nextToken value to include in a future ListClusters request. When the @@ -136,12 +136,12 @@ var _ ListClustersAPIClient = (*Client)(nil) // ListClustersPaginatorOptions is the paginator options for ListClusters type ListClustersPaginatorOptions struct { - // The maximum number of cluster results returned by ListClusters in paginated + // The maximum number of cluster results that ListClusters returned in paginated // output. When this parameter is used, ListClusters only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListClusters // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListClusters returns up to 100 results and a + // If this parameter isn't used, then ListClusters returns up to 100 results and a // nextToken value if applicable. Limit int32 diff --git a/service/ecs/api_op_ListContainerInstances.go b/service/ecs/api_op_ListContainerInstances.go index 77797fda3f1..93fefc64698 100644 --- a/service/ecs/api_op_ListContainerInstances.go +++ b/service/ecs/api_op_ListContainerInstances.go @@ -46,19 +46,19 @@ type ListContainerInstancesInput struct { // in the Amazon Elastic Container Service Developer Guide. Filter *string - // The maximum number of container instance results returned by - // ListContainerInstances in paginated output. When this parameter is used, + // The maximum number of container instance results that ListContainerInstances + // returned in paginated output. When this parameter is used, // ListContainerInstances only returns maxResults results in a single page along // with a nextToken response element. The remaining results of the initial request // can be seen by sending another ListContainerInstances request with the returned - // nextToken value. This value can be between 1 and 100. If this parameter is not + // nextToken value. This value can be between 1 and 100. If this parameter isn't // used, then ListContainerInstances returns up to 100 results and a nextToken // value if applicable. MaxResults *int32 // The nextToken value returned from a ListContainerInstances request indicating - // that more results are available to fulfill the request and further calls will be - // needed. If maxResults was provided, it is possible the number of results to be + // that more results are available to fulfill the request and further calls are + // needed. If maxResults was provided, it's possible the number of results to be // fewer than maxResults. This token should be treated as an opaque identifier that // is only used to retrieve the next items in a list and not for other programmatic // purposes. @@ -66,7 +66,7 @@ type ListContainerInstancesInput struct { // Filters the container instances by status. For example, if you specify the // DRAINING status, the results include only container instances that have been set - // to DRAINING using UpdateContainerInstancesState. If you do not specify this + // to DRAINING using UpdateContainerInstancesState. If you don't specify this // parameter, the default is to include container instances set to all states other // than INACTIVE. Status types.ContainerInstanceStatus @@ -163,12 +163,12 @@ var _ ListContainerInstancesAPIClient = (*Client)(nil) // ListContainerInstancesPaginatorOptions is the paginator options for // ListContainerInstances type ListContainerInstancesPaginatorOptions struct { - // The maximum number of container instance results returned by - // ListContainerInstances in paginated output. When this parameter is used, + // The maximum number of container instance results that ListContainerInstances + // returned in paginated output. When this parameter is used, // ListContainerInstances only returns maxResults results in a single page along // with a nextToken response element. The remaining results of the initial request // can be seen by sending another ListContainerInstances request with the returned - // nextToken value. This value can be between 1 and 100. If this parameter is not + // nextToken value. This value can be between 1 and 100. If this parameter isn't // used, then ListContainerInstances returns up to 100 results and a nextToken // value if applicable. Limit int32 diff --git a/service/ecs/api_op_ListServices.go b/service/ecs/api_op_ListServices.go index c7684be9bf6..335c6bdfbc3 100644 --- a/service/ecs/api_op_ListServices.go +++ b/service/ecs/api_op_ListServices.go @@ -39,12 +39,12 @@ type ListServicesInput struct { // The launch type to use when filtering the ListServices results. LaunchType types.LaunchType - // The maximum number of service results returned by ListServices in paginated + // The maximum number of service results that ListServices returned in paginated // output. When this parameter is used, ListServices only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListServices // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListServices returns up to 10 results and a + // If this parameter isn't used, then ListServices returns up to 10 results and a // nextToken value if applicable. MaxResults *int32 @@ -70,8 +70,8 @@ type ListServicesOutput struct { // results to return. NextToken *string - // The list of full ARN entries for each service associated with the specified - // cluster. + // The list of full ARN entries for each service that's associated with the + // specified cluster. ServiceArns []string // Metadata pertaining to the operation's result. @@ -149,12 +149,12 @@ var _ ListServicesAPIClient = (*Client)(nil) // ListServicesPaginatorOptions is the paginator options for ListServices type ListServicesPaginatorOptions struct { - // The maximum number of service results returned by ListServices in paginated + // The maximum number of service results that ListServices returned in paginated // output. When this parameter is used, ListServices only returns maxResults // results in a single page along with a nextToken response element. The remaining // results of the initial request can be seen by sending another ListServices // request with the returned nextToken value. This value can be between 1 and 100. - // If this parameter is not used, then ListServices returns up to 10 results and a + // If this parameter isn't used, then ListServices returns up to 10 results and a // nextToken value if applicable. Limit int32 diff --git a/service/ecs/api_op_ListTagsForResource.go b/service/ecs/api_op_ListTagsForResource.go index abba22ba2aa..b958444e163 100644 --- a/service/ecs/api_op_ListTagsForResource.go +++ b/service/ecs/api_op_ListTagsForResource.go @@ -29,9 +29,9 @@ func (c *Client) ListTagsForResource(ctx context.Context, params *ListTagsForRes type ListTagsForResourceInput struct { - // The Amazon Resource Name (ARN) that identifies the resource for which to list - // the tags. Currently, the supported resources are Amazon ECS tasks, services, - // task definitions, clusters, and container instances. + // The Amazon Resource Name (ARN) that identifies the resource to list the tags + // for. Currently, the supported resources are Amazon ECS tasks, services, task + // definitions, clusters, and container instances. // // This member is required. ResourceArn *string diff --git a/service/ecs/api_op_ListTaskDefinitionFamilies.go b/service/ecs/api_op_ListTaskDefinitionFamilies.go index 761af2afdbf..8bf1922b5d5 100644 --- a/service/ecs/api_op_ListTaskDefinitionFamilies.go +++ b/service/ecs/api_op_ListTaskDefinitionFamilies.go @@ -12,9 +12,9 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns a list of task definition families that are registered to your account -// (which may include task definition families that no longer have any ACTIVE task -// definition revisions). You can filter out task definition families that do not +// Returns a list of task definition families that are registered to your account. +// This list includes task definition families that no longer have any ACTIVE task +// definition revisions. You can filter out task definition families that don't // contain any ACTIVE task definition revisions by setting the status parameter to // ACTIVE. You can also filter the results with the familyPrefix parameter. func (c *Client) ListTaskDefinitionFamilies(ctx context.Context, params *ListTaskDefinitionFamiliesInput, optFns ...func(*Options)) (*ListTaskDefinitionFamiliesOutput, error) { @@ -34,19 +34,19 @@ func (c *Client) ListTaskDefinitionFamilies(ctx context.Context, params *ListTas type ListTaskDefinitionFamiliesInput struct { - // The familyPrefix is a string that is used to filter the results of + // The familyPrefix is a string that's used to filter the results of // ListTaskDefinitionFamilies. If you specify a familyPrefix, only task definition // family names that begin with the familyPrefix string are returned. FamilyPrefix *string - // The maximum number of task definition family results returned by - // ListTaskDefinitionFamilies in paginated output. When this parameter is used, - // ListTaskDefinitions only returns maxResults results in a single page along with - // a nextToken response element. The remaining results of the initial request can - // be seen by sending another ListTaskDefinitionFamilies request with the returned - // nextToken value. This value can be between 1 and 100. If this parameter is not - // used, then ListTaskDefinitionFamilies returns up to 100 results and a nextToken - // value if applicable. + // The maximum number of task definition family results that + // ListTaskDefinitionFamilies returned in paginated output. When this parameter is + // used, ListTaskDefinitions only returns maxResults results in a single page along + // with a nextToken response element. The remaining results of the initial request + // can be seen by sending another ListTaskDefinitionFamilies request with the + // returned nextToken value. This value can be between 1 and 100. If this parameter + // isn't used, then ListTaskDefinitionFamilies returns up to 100 results and a + // nextToken value if applicable. MaxResults *int32 // The nextToken value returned from a ListTaskDefinitionFamilies request @@ -57,14 +57,13 @@ type ListTaskDefinitionFamiliesInput struct { // other programmatic purposes. NextToken *string - // The task definition family status with which to filter the - // ListTaskDefinitionFamilies results. By default, both ACTIVE and INACTIVE task - // definition families are listed. If this parameter is set to ACTIVE, only task - // definition families that have an ACTIVE task definition revision are returned. - // If this parameter is set to INACTIVE, only task definition families that do not - // have any ACTIVE task definition revisions are returned. If you paginate the - // resulting output, be sure to keep the status value constant in each subsequent - // request. + // The task definition family status to filter the ListTaskDefinitionFamilies + // results with. By default, both ACTIVE and INACTIVE task definition families are + // listed. If this parameter is set to ACTIVE, only task definition families that + // have an ACTIVE task definition revision are returned. If this parameter is set + // to INACTIVE, only task definition families that do not have any ACTIVE task + // definition revisions are returned. If you paginate the resulting output, be sure + // to keep the status value constant in each subsequent request. Status types.TaskDefinitionFamilyStatus noSmithyDocumentSerde @@ -159,14 +158,14 @@ var _ ListTaskDefinitionFamiliesAPIClient = (*Client)(nil) // ListTaskDefinitionFamiliesPaginatorOptions is the paginator options for // ListTaskDefinitionFamilies type ListTaskDefinitionFamiliesPaginatorOptions struct { - // The maximum number of task definition family results returned by - // ListTaskDefinitionFamilies in paginated output. When this parameter is used, - // ListTaskDefinitions only returns maxResults results in a single page along with - // a nextToken response element. The remaining results of the initial request can - // be seen by sending another ListTaskDefinitionFamilies request with the returned - // nextToken value. This value can be between 1 and 100. If this parameter is not - // used, then ListTaskDefinitionFamilies returns up to 100 results and a nextToken - // value if applicable. + // The maximum number of task definition family results that + // ListTaskDefinitionFamilies returned in paginated output. When this parameter is + // used, ListTaskDefinitions only returns maxResults results in a single page along + // with a nextToken response element. The remaining results of the initial request + // can be seen by sending another ListTaskDefinitionFamilies request with the + // returned nextToken value. This value can be between 1 and 100. If this parameter + // isn't used, then ListTaskDefinitionFamilies returns up to 100 results and a + // nextToken value if applicable. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/ecs/api_op_ListTaskDefinitions.go b/service/ecs/api_op_ListTaskDefinitions.go index bbd62976f18..c5781e330c5 100644 --- a/service/ecs/api_op_ListTaskDefinitions.go +++ b/service/ecs/api_op_ListTaskDefinitions.go @@ -32,18 +32,19 @@ func (c *Client) ListTaskDefinitions(ctx context.Context, params *ListTaskDefini type ListTaskDefinitionsInput struct { - // The full family name with which to filter the ListTaskDefinitions results. - // Specifying a familyPrefix limits the listed task definitions to task definition - // revisions that belong to that family. + // The full family name to filter the ListTaskDefinitions results with. Specifying + // a familyPrefix limits the listed task definitions to task definition revisions + // that belong to that family. FamilyPrefix *string - // The maximum number of task definition results returned by ListTaskDefinitions in - // paginated output. When this parameter is used, ListTaskDefinitions only returns - // maxResults results in a single page along with a nextToken response element. The - // remaining results of the initial request can be seen by sending another - // ListTaskDefinitions request with the returned nextToken value. This value can be - // between 1 and 100. If this parameter is not used, then ListTaskDefinitions - // returns up to 100 results and a nextToken value if applicable. + // The maximum number of task definition results that ListTaskDefinitions returned + // in paginated output. When this parameter is used, ListTaskDefinitions only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListTaskDefinitions request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListTaskDefinitions returns up to 100 results and a nextToken value if + // applicable. MaxResults *int32 // The nextToken value returned from a ListTaskDefinitions request indicating that @@ -54,19 +55,19 @@ type ListTaskDefinitionsInput struct { // purposes. NextToken *string - // The order in which to sort the results. Valid values are ASC and DESC. By - // default (ASC), task definitions are listed lexicographically by family name and - // in ascending numerical order by revision so that the newest task definitions in - // a family are listed last. Setting this parameter to DESC reverses the sort order - // on family name and revision so that the newest task definitions in a family are - // listed first. + // The order to sort the results in. Valid values are ASC and DESC. By default, + // (ASC) task definitions are listed lexicographically by family name and in + // ascending numerical order by revision so that the newest task definitions in a + // family are listed last. Setting this parameter to DESC reverses the sort order + // on family name and revision. This is so that the newest task definitions in a + // family are listed first. Sort types.SortOrder - // The task definition status with which to filter the ListTaskDefinitions results. - // By default, only ACTIVE task definitions are listed. By setting this parameter - // to INACTIVE, you can view task definitions that are INACTIVE as long as an - // active task or service still references them. If you paginate the resulting - // output, be sure to keep the status value constant in each subsequent request. + // The task definition status to filter the ListTaskDefinitions results with. By + // default, only ACTIVE task definitions are listed. By setting this parameter to + // INACTIVE, you can view task definitions that are INACTIVE as long as an active + // task or service still references them. If you paginate the resulting output, be + // sure to keep the status value constant in each subsequent request. Status types.TaskDefinitionStatus noSmithyDocumentSerde @@ -161,13 +162,14 @@ var _ ListTaskDefinitionsAPIClient = (*Client)(nil) // ListTaskDefinitionsPaginatorOptions is the paginator options for // ListTaskDefinitions type ListTaskDefinitionsPaginatorOptions struct { - // The maximum number of task definition results returned by ListTaskDefinitions in - // paginated output. When this parameter is used, ListTaskDefinitions only returns - // maxResults results in a single page along with a nextToken response element. The - // remaining results of the initial request can be seen by sending another - // ListTaskDefinitions request with the returned nextToken value. This value can be - // between 1 and 100. If this parameter is not used, then ListTaskDefinitions - // returns up to 100 results and a nextToken value if applicable. + // The maximum number of task definition results that ListTaskDefinitions returned + // in paginated output. When this parameter is used, ListTaskDefinitions only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListTaskDefinitions request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListTaskDefinitions returns up to 100 results and a nextToken value if + // applicable. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/ecs/api_op_ListTasks.go b/service/ecs/api_op_ListTasks.go index 457ff9d8ba7..0fd92eed26e 100644 --- a/service/ecs/api_op_ListTasks.go +++ b/service/ecs/api_op_ListTasks.go @@ -46,11 +46,11 @@ type ListTasksInput struct { // The task desired status to use when filtering the ListTasks results. Specifying // a desiredStatus of STOPPED limits the results to tasks that Amazon ECS has set - // the desired status to STOPPED. This can be useful for debugging tasks that are - // not starting properly or have died or finished. The default status filter is + // the desired status to STOPPED. This can be useful for debugging tasks that + // aren't starting properly or have died or finished. The default status filter is // RUNNING, which shows tasks that Amazon ECS has set the desired status to // RUNNING. Although you can filter results based on a desired status of PENDING, - // this does not return any results. Amazon ECS never sets the desired status of a + // this doesn't return any results. Amazon ECS never sets the desired status of a // task to that value (only a task's lastStatus may have a value of PENDING). DesiredStatus types.DesiredStatus @@ -62,20 +62,20 @@ type ListTasksInput struct { // The launch type to use when filtering the ListTasks results. LaunchType types.LaunchType - // The maximum number of task results returned by ListTasks in paginated output. + // The maximum number of task results that ListTasks returned in paginated output. // When this parameter is used, ListTasks only returns maxResults results in a // single page along with a nextToken response element. The remaining results of // the initial request can be seen by sending another ListTasks request with the // returned nextToken value. This value can be between 1 and 100. If this parameter - // is not used, then ListTasks returns up to 100 results and a nextToken value if + // isn't used, then ListTasks returns up to 100 results and a nextToken value if // applicable. MaxResults *int32 // The nextToken value returned from a ListTasks request indicating that more // results are available to fulfill the request and further calls will be needed. - // If maxResults was provided, it is possible the number of results to be fewer - // than maxResults. This token should be treated as an opaque identifier that is - // only used to retrieve the next items in a list and not for other programmatic + // If maxResults was provided, it's possible the number of results to be fewer than + // maxResults. This token should be treated as an opaque identifier that is only + // used to retrieve the next items in a list and not for other programmatic // purposes. NextToken *string @@ -83,8 +83,8 @@ type ListTasksInput struct { // a serviceName limits the results to tasks that belong to that service. ServiceName *string - // The startedBy value with which to filter the task results. Specifying a - // startedBy value limits the results to tasks that were started with that value. + // The startedBy value to filter the task results with. Specifying a startedBy + // value limits the results to tasks that were started with that value. StartedBy *string noSmithyDocumentSerde @@ -176,12 +176,12 @@ var _ ListTasksAPIClient = (*Client)(nil) // ListTasksPaginatorOptions is the paginator options for ListTasks type ListTasksPaginatorOptions struct { - // The maximum number of task results returned by ListTasks in paginated output. + // The maximum number of task results that ListTasks returned in paginated output. // When this parameter is used, ListTasks only returns maxResults results in a // single page along with a nextToken response element. The remaining results of // the initial request can be seen by sending another ListTasks request with the // returned nextToken value. This value can be between 1 and 100. If this parameter - // is not used, then ListTasks returns up to 100 results and a nextToken value if + // isn't used, then ListTasks returns up to 100 results and a nextToken value if // applicable. Limit int32 diff --git a/service/ecs/api_op_PutAccountSetting.go b/service/ecs/api_op_PutAccountSetting.go index b26b8545405..caa6918a655 100644 --- a/service/ecs/api_op_PutAccountSetting.go +++ b/service/ecs/api_op_PutAccountSetting.go @@ -13,22 +13,22 @@ import ( // Modifies an account setting. Account settings are set on a per-Region basis. If // you change the account setting for the root user, the default settings for all -// of the IAM users and roles for which no individual account setting has been -// specified are reset. For more information, see Account Settings +// of the IAM users and roles that no individual account setting was specified are +// reset for. For more information, see Account Settings // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html) // in the Amazon Elastic Container Service Developer Guide. When // serviceLongArnFormat, taskLongArnFormat, or containerInstanceLongArnFormat are // specified, the Amazon Resource Name (ARN) and resource ID format of the resource // type for a specified IAM user, IAM role, or the root user for an account is // affected. The opt-in and opt-out account setting must be set for each Amazon ECS -// resource separately. The ARN and resource ID format of a resource will be -// defined by the opt-in status of the IAM user or role that created the resource. -// You must enable this setting to use Amazon ECS features such as resource -// tagging. When awsvpcTrunking is specified, the elastic network interface (ENI) -// limit for any new container instances that support the feature is changed. If -// awsvpcTrunking is enabled, any new container instances that support the feature -// are launched have the increased ENI limits available to them. For more -// information, see Elastic Network Interface Trunking +// resource separately. The ARN and resource ID format of a resource is defined by +// the opt-in status of the IAM user or role that created the resource. You must +// enable this setting to use Amazon ECS features such as resource tagging. When +// awsvpcTrunking is specified, the elastic network interface (ENI) limit for any +// new container instances that support the feature is changed. If awsvpcTrunking +// is enabled, any new container instances that support the feature are launched +// have the increased ENI limits available to them. For more information, see +// Elastic Network Interface Trunking // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html) // in the Amazon Elastic Container Service Developer Guide. When containerInsights // is specified, the default setting indicating whether CloudWatch Container diff --git a/service/ecs/api_op_PutAttributes.go b/service/ecs/api_op_PutAttributes.go index f24988c235f..7b2331094d6 100644 --- a/service/ecs/api_op_PutAttributes.go +++ b/service/ecs/api_op_PutAttributes.go @@ -11,8 +11,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Create or update an attribute on an Amazon ECS resource. If the attribute does -// not exist, it is created. If the attribute exists, its value is replaced with +// Create or update an attribute on an Amazon ECS resource. If the attribute +// doesn't exist, it's created. If the attribute exists, its value is replaced with // the specified value. To delete an attribute, use DeleteAttributes. For more // information, see Attributes // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes) @@ -35,7 +35,8 @@ func (c *Client) PutAttributes(ctx context.Context, params *PutAttributesInput, type PutAttributesInput struct { // The attributes to apply to your resource. You can specify up to 10 custom - // attributes per resource. You can specify up to 10 attributes in a single call. + // attributes for each resource. You can specify up to 10 attributes in a single + // call. // // This member is required. Attributes []types.Attribute diff --git a/service/ecs/api_op_PutClusterCapacityProviders.go b/service/ecs/api_op_PutClusterCapacityProviders.go index 1c1300c682d..20fb674fbae 100644 --- a/service/ecs/api_op_PutClusterCapacityProviders.go +++ b/service/ecs/api_op_PutClusterCapacityProviders.go @@ -16,14 +16,14 @@ import ( // and a default capacity provider strategy for the cluster. If the specified // cluster has existing capacity providers associated with it, you must specify all // existing capacity providers in addition to any new ones you want to add. Any -// existing capacity providers associated with a cluster that are omitted from a -// PutClusterCapacityProviders API call will be disassociated with the cluster. You -// can only disassociate an existing capacity provider from a cluster if it's not -// being used by any existing tasks. When creating a service or running a task on a -// cluster, if no capacity provider or launch type is specified, then the cluster's -// default capacity provider strategy is used. It is recommended to define a -// default capacity provider strategy for your cluster, however you may specify an -// empty array ([]) to bypass defining a default strategy. +// existing capacity providers that are associated with a cluster that are omitted +// from a PutClusterCapacityProviders API call will be disassociated with the +// cluster. You can only disassociate an existing capacity provider from a cluster +// if it's not being used by any existing tasks. When creating a service or running +// a task on a cluster, if no capacity provider or launch type is specified, then +// the cluster's default capacity provider strategy is used. We recommend that you +// define a default capacity provider strategy for your cluster. However, you must +// specify an empty array ([]) to bypass defining a default strategy. func (c *Client) PutClusterCapacityProviders(ctx context.Context, params *PutClusterCapacityProvidersInput, optFns ...func(*Options)) (*PutClusterCapacityProvidersOutput, error) { if params == nil { params = &PutClusterCapacityProvidersInput{} @@ -53,7 +53,7 @@ type PutClusterCapacityProvidersInput struct { CapacityProviders []string // The short name or full Amazon Resource Name (ARN) of the cluster to modify the - // capacity provider settings for. If you do not specify a cluster, the default + // capacity provider settings for. If you don't specify a cluster, the default // cluster is assumed. // // This member is required. diff --git a/service/ecs/api_op_RegisterContainerInstance.go b/service/ecs/api_op_RegisterContainerInstance.go index 704f050fa75..ac59d3b9966 100644 --- a/service/ecs/api_op_RegisterContainerInstance.go +++ b/service/ecs/api_op_RegisterContainerInstance.go @@ -34,8 +34,8 @@ type RegisterContainerInstanceInput struct { // The container instance attributes that this container instance supports. Attributes []types.Attribute - // The short name or full Amazon Resource Name (ARN) of the cluster with which to - // register your container instance. If you do not specify a cluster, the default + // The short name or full Amazon Resource Name (ARN) of the cluster to register + // your container instance with. If you do not specify a cluster, the default // cluster is assumed. Cluster *string @@ -57,25 +57,25 @@ type RegisterContainerInstanceInput struct { PlatformDevices []types.PlatformDevice // The metadata that you apply to the container instance to help you categorize and - // organize them. Each tag consists of a key and an optional value, both of which - // you define. The following basic restrictions apply to tags: + // organize them. Each tag consists of a key and an optional value. You define + // both. The following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags + // per resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each + // tag key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters + // in UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -90,7 +90,7 @@ type RegisterContainerInstanceInput struct { TotalResources []types.Resource // The version information for the Amazon ECS container agent and Docker daemon - // running on the container instance. + // that runs on the container instance. VersionInfo *types.VersionInfo noSmithyDocumentSerde diff --git a/service/ecs/api_op_RegisterTaskDefinition.go b/service/ecs/api_op_RegisterTaskDefinition.go index 1b73948fe5e..1d28dc060c7 100644 --- a/service/ecs/api_op_RegisterTaskDefinition.go +++ b/service/ecs/api_op_RegisterTaskDefinition.go @@ -20,8 +20,8 @@ import ( // role for your task with the taskRoleArn parameter. When you specify an IAM role // for a task, its containers can then use the latest versions of the CLI or SDKs // to make API requests to the Amazon Web Services services that are specified in -// the IAM policy associated with the role. For more information, see IAM Roles for -// Tasks +// the IAM policy that's associated with the role. For more information, see IAM +// Roles for Tasks // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) // in the Amazon Elastic Container Service Developer Guide. You can specify a // Docker networking mode for the containers in your task definition with the @@ -57,41 +57,43 @@ type RegisterTaskDefinitionInput struct { // This member is required. ContainerDefinitions []types.ContainerDefinition - // You must specify a family for a task definition, which allows you to track - // multiple versions of the same task definition. The family is used as a name for - // your task definition. Up to 255 letters (uppercase and lowercase), numbers, - // underscores, and hyphens are allowed. + // You must specify a family for a task definition. You can use it track multiple + // versions of the same task definition. The family is used as a name for your task + // definition. Up to 255 letters (uppercase and lowercase), numbers, underscores, + // and hyphens are allowed. // // This member is required. Family *string // The number of CPU units used by the task. It can be expressed as an integer - // using CPU units, for example 1024, or as a string using vCPUs, for example 1 - // vCPU or 1 vcpu, in a task definition. String values are converted to an integer + // using CPU units (for example, 1024) or as a string using vCPUs (for example, 1 + // vCPU or 1 vcpu) in a task definition. String values are converted to an integer // indicating the CPU units when the task definition is registered. Task-level CPU // and memory parameters are ignored for Windows containers. We recommend - // specifying container-level resources for Windows containers. If you are using - // the EC2 launch type, this field is optional. Supported values are between 128 - // CPU units (0.125 vCPUs) and 10240 CPU units (10 vCPUs). If you are using the - // Fargate launch type, this field is required and you must use one of the - // following values, which determines your range of supported values for the memory - // parameter: + // specifying container-level resources for Windows containers. If you're using the + // EC2 launch type, this field is optional. Supported values are between 128 CPU + // units (0.125 vCPUs) and 10240 CPU units (10 vCPUs). If you're using the Fargate + // launch type, this field is required and you must use one of the following + // values, which determines your range of supported values for the memory + // parameter: The CPU units cannot be less than 1 vCPU when you use Windows + // containers on Fargate. // - // * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 - // GB), 2048 (2 GB) + // * 256 (.25 vCPU) - Available memory values: 512 (0.5 + // GB), 1024 (1 GB), 2048 (2 GB) // - // * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 - // (2 GB), 3072 (3 GB), 4096 (4 GB) + // * 512 (.5 vCPU) - Available memory values: 1024 + // (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) // - // * 1024 (1 vCPU) - Available memory values: - // 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), - // 8192 (8 GB) + // * 1024 (1 vCPU) - Available + // memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), + // 7168 (7 GB), 8192 (8 GB) // - // * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and - // 16384 (16 GB) in increments of 1024 (1 GB) + // * 2048 (2 vCPU) - Available memory values: Between + // 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) // - // * 4096 (4 vCPU) - Available memory - // values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) + // * 4096 (4 vCPU) - + // Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of + // 1024 (1 GB) Cpu *string // The amount of ephemeral storage to allocate for the task. This parameter is used @@ -150,30 +152,32 @@ type RegisterTaskDefinitionInput struct { IpcMode types.IpcMode // The amount of memory (in MiB) used by the task. It can be expressed as an - // integer using MiB, for example 1024, or as a string using GB, for example 1GB or - // 1 GB, in a task definition. String values are converted to an integer indicating - // the MiB when the task definition is registered. Task-level CPU and memory - // parameters are ignored for Windows containers. We recommend specifying + // integer using MiB (for example ,1024) or as a string using GB (for example, 1GB + // or 1 GB) in a task definition. String values are converted to an integer + // indicating the MiB when the task definition is registered. Task-level CPU and + // memory parameters are ignored for Windows containers. We recommend specifying // container-level resources for Windows containers. If using the EC2 launch type, // this field is optional. If using the Fargate launch type, this field is required - // and you must use one of the following values, which determines your range of - // supported values for the cpu parameter: + // and you must use one of the following values. This determines your range of + // supported values for the cpu parameter. The CPU units cannot be less than 1 vCPU + // when you use Windows containers on Fargate. // - // * 512 (0.5 GB), 1024 (1 GB), 2048 (2 - // GB) - Available cpu values: 256 (.25 vCPU) + // * 512 (0.5 GB), 1024 (1 GB), 2048 + // (2 GB) - Available cpu values: 256 (.25 vCPU) // - // * 1024 (1 GB), 2048 (2 GB), 3072 (3 - // GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) + // * 1024 (1 GB), 2048 (2 GB), 3072 + // (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) // - // * 2048 (2 GB), 3072 (3 - // GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available - // cpu values: 1024 (1 vCPU) + // * 2048 (2 GB), 3072 + // (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - + // Available cpu values: 1024 (1 vCPU) // - // * Between 4096 (4 GB) and 16384 (16 GB) in increments - // of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) + // * Between 4096 (4 GB) and 16384 (16 GB) in + // increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) // - // * Between 8192 (8 GB) and - // 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) + // * Between 8192 + // (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: + // 4096 (4 vCPU) Memory *string // The Docker networking mode to use for the containers in the task. The valid @@ -219,8 +223,8 @@ type RegisterTaskDefinitionInput struct { PidMode types.PidMode // An array of placement constraint objects to use for the task. You can specify a - // maximum of 10 constraints per task (this limit includes constraints in the task - // definition and those specified at runtime). + // maximum of 10 constraints for each task. This limit includes constraints in the + // task definition and those specified at runtime. PlacementConstraints []types.TaskDefinitionPlacementConstraint // The configuration details for the App Mesh proxy. For tasks hosted on Amazon EC2 @@ -234,10 +238,10 @@ type RegisterTaskDefinitionInput struct { // in the Amazon Elastic Container Service Developer Guide. ProxyConfiguration *types.ProxyConfiguration - // The task launch type that Amazon ECS should validate the task definition - // against. A client exception is returned if the task definition doesn't validate - // against the compatibilities specified. If no value is specified, the parameter - // is omitted from the response. + // The task launch type that Amazon ECS validates the task definition against. A + // client exception is returned if the task definition doesn't validate against the + // compatibilities specified. If no value is specified, the parameter is omitted + // from the response. RequiresCompatibilities []types.Compatibility // The operating system that your tasks definitions run on. A platform family is @@ -247,8 +251,8 @@ type RegisterTaskDefinitionInput struct { RuntimePlatform *types.RuntimePlatform // The metadata that you apply to the task definition to help you categorize and - // organize them. Each tag consists of a key and an optional value, both of which - // you define. The following basic restrictions apply to tags: + // organize them. Each tag consists of a key and an optional value. You define both + // of them. The following basic restrictions apply to tags: // // * Maximum number of // tags per resource - 50 @@ -284,7 +288,7 @@ type RegisterTaskDefinitionInput struct { // in the Amazon Elastic Container Service Developer Guide. TaskRoleArn *string - // A list of volume definitions in JSON format that containers in your task may + // A list of volume definitions in JSON format that containers in your task might // use. Volumes []types.Volume diff --git a/service/ecs/api_op_RunTask.go b/service/ecs/api_op_RunTask.go index bda52aed2a0..e1e7ecb681c 100644 --- a/service/ecs/api_op_RunTask.go +++ b/service/ecs/api_op_RunTask.go @@ -18,25 +18,25 @@ import ( // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html) // in the Amazon Elastic Container Service Developer Guide. Alternatively, you can // use StartTask to use your own scheduler or place tasks manually on specific -// container instances. The Amazon ECS API follows an eventual consistency model, -// due to the distributed nature of the system supporting the API. This means that -// the result of an API command you run that affects your Amazon ECS resources -// might not be immediately visible to all subsequent commands you run. Keep this -// in mind when you carry out an API command that immediately follows a previous -// API command. To manage eventual consistency, you can do the following: +// container instances. The Amazon ECS API follows an eventual consistency model. +// This is because the distributed nature of the system supporting the API. This +// means that the result of an API command you run that affects your Amazon ECS +// resources might not be immediately visible to all subsequent commands you run. +// Keep this in mind when you carry out an API command that immediately follows a +// previous API command. To manage eventual consistency, you can do the +// following: // -// * -// Confirm the state of the resource before you run a command to modify it. Run the -// DescribeTasks command using an exponential backoff algorithm to ensure that you -// allow enough time for the previous command to propagate through the system. To -// do this, run the DescribeTasks command repeatedly, starting with a couple of -// seconds of wait time and increasing gradually up to five minutes of wait -// time. +// * Confirm the state of the resource before you run a command to +// modify it. Run the DescribeTasks command using an exponential backoff algorithm +// to ensure that you allow enough time for the previous command to propagate +// through the system. To do this, run the DescribeTasks command repeatedly, +// starting with a couple of seconds of wait time and increasing gradually up to +// five minutes of wait time. // -// * Add wait time between subsequent commands, even if the DescribeTasks -// command returns an accurate response. Apply an exponential backoff algorithm -// starting with a couple of seconds of wait time, and increase gradually up to -// about five minutes of wait time. +// * Add wait time between subsequent commands, even if +// the DescribeTasks command returns an accurate response. Apply an exponential +// backoff algorithm starting with a couple of seconds of wait time, and increase +// gradually up to about five minutes of wait time. func (c *Client) RunTask(ctx context.Context, params *RunTaskInput, optFns ...func(*Options)) (*RunTaskOutput, error) { if params == nil { params = &RunTaskInput{} @@ -55,9 +55,9 @@ func (c *Client) RunTask(ctx context.Context, params *RunTaskInput, optFns ...fu type RunTaskInput struct { // The family and revision (family:revision) or full ARN of the task definition to - // run. If a revision is not specified, the latest ACTIVE revision is used. The - // full ARN value must match the value that you specified ias the Resource of the - // IAM principal's permissions policy. For example, if the Resource is + // run. If a revision isn't specified, the latest ACTIVE revision is used. The full + // ARN value must match the value that you specified as the Resource of the IAM + // principal's permissions policy. For example, if the Resource is // arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:*, the // taskDefinition ARN value must be // arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName. @@ -73,12 +73,12 @@ type RunTaskInput struct { // capacity provider strategy may contain a maximum of 6 capacity providers. CapacityProviderStrategy []types.CapacityProviderStrategyItem - // The short name or full Amazon Resource Name (ARN) of the cluster on which to run - // your task. If you do not specify a cluster, the default cluster is assumed. + // The short name or full Amazon Resource Name (ARN) of the cluster to run your + // task on. If you do not specify a cluster, the default cluster is assumed. Cluster *string // The number of instantiations of the specified task to place on your cluster. You - // can specify up to 10 tasks per call. + // can specify up to 10 tasks for each call. Count *int32 // Specifies whether to enable Amazon ECS managed tags for the task. For more @@ -87,17 +87,17 @@ type RunTaskInput struct { // in the Amazon Elastic Container Service Developer Guide. EnableECSManagedTags bool - // Whether or not to enable the execute command functionality for the containers in - // this task. If true, this enables execute command functionality on all containers - // in the task. + // Determines whether to enable the execute command functionality for the + // containers in this task. If true, this enables execute command functionality on + // all containers in the task. EnableExecuteCommand bool // The name of the task group to associate with the task. The default value is the // family name of the task definition (for example, family:my-family-name). Group *string - // The infrastructure on which to run your standalone task. For more information, - // see Amazon ECS launch types + // The infrastructure to run your standalone task on. For more information, see + // Amazon ECS launch types // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) // in the Amazon Elastic Container Service Developer Guide. The FARGATE launch type // runs your tasks on Fargate On-Demand infrastructure. Fargate Spot infrastructure @@ -106,16 +106,16 @@ type RunTaskInput struct { // (https://docs.aws.amazon.com/AmazonECS/latest/userguide/fargate-capacity-providers.html) // in the Amazon ECS User Guide for Fargate. The EC2 launch type runs your tasks on // Amazon EC2 instances registered to your cluster. The EXTERNAL launch type runs - // your tasks on your on-premise server or virtual machine (VM) capacity registered - // to your cluster. A task can use either a launch type or a capacity provider - // strategy. If a launchType is specified, the capacityProviderStrategy parameter - // must be omitted. When you use cluster auto scaling, you must specify + // your tasks on your on-premises server or virtual machine (VM) capacity + // registered to your cluster. A task can use either a launch type or a capacity + // provider strategy. If a launchType is specified, the capacityProviderStrategy + // parameter must be omitted. When you use cluster auto scaling, you must specify // capacityProviderStrategy and not launchType. LaunchType types.LaunchType // The network configuration for the task. This parameter is required for task // definitions that use the awsvpc network mode to receive their own elastic - // network interface, and it is not supported for other network modes. For more + // network interface, and it isn't supported for other network modes. For more // information, see Task networking // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) // in the Amazon Elastic Container Service Developer Guide. @@ -123,7 +123,7 @@ type RunTaskInput struct { // A list of container overrides in JSON format that specify the name of a // container in the specified task definition and the overrides it should receive. - // You can override the default command for a container (that is specified in the + // You can override the default command for a container (that's specified in the // task definition or Docker image) with a command override. You can also override // existing environment variables (that are specified in the task definition or // Docker image) on a container or add new environment variables to it with an @@ -132,23 +132,23 @@ type RunTaskInput struct { Overrides *types.TaskOverride // An array of placement constraint objects to use for the task. You can specify up - // to 10 constraints per task (including constraints in the task definition and - // those specified at runtime). + // to 10 constraints for each task (including constraints in the task definition + // and those specified at runtime). PlacementConstraints []types.PlacementConstraint // The placement strategy objects to use for the task. You can specify a maximum of - // 5 strategy rules per task. + // 5 strategy rules for each task. PlacementStrategy []types.PlacementStrategy - // The platform version the task should use. A platform version is only specified - // for tasks hosted on Fargate. If one is not specified, the LATEST platform - // version is used by default. For more information, see Fargate platform versions + // The platform version the task uses. A platform version is only specified for + // tasks hosted on Fargate. If one isn't specified, the LATEST platform version is + // used. For more information, see Fargate platform versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string // Specifies whether to propagate the tags from the task definition to the task. If - // no value is specified, the tags are not propagated. Tags can only be propagated + // no value is specified, the tags aren't propagated. Tags can only be propagated // to the task during task creation. To add tags to a task after task creation, use // the TagResource API action. An error will be received if you specify the SERVICE // option when running a task. @@ -163,9 +163,9 @@ type RunTaskInput struct { // unique identifier for that job to your task with the startedBy parameter. You // can then identify which tasks belong to that job by filtering the results of a // ListTasks call with the startedBy value. Up to 36 letters (uppercase and - // lowercase), numbers, hyphens, and underscores are allowed. If a task is started - // by an Amazon ECS service, then the startedBy parameter contains the deployment - // ID of the service that starts it. + // lowercase), numbers, hyphens (-), and underscores (_) are allowed. If a task is + // started by an Amazon ECS service, then the startedBy parameter contains the + // deployment ID of the service that starts it. StartedBy *string // The metadata that you apply to the task to help you categorize and organize diff --git a/service/ecs/api_op_StartTask.go b/service/ecs/api_op_StartTask.go index 85a50746316..9e4cb221267 100644 --- a/service/ecs/api_op_StartTask.go +++ b/service/ecs/api_op_StartTask.go @@ -33,22 +33,20 @@ func (c *Client) StartTask(ctx context.Context, params *StartTaskInput, optFns . type StartTaskInput struct { - // The container instance IDs or full ARN entries for the container instances on - // which you would like to place your task. You can specify up to 10 container - // instances. + // The container instance IDs or full ARN entries for the container instances where + // you would like to place your task. You can specify up to 10 container instances. // // This member is required. ContainerInstances []string // The family and revision (family:revision) or full ARN of the task definition to - // start. If a revision is not specified, the latest ACTIVE revision is used. + // start. If a revision isn't specified, the latest ACTIVE revision is used. // // This member is required. TaskDefinition *string - // The short name or full Amazon Resource Name (ARN) of the cluster on which to - // start your task. If you do not specify a cluster, the default cluster is - // assumed. + // The short name or full Amazon Resource Name (ARN) of the cluster where to start + // your task. If you do not specify a cluster, the default cluster is assumed. Cluster *string // Specifies whether to enable Amazon ECS managed tags for the task. For more @@ -70,9 +68,9 @@ type StartTaskInput struct { NetworkConfiguration *types.NetworkConfiguration // A list of container overrides in JSON format that specify the name of a - // container in the specified task definition and the overrides it should receive. - // You can override the default command for a container (that is specified in the - // task definition or Docker image) with a command override. You can also override + // container in the specified task definition and the overrides it receives. You + // can override the default command for a container (that's specified in the task + // definition or Docker image) with a command override. You can also override // existing environment variables (that are specified in the task definition or // Docker image) on a container or add new environment variables to it with an // environment override. A total of 8192 characters are allowed for overrides. This @@ -80,7 +78,7 @@ type StartTaskInput struct { Overrides *types.TaskOverride // Specifies whether to propagate the tags from the task definition or the service - // to the task. If no value is specified, the tags are not propagated. + // to the task. If no value is specified, the tags aren't propagated. PropagateTags types.PropagateTags // The reference ID to use for the task. @@ -91,9 +89,9 @@ type StartTaskInput struct { // unique identifier for that job to your task with the startedBy parameter. You // can then identify which tasks belong to that job by filtering the results of a // ListTasks call with the startedBy value. Up to 36 letters (uppercase and - // lowercase), numbers, hyphens, and underscores are allowed. If a task is started - // by an Amazon ECS service, then the startedBy parameter contains the deployment - // ID of the service that starts it. + // lowercase), numbers, hyphens (-), and underscores (_) are allowed. If a task is + // started by an Amazon ECS service, the startedBy parameter contains the + // deployment ID of the service that starts it. StartedBy *string // The metadata that you apply to the task to help you categorize and organize diff --git a/service/ecs/api_op_StopTask.go b/service/ecs/api_op_StopTask.go index 5d56998fa5a..c241fd08e83 100644 --- a/service/ecs/api_op_StopTask.go +++ b/service/ecs/api_op_StopTask.go @@ -48,7 +48,7 @@ type StopTaskInput struct { // task to stop. If you do not specify a cluster, the default cluster is assumed. Cluster *string - // An optional message specified when a task is stopped. For example, if you are + // An optional message specified when a task is stopped. For example, if you're // using a custom scheduler, you can use this parameter to specify the reason for // stopping the task here, and the message appears in subsequent DescribeTasks API // operations on this task. Up to 255 characters are allowed in this message. diff --git a/service/ecs/api_op_SubmitContainerStateChange.go b/service/ecs/api_op_SubmitContainerStateChange.go index 74d8907752d..94f0e50c51f 100644 --- a/service/ecs/api_op_SubmitContainerStateChange.go +++ b/service/ecs/api_op_SubmitContainerStateChange.go @@ -36,7 +36,7 @@ type SubmitContainerStateChangeInput struct { // The name of the container. ContainerName *string - // The exit code returned for the state change request. + // The exit code that's returned for the state change request. ExitCode *int32 // The network bindings of the container. diff --git a/service/ecs/api_op_SubmitTaskStateChange.go b/service/ecs/api_op_SubmitTaskStateChange.go index a1ca2cf307b..52279f1a460 100644 --- a/service/ecs/api_op_SubmitTaskStateChange.go +++ b/service/ecs/api_op_SubmitTaskStateChange.go @@ -38,19 +38,19 @@ type SubmitTaskStateChangeInput struct { // task. Cluster *string - // Any containers associated with the state change request. + // Any containers that's associated with the state change request. Containers []types.ContainerStateChange - // The Unix timestamp for when the task execution stopped. + // The Unix timestamp for the time when the task execution stopped. ExecutionStoppedAt *time.Time - // The details for the managed agent associated with the task. + // The details for the managed agent that's associated with the task. ManagedAgents []types.ManagedAgentStateChange - // The Unix timestamp for when the container image pull began. + // The Unix timestamp for the time when the container image pull started. PullStartedAt *time.Time - // The Unix timestamp for when the container image pull completed. + // The Unix timestamp for the time when the container image pull completed. PullStoppedAt *time.Time // The reason for the state change request. diff --git a/service/ecs/api_op_TagResource.go b/service/ecs/api_op_TagResource.go index 4cd55010f39..f639f04c447 100644 --- a/service/ecs/api_op_TagResource.go +++ b/service/ecs/api_op_TagResource.go @@ -12,9 +12,9 @@ import ( ) // Associates the specified tags to a resource with the specified resourceArn. If -// existing tags on a resource are not specified in the request parameters, they -// are not changed. When a resource is deleted, the tags associated with that -// resource are deleted as well. +// existing tags on a resource aren't specified in the request parameters, they +// aren't changed. When a resource is deleted, the tags that are associated with +// that resource are deleted as well. func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optFns ...func(*Options)) (*TagResourceOutput, error) { if params == nil { params = &TagResourceInput{} @@ -32,8 +32,8 @@ func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optF type TagResourceInput struct { - // The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, - // the supported resources are Amazon ECS capacity providers, tasks, services, task + // The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the + // supported resources are Amazon ECS capacity providers, tasks, services, task // definitions, clusters, and container instances. // // This member is required. diff --git a/service/ecs/api_op_UntagResource.go b/service/ecs/api_op_UntagResource.go index ba09f76e6a0..3bb1a42ead1 100644 --- a/service/ecs/api_op_UntagResource.go +++ b/service/ecs/api_op_UntagResource.go @@ -28,9 +28,9 @@ func (c *Client) UntagResource(ctx context.Context, params *UntagResourceInput, type UntagResourceInput struct { - // The Amazon Resource Name (ARN) of the resource from which to delete tags. - // Currently, the supported resources are Amazon ECS capacity providers, tasks, - // services, task definitions, clusters, and container instances. + // The Amazon Resource Name (ARN) of the resource to delete tags from. Currently, + // the supported resources are Amazon ECS capacity providers, tasks, services, task + // definitions, clusters, and container instances. // // This member is required. ResourceArn *string diff --git a/service/ecs/api_op_UpdateCapacityProvider.go b/service/ecs/api_op_UpdateCapacityProvider.go index 06b83b9350a..29f1d219c51 100644 --- a/service/ecs/api_op_UpdateCapacityProvider.go +++ b/service/ecs/api_op_UpdateCapacityProvider.go @@ -29,7 +29,7 @@ func (c *Client) UpdateCapacityProvider(ctx context.Context, params *UpdateCapac type UpdateCapacityProviderInput struct { - // An object representing the parameters to update for the Auto Scaling group + // An object that represent the parameters to update for the Auto Scaling group // capacity provider. // // This member is required. diff --git a/service/ecs/api_op_UpdateClusterSettings.go b/service/ecs/api_op_UpdateClusterSettings.go index fc08bce987d..07d5a4ca627 100644 --- a/service/ecs/api_op_UpdateClusterSettings.go +++ b/service/ecs/api_op_UpdateClusterSettings.go @@ -35,8 +35,8 @@ type UpdateClusterSettingsInput struct { Cluster *string // The setting to use by default for a cluster. This parameter is used to enable - // CloudWatch Container Insights for a cluster. If this value is specified, it will - // override the containerInsights value set with PutAccountSetting or + // CloudWatch Container Insights for a cluster. If this value is specified, it + // overrides the containerInsights value set with PutAccountSetting or // PutAccountSettingDefault. // // This member is required. diff --git a/service/ecs/api_op_UpdateContainerAgent.go b/service/ecs/api_op_UpdateContainerAgent.go index d9384a4f641..4e3623c3fb0 100644 --- a/service/ecs/api_op_UpdateContainerAgent.go +++ b/service/ecs/api_op_UpdateContainerAgent.go @@ -12,14 +12,14 @@ import ( ) // Updates the Amazon ECS container agent on a specified container instance. -// Updating the Amazon ECS container agent does not interrupt running tasks or +// Updating the Amazon ECS container agent doesn't interrupt running tasks or // services on the container instance. The process for updating the agent differs // depending on whether your container instance was launched with the Amazon // ECS-optimized AMI or another operating system. The UpdateContainerAgent API // isn't supported for container instances using the Amazon ECS-optimized Amazon // Linux 2 (arm64) AMI. To update the container agent, you can update the ecs-init -// package which will update the agent. For more information, see Updating the -// Amazon ECS container agent +// package. This updates the agent. For more information, see Updating the Amazon +// ECS container agent // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/agent-update-ecs-ami.html) // in the Amazon Elastic Container Service Developer Guide. The // UpdateContainerAgent API requires an Amazon ECS-optimized AMI or Amazon Linux @@ -45,8 +45,8 @@ func (c *Client) UpdateContainerAgent(ctx context.Context, params *UpdateContain type UpdateContainerAgentInput struct { - // The container instance ID or full ARN entries for the container instance on - // which you would like to update the Amazon ECS container agent. + // The container instance ID or full ARN entries for the container instance where + // you would like to update the Amazon ECS container agent. // // This member is required. ContainerInstance *string @@ -61,7 +61,7 @@ type UpdateContainerAgentInput struct { type UpdateContainerAgentOutput struct { - // The container instance for which the container agent was updated. + // The container instance that the container agent was updated for. ContainerInstance *types.ContainerInstance // Metadata pertaining to the operation's result. diff --git a/service/ecs/api_op_UpdateContainerInstancesState.go b/service/ecs/api_op_UpdateContainerInstancesState.go index 0fca5611fa0..5fad7562afb 100644 --- a/service/ecs/api_op_UpdateContainerInstancesState.go +++ b/service/ecs/api_op_UpdateContainerInstancesState.go @@ -15,7 +15,7 @@ import ( // instance has reached an ACTIVE state, you can change the status of a container // instance to DRAINING to manually remove an instance from a cluster, for example // to perform system updates, update the Docker daemon, or scale down the cluster -// size. A container instance cannot be changed to DRAINING until it has reached an +// size. A container instance can't be changed to DRAINING until it has reached an // ACTIVE status. If the instance is in any other status, an error will be // received. When you set a container instance to DRAINING, Amazon ECS prevents new // tasks from being scheduled for placement on the container instance and @@ -33,21 +33,21 @@ import ( // the scheduler to stop two existing tasks before starting two new tasks. If the // minimum is 100%, the service scheduler can't remove existing tasks until the // replacement tasks are considered healthy. Tasks for services that do not use a -// load balancer are considered healthy if they are in the RUNNING state. Tasks for -// services that use a load balancer are considered healthy if they are in the -// RUNNING state and the container instance they are hosted on is reported as +// load balancer are considered healthy if they're in the RUNNING state. Tasks for +// services that use a load balancer are considered healthy if they're in the +// RUNNING state and the container instance they're hosted on is reported as // healthy by the load balancer. // // * The maximumPercent parameter represents an -// upper limit on the number of running tasks during task replacement, which -// enables you to define the replacement batch size. For example, if desiredCount -// is four tasks, a maximum of 200% starts four new tasks before stopping the four -// tasks to be drained, provided that the cluster resources required to do this are +// upper limit on the number of running tasks during task replacement. You can use +// this to define the replacement batch size. For example, if desiredCount is four +// tasks, a maximum of 200% starts four new tasks before stopping the four tasks to +// be drained, provided that the cluster resources required to do this are // available. If the maximum is 100%, then replacement tasks can't start until the // draining tasks have stopped. // // Any PENDING or RUNNING tasks that do not belong to -// a service are not affected. You must wait for them to finish or stop them +// a service aren't affected. You must wait for them to finish or stop them // manually. A container instance has completed draining when it has no more // RUNNING tasks. You can verify this using ListTasks. When a container instance // has been drained, you can set a container instance to ACTIVE status and once it @@ -75,12 +75,12 @@ type UpdateContainerInstancesStateInput struct { // This member is required. ContainerInstances []string - // The container instance state with which to update the container instance. The - // only valid values for this action are ACTIVE and DRAINING. A container instance - // can only be updated to DRAINING status once it has reached an ACTIVE state. If a + // The container instance state to update the container instance with. The only + // valid values for this action are ACTIVE and DRAINING. A container instance can + // only be updated to DRAINING status once it has reached an ACTIVE state. If a // container instance is in REGISTERING, DEREGISTERING, or REGISTRATION_FAILED - // state you can describe the container instance but will be unable to update the - // container instance state. + // state you can describe the container instance but can't update the container + // instance state. // // This member is required. Status types.ContainerInstanceStatus diff --git a/service/ecs/api_op_UpdateService.go b/service/ecs/api_op_UpdateService.go index 7e24e04d3f7..0e5a2b5cb6b 100644 --- a/service/ecs/api_op_UpdateService.go +++ b/service/ecs/api_op_UpdateService.go @@ -23,14 +23,14 @@ import ( // deployment controller, only the desired count, deployment configuration, task // placement constraints and strategies, and health check grace period can be // updated using this API. If the network configuration, platform version, or task -// definition need to be updated, a new CodeDeploy deployment should be created. -// For more information, see CreateDeployment +// definition need to be updated, a new CodeDeploy deployment is created. For more +// information, see CreateDeployment // (https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html) // in the CodeDeploy API Reference. For services using an external deployment // controller, you can update only the desired count, task placement constraints // and strategies, and health check grace period using this API. If the launch // type, load balancer, network configuration, platform version, or task definition -// need to be updated, you should create a new task set. For more information, see +// need to be updated, create a new task set. For more information, see // CreateTaskSet. You can add to or subtract from the number of instantiations of a // task definition in a service by specifying the cluster that the service is // running in and a new desiredCount parameter. If you have updated the Docker @@ -39,7 +39,7 @@ import ( // percent and maximum percent parameters (in the service's deployment // configuration) to determine the deployment strategy. If your updated Docker // image uses the same tag as what is in the existing task definition for your -// service (for example, my_image:latest), you do not need to create a new revision +// service (for example, my_image:latest), you don't need to create a new revision // of your task definition. You can update the service using the forceNewDeployment // option. The new tasks launched by the deployment pull the current image/tag // combination from your repository when they start. You can also update the @@ -52,38 +52,38 @@ import ( // the scheduler can ignore desiredCount temporarily during a deployment. For // example, if desiredCount is four tasks, a minimum of 50% allows the scheduler to // stop two existing tasks before starting two new tasks. Tasks for services that -// do not use a load balancer are considered healthy if they are in the RUNNING +// don't use a load balancer are considered healthy if they're in the RUNNING // state. Tasks for services that use a load balancer are considered healthy if -// they are in the RUNNING state and the container instance they are hosted on is +// they're in the RUNNING state and the container instance they're hosted on is // reported as healthy by the load balancer. // // * The maximumPercent parameter -// represents an upper limit on the number of running tasks during a deployment, -// which enables you to define the deployment batch size. For example, if -// desiredCount is four tasks, a maximum of 200% starts four new tasks before -// stopping the four older tasks (provided that the cluster resources required to -// do this are available). +// represents an upper limit on the number of running tasks during a deployment. +// You can use it to define the deployment batch size. For example, if desiredCount +// is four tasks, a maximum of 200% starts four new tasks before stopping the four +// older tasks (provided that the cluster resources required to do this are +// available). // -// When UpdateService stops a task during a deployment, -// the equivalent of docker stop is issued to the containers running in the task. -// This results in a SIGTERM and a 30-second timeout, after which SIGKILL is sent -// and the containers are forcibly stopped. If the container handles the SIGTERM -// gracefully and exits within 30 seconds from receiving it, no SIGKILL is sent. -// When the service scheduler launches new tasks, it determines task placement in -// your cluster with the following logic: +// When UpdateService stops a task during a deployment, the equivalent +// of docker stop is issued to the containers running in the task. This results in +// a SIGTERM and a 30-second timeout. After this, SIGKILL is sent and the +// containers are forcibly stopped. If the container handles the SIGTERM gracefully +// and exits within 30 seconds from receiving it, no SIGKILL is sent. When the +// service scheduler launches new tasks, it determines task placement in your +// cluster with the following logic. // -// * Determine which of the container -// instances in your cluster can support your service's task definition (for -// example, they have the required CPU, memory, ports, and container instance -// attributes). +// * Determine which of the container instances +// in your cluster can support your service's task definition. For example, they +// have the required CPU, memory, ports, and container instance attributes. // -// * By default, the service scheduler attempts to balance tasks -// across Availability Zones in this manner (although you can choose a different -// placement strategy): +// * By +// default, the service scheduler attempts to balance tasks across Availability +// Zones in this manner even though you can choose a different placement +// strategy. // -// * Sort the valid container instances by the fewest number -// of running tasks for this service in the same Availability Zone as the instance. -// For example, if zone A has one running service task and zones B and C each have +// * Sort the valid container instances by the fewest number of running +// tasks for this service in the same Availability Zone as the instance. For +// example, if zone A has one running service task and zones B and C each have // zero, valid container instances in either zone B or C are considered optimal for // placement. // @@ -127,14 +127,14 @@ type UpdateServiceInput struct { // This member is required. Service *string - // The capacity provider strategy to update the service to use. If the service is - // using the default capacity provider strategy for the cluster, the service can be + // The capacity provider strategy to update the service to use. if the service uses + // the default capacity provider strategy for the cluster, the service can be // updated to use one or more capacity providers as opposed to the default capacity // provider strategy. However, when a service is using a capacity provider strategy - // that is not the default capacity provider strategy, the service cannot be - // updated to use the cluster's default capacity provider strategy. A capacity - // provider strategy consists of one or more capacity providers along with the base - // and weight to assign to them. A capacity provider must be associated with the + // that's not the default capacity provider strategy, the service can't be updated + // to use the cluster's default capacity provider strategy. A capacity provider + // strategy consists of one or more capacity providers along with the base and + // weight to assign to them. A capacity provider must be associated with the // cluster to be used in a capacity provider strategy. The // PutClusterCapacityProviders API is used to associate a capacity provider with a // cluster. Only capacity providers with an ACTIVE or UPDATING status can be used. @@ -149,7 +149,7 @@ type UpdateServiceInput struct { CapacityProviderStrategy []types.CapacityProviderStrategyItem // The short name or full Amazon Resource Name (ARN) of the cluster that your - // service is running on. If you do not specify a cluster, the default cluster is + // service runs on. If you do not specify a cluster, the default cluster is // assumed. Cluster *string @@ -166,16 +166,16 @@ type UpdateServiceInput struct { // you can set this to null when performing this action. EnableExecuteCommand *bool - // Whether to force a new deployment of the service. Deployments are not forced by - // default. You can use this option to trigger a new deployment with no service - // definition changes. For example, you can update a service's tasks to use a newer - // Docker image with the same image/tag combination (my_image:latest) or to roll - // Fargate tasks onto a newer platform version. + // Determines whether to force a new deployment of the service. By default, + // deployments aren't forced. You can use this option to start a new deployment + // with no service definition changes. For example, you can update a service's + // tasks to use a newer Docker image with the same image/tag combination + // (my_image:latest) or to roll Fargate tasks onto a newer platform version. ForceNewDeployment bool - // The period of time, in seconds, that the Amazon ECS service scheduler should - // ignore unhealthy Elastic Load Balancing target health checks after a task has - // first started. This is only valid if your service is configured to use a load + // The period of time, in seconds, that the Amazon ECS service scheduler ignores + // unhealthy Elastic Load Balancing target health checks after a task has first + // started. This is only valid if your service is configured to use a load // balancer. If your service's tasks take a while to start and respond to Elastic // Load Balancing health checks, you can specify a health check grace period of up // to 2,147,483,647 seconds. During that time, the Amazon ECS service scheduler @@ -192,22 +192,22 @@ type UpdateServiceInput struct { // remain unchanged. If this value is specified, it will override any existing // placement constraints defined for the service. To remove all existing placement // constraints, specify an empty array. You can specify a maximum of 10 constraints - // per task (this limit includes constraints in the task definition and those - // specified at runtime). + // for each task. This limit includes constraints in the task definition and those + // specified at runtime. PlacementConstraints []types.PlacementConstraint // The task placement strategy objects to update the service to use. If no value is // specified, the existing placement strategy for the service will remain // unchanged. If this value is specified, it will override the existing placement // strategy defined for the service. To remove an existing placement strategy, - // specify an empty object. You can specify a maximum of five strategy rules per - // service. + // specify an empty object. You can specify a maximum of five strategy rules for + // each service. PlacementStrategy []types.PlacementStrategy - // The platform version on which your tasks in the service are running. A platform - // version is only specified for tasks using the Fargate launch type. If a platform - // version is not specified, the LATEST platform version is used by default. For - // more information, see Fargate Platform Versions + // The platform version that your tasks in the service run on. A platform version + // is only specified for tasks using the Fargate launch type. If a platform version + // is not specified, the LATEST platform version is used. For more information, see + // Fargate Platform Versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string diff --git a/service/ecs/api_op_UpdateTaskSet.go b/service/ecs/api_op_UpdateTaskSet.go index ec872dec20a..54112961e8c 100644 --- a/service/ecs/api_op_UpdateTaskSet.go +++ b/service/ecs/api_op_UpdateTaskSet.go @@ -33,7 +33,7 @@ func (c *Client) UpdateTaskSet(ctx context.Context, params *UpdateTaskSetInput, type UpdateTaskSetInput struct { // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the - // service that the task set exists in. + // service that the task set is found in. // // This member is required. Cluster *string @@ -45,7 +45,7 @@ type UpdateTaskSetInput struct { Scale *types.Scale // The short name or full Amazon Resource Name (ARN) of the service that the task - // set exists in. + // set is found in. // // This member is required. Service *string diff --git a/service/ecs/deserializers.go b/service/ecs/deserializers.go index 8762e4df97d..7fc61d77b3e 100644 --- a/service/ecs/deserializers.go +++ b/service/ecs/deserializers.go @@ -9094,6 +9094,11 @@ func awsAwsjson11_deserializeDocumentContainerInstance(v **types.ContainerInstan sv.Ec2InstanceId = ptr.String(jtv) } + case "healthStatus": + if err := awsAwsjson11_deserializeDocumentContainerInstanceHealthStatus(&sv.HealthStatus, value); err != nil { + return err + } + case "pendingTasksCount": if value != nil { jtv, ok := value.(json.Number) @@ -9196,6 +9201,51 @@ func awsAwsjson11_deserializeDocumentContainerInstance(v **types.ContainerInstan return nil } +func awsAwsjson11_deserializeDocumentContainerInstanceHealthStatus(v **types.ContainerInstanceHealthStatus, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerInstanceHealthStatus + if *v == nil { + sv = &types.ContainerInstanceHealthStatus{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "details": + if err := awsAwsjson11_deserializeDocumentInstanceHealthCheckResultList(&sv.Details, value); err != nil { + return err + } + + case "overallStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckState to be of type string, got %T instead", value) + } + sv.OverallStatus = types.InstanceHealthCheckState(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentContainerInstances(v *[]types.ContainerInstance, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -11112,6 +11162,121 @@ func awsAwsjson11_deserializeDocumentInferenceAccelerators(v *[]types.InferenceA return nil } +func awsAwsjson11_deserializeDocumentInstanceHealthCheckResult(v **types.InstanceHealthCheckResult, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InstanceHealthCheckResult + if *v == nil { + sv = &types.InstanceHealthCheckResult{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "lastStatusChange": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastStatusChange = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "lastUpdated": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastUpdated = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckState to be of type string, got %T instead", value) + } + sv.Status = types.InstanceHealthCheckState(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckType to be of type string, got %T instead", value) + } + sv.Type = types.InstanceHealthCheckType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentInstanceHealthCheckResultList(v *[]types.InstanceHealthCheckResult, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.InstanceHealthCheckResult + if *v == nil { + cv = []types.InstanceHealthCheckResult{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.InstanceHealthCheckResult + destAddr := &col + if err := awsAwsjson11_deserializeDocumentInstanceHealthCheckResult(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsAwsjson11_deserializeDocumentInvalidParameterException(v **types.InvalidParameterException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/ecs/doc.go b/service/ecs/doc.go index 4a6b65ec293..e5039bb91b1 100644 --- a/service/ecs/doc.go +++ b/service/ecs/doc.go @@ -4,17 +4,17 @@ // EC2 Container Service. // // Amazon Elastic Container Service Amazon Elastic Container Service (Amazon ECS) -// is a highly scalable, fast, container management service that makes it easy to +// is a highly scalable, fast, container management service. It makes it easy to // run, stop, and manage Docker containers on a cluster. You can host your cluster -// on a serverless infrastructure that is managed by Amazon ECS by launching your +// on a serverless infrastructure that's managed by Amazon ECS by launching your // services or tasks on Fargate. For more control, you can host your tasks on a // cluster of Amazon Elastic Compute Cloud (Amazon EC2) instances that you manage. // Amazon ECS makes it easy to launch and stop container-based applications with -// simple API calls, allows you to get the state of your cluster from a centralized -// service, and gives you access to many familiar Amazon EC2 features. You can use -// Amazon ECS to schedule the placement of containers across your cluster based on -// your resource needs, isolation policies, and availability requirements. Amazon -// ECS eliminates the need for you to operate your own cluster management and -// configuration management systems or worry about scaling your management -// infrastructure. +// simple API calls. This makes it easy to get the state of your cluster from a +// centralized service, and gives you access to many familiar Amazon EC2 features. +// You can use Amazon ECS to schedule the placement of containers across your +// cluster based on your resource needs, isolation policies, and availability +// requirements. With Amazon ECS, you don't need to operate your own cluster +// management and configuration management systems. You also don't need to worry +// about scaling your management infrastructure. package ecs diff --git a/service/ecs/types/enums.go b/service/ecs/types/enums.go index d626c4e39b1..7ef64901fb2 100644 --- a/service/ecs/types/enums.go +++ b/service/ecs/types/enums.go @@ -210,7 +210,8 @@ type ContainerInstanceField string // Enum values for ContainerInstanceField const ( - ContainerInstanceFieldTags ContainerInstanceField = "TAGS" + ContainerInstanceFieldTags ContainerInstanceField = "TAGS" + ContainerInstanceFieldContainerInstanceHealth ContainerInstanceField = "CONTAINER_INSTANCE_HEALTH" ) // Values returns all known values for ContainerInstanceField. Note that this can @@ -219,6 +220,7 @@ const ( func (ContainerInstanceField) Values() []ContainerInstanceField { return []ContainerInstanceField{ "TAGS", + "CONTAINER_INSTANCE_HEALTH", } } @@ -454,6 +456,44 @@ func (HealthStatus) Values() []HealthStatus { } } +type InstanceHealthCheckState string + +// Enum values for InstanceHealthCheckState +const ( + InstanceHealthCheckStateOk InstanceHealthCheckState = "OK" + InstanceHealthCheckStateImpaired InstanceHealthCheckState = "IMPAIRED" + InstanceHealthCheckStateInsufficientData InstanceHealthCheckState = "INSUFFICIENT_DATA" + InstanceHealthCheckStateInitializing InstanceHealthCheckState = "INITIALIZING" +) + +// Values returns all known values for InstanceHealthCheckState. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (InstanceHealthCheckState) Values() []InstanceHealthCheckState { + return []InstanceHealthCheckState{ + "OK", + "IMPAIRED", + "INSUFFICIENT_DATA", + "INITIALIZING", + } +} + +type InstanceHealthCheckType string + +// Enum values for InstanceHealthCheckType +const ( + InstanceHealthCheckTypeContainerRuntime InstanceHealthCheckType = "CONTAINER_RUNTIME" +) + +// Values returns all known values for InstanceHealthCheckType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (InstanceHealthCheckType) Values() []InstanceHealthCheckType { + return []InstanceHealthCheckType{ + "CONTAINER_RUNTIME", + } +} + type IpcMode string // Enum values for IpcMode diff --git a/service/ecs/types/errors.go b/service/ecs/types/errors.go index 11f22c5c87e..ee076d4f363 100644 --- a/service/ecs/types/errors.go +++ b/service/ecs/types/errors.go @@ -7,7 +7,7 @@ import ( smithy "github.com/aws/smithy-go" ) -// You do not have authorization to perform the requested action. +// You don't have authorization to perform the requested action. type AccessDeniedException struct { Message *string @@ -26,7 +26,7 @@ func (e *AccessDeniedException) ErrorMessage() string { func (e *AccessDeniedException) ErrorCode() string { return "AccessDeniedException" } func (e *AccessDeniedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// You can apply up to 10 custom attributes per resource. You can view the +// You can apply up to 10 custom attributes for each resource. You can view the // attributes of a resource with ListAttributes. You can remove existing attributes // on a resource with DeleteAttributes. type AttributeLimitExceededException struct { @@ -49,7 +49,7 @@ func (e *AttributeLimitExceededException) ErrorCode() string { } func (e *AttributeLimitExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// Your Amazon Web Services account has been blocked. For more information, contact +// Your Amazon Web Services account was blocked. For more information, contact // Amazon Web Services Support (http://aws.amazon.com/contact-us/). type BlockedException struct { Message *string @@ -69,9 +69,10 @@ func (e *BlockedException) ErrorMessage() string { func (e *BlockedException) ErrorCode() string { return "BlockedException" } func (e *BlockedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// These errors are usually caused by a client action, such as using an action or -// resource on behalf of a user that doesn't have permissions to use the action or -// resource, or specifying an identifier that is not valid. +// These errors are usually caused by a client action. This client action might be +// using an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource,. Or, it might be specifying an identifier that isn't +// valid. type ClientException struct { Message *string @@ -90,7 +91,7 @@ func (e *ClientException) ErrorMessage() string { func (e *ClientException) ErrorCode() string { return "ClientException" } func (e *ClientException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// You cannot delete a cluster that has registered container instances. First, +// You can't delete a cluster that has registered container instances. First, // deregister the container instances before you can delete the cluster. For more // information, see DeregisterContainerInstance. type ClusterContainsContainerInstancesException struct { @@ -115,8 +116,8 @@ func (e *ClusterContainsContainerInstancesException) ErrorFault() smithy.ErrorFa return smithy.FaultClient } -// You cannot delete a cluster that contains services. First, update the service to -// reduce its desired task count to 0 and then delete the service. For more +// You can't delete a cluster that contains services. First, update the service to +// reduce its desired task count to 0, and then delete the service. For more // information, see UpdateService and DeleteService. type ClusterContainsServicesException struct { Message *string @@ -138,7 +139,7 @@ func (e *ClusterContainsServicesException) ErrorCode() string { } func (e *ClusterContainsServicesException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// You cannot delete a cluster that has active tasks. +// You can't delete a cluster that has active tasks. type ClusterContainsTasksException struct { Message *string @@ -157,8 +158,8 @@ func (e *ClusterContainsTasksException) ErrorMessage() string { func (e *ClusterContainsTasksException) ErrorCode() string { return "ClusterContainsTasksException" } func (e *ClusterContainsTasksException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified cluster could not be found. You can view your available clusters -// with ListClusters. Amazon ECS clusters are Region-specific. +// The specified cluster wasn't found. You can view your available clusters with +// ListClusters. Amazon ECS clusters are Region specific. type ClusterNotFoundException struct { Message *string @@ -177,7 +178,7 @@ func (e *ClusterNotFoundException) ErrorMessage() string { func (e *ClusterNotFoundException) ErrorCode() string { return "ClusterNotFoundException" } func (e *ClusterNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified parameter is invalid. Review the available parameters for the API +// The specified parameter isn't valid. Review the available parameters for the API // request. type InvalidParameterException struct { Message *string @@ -197,7 +198,7 @@ func (e *InvalidParameterException) ErrorMessage() string { func (e *InvalidParameterException) ErrorCode() string { return "InvalidParameterException" } func (e *InvalidParameterException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The limit for the resource has been exceeded. +// The limit for the resource was exceeded. type LimitExceededException struct { Message *string @@ -216,11 +217,10 @@ func (e *LimitExceededException) ErrorMessage() string { func (e *LimitExceededException) ErrorCode() string { return "LimitExceededException" } func (e *LimitExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// Amazon ECS is unable to determine the current version of the Amazon ECS -// container agent on the container instance and does not have enough information -// to proceed with an update. This could be because the agent running on the -// container instance is an older or custom version that does not use our version -// information. +// Amazon ECS can't determine the current version of the Amazon ECS container agent +// on the container instance and doesn't have enough information to proceed with an +// update. This could be because the agent running on the container instance is a +// previous or custom version that doesn't use our version information. type MissingVersionException struct { Message *string @@ -239,9 +239,9 @@ func (e *MissingVersionException) ErrorMessage() string { func (e *MissingVersionException) ErrorCode() string { return "MissingVersionException" } func (e *MissingVersionException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// There is no update available for this Amazon ECS container agent. This could be -// because the agent is already running the latest version, or it is so old that -// there is no update path to the current version. +// There's no update available for this Amazon ECS container agent. This might be +// because the agent is already running the latest version or because it's so old +// that there's no update path to the current version. type NoUpdateAvailableException struct { Message *string @@ -260,8 +260,8 @@ func (e *NoUpdateAvailableException) ErrorMessage() string { func (e *NoUpdateAvailableException) ErrorCode() string { return "NoUpdateAvailableException" } func (e *NoUpdateAvailableException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified platform version does not satisfy the task definition's required -// capabilities. +// The specified platform version doesn't satisfy the required capabilities of the +// task definition. type PlatformTaskDefinitionIncompatibilityException struct { Message *string @@ -284,7 +284,7 @@ func (e *PlatformTaskDefinitionIncompatibilityException) ErrorFault() smithy.Err return smithy.FaultClient } -// The specified platform version does not exist. +// The specified platform version doesn't exist. type PlatformUnknownException struct { Message *string @@ -303,7 +303,7 @@ func (e *PlatformUnknownException) ErrorMessage() string { func (e *PlatformUnknownException) ErrorCode() string { return "PlatformUnknownException" } func (e *PlatformUnknownException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified resource is in-use and cannot be removed. +// The specified resource is in-use and can't be removed. type ResourceInUseException struct { Message *string @@ -322,7 +322,7 @@ func (e *ResourceInUseException) ErrorMessage() string { func (e *ResourceInUseException) ErrorCode() string { return "ResourceInUseException" } func (e *ResourceInUseException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified resource could not be found. +// The specified resource wasn't found. type ResourceNotFoundException struct { Message *string @@ -360,8 +360,8 @@ func (e *ServerException) ErrorMessage() string { func (e *ServerException) ErrorCode() string { return "ServerException" } func (e *ServerException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } -// The specified service is not active. You can't update a service that is -// inactive. If you have previously deleted a service, you can re-create it with +// The specified service isn't active. You can't update a service that's inactive. +// If you have previously deleted a service, you can re-create it with // CreateService. type ServiceNotActiveException struct { Message *string @@ -381,8 +381,8 @@ func (e *ServiceNotActiveException) ErrorMessage() string { func (e *ServiceNotActiveException) ErrorCode() string { return "ServiceNotActiveException" } func (e *ServiceNotActiveException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified service could not be found. You can view your available services -// with ListServices. Amazon ECS services are cluster-specific and Region-specific. +// The specified service wasn't found. You can view your available services with +// ListServices. Amazon ECS services are cluster specific and Region specific. type ServiceNotFoundException struct { Message *string @@ -401,8 +401,8 @@ func (e *ServiceNotFoundException) ErrorMessage() string { func (e *ServiceNotFoundException) ErrorCode() string { return "ServiceNotFoundException" } func (e *ServiceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The target container is not properly configured with the execute command agent -// or the container is no longer active or running. +// The target container isn't properly configured with the execute command agent or +// the container is no longer active or running. type TargetNotConnectedException struct { Message *string @@ -421,7 +421,7 @@ func (e *TargetNotConnectedException) ErrorMessage() string { func (e *TargetNotConnectedException) ErrorCode() string { return "TargetNotConnectedException" } func (e *TargetNotConnectedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified target could not be found. You can view your available container +// The specified target wasn't found. You can view your available container // instances with ListContainerInstances. Amazon ECS container instances are // cluster-specific and Region-specific. type TargetNotFoundException struct { @@ -442,9 +442,8 @@ func (e *TargetNotFoundException) ErrorMessage() string { func (e *TargetNotFoundException) ErrorCode() string { return "TargetNotFoundException" } func (e *TargetNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified task set could not be found. You can view your available task sets -// with DescribeTaskSets. Task sets are specific to each cluster, service and -// Region. +// The specified task set wasn't found. You can view your available task sets with +// DescribeTaskSets. Task sets are specific to each cluster, service and Region. type TaskSetNotFoundException struct { Message *string @@ -463,7 +462,7 @@ func (e *TaskSetNotFoundException) ErrorMessage() string { func (e *TaskSetNotFoundException) ErrorCode() string { return "TaskSetNotFoundException" } func (e *TaskSetNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// The specified task is not supported in this Region. +// The specified task isn't supported in this Region. type UnsupportedFeatureException struct { Message *string @@ -482,11 +481,11 @@ func (e *UnsupportedFeatureException) ErrorMessage() string { func (e *UnsupportedFeatureException) ErrorCode() string { return "UnsupportedFeatureException" } func (e *UnsupportedFeatureException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } -// There is already a current Amazon ECS container agent update in progress on the -// specified container instance. If the container agent becomes disconnected while -// it is in a transitional stage, such as PENDING or STAGING, the update process -// can get stuck in that state. However, when the agent reconnects, it resumes -// where it stopped previously. +// There's already a current Amazon ECS container agent update in progress on the +// container instance that's specified. If the container agent becomes disconnected +// while it's in a transitional stage, such as PENDING or STAGING, the update +// process can get stuck in that state. However, when the agent reconnects, it +// resumes where it stopped previously. type UpdateInProgressException struct { Message *string diff --git a/service/ecs/types/types.go b/service/ecs/types/types.go index b030b6d4fbf..6f352ab4357 100644 --- a/service/ecs/types/types.go +++ b/service/ecs/types/types.go @@ -44,16 +44,16 @@ type AttachmentStateChange struct { noSmithyDocumentSerde } -// An attribute is a name-value pair associated with an Amazon ECS object. +// An attribute is a name-value pair that's associated with an Amazon ECS object. // Attributes enable you to extend the Amazon ECS data model by adding custom // metadata to your resources. For more information, see Attributes // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes) // in the Amazon Elastic Container Service Developer Guide. type Attribute struct { - // The name of the attribute. The name must contain between 1 and 128 characters - // and name may contain letters (uppercase and lowercase), numbers, hyphens, - // underscores, forward slashes, back slashes, or periods. + // The name of the attribute. The name must contain between 1 and 128 characters. + // The name may contain letters (uppercase and lowercase), numbers, hyphens (-), + // underscores (_), forward slashes (/), back slashes (\), or periods (.). // // This member is required. Name *string @@ -62,14 +62,14 @@ type Attribute struct { // full Amazon Resource Name (ARN). TargetId *string - // The type of the target with which to attach the attribute. This parameter is - // required if you use the short form ID for a resource instead of the full ARN. + // The type of the target to attach the attribute with. This parameter is required + // if you use the short form ID for a resource instead of the full ARN. TargetType TargetType - // The value of the attribute. The value must contain between 1 and 128 characters - // and may contain letters (uppercase and lowercase), numbers, hyphens, - // underscores, periods, at signs (@), forward slashes, back slashes, colons, or - // spaces. The value cannot contain any leading or trailing whitespace. + // The value of the attribute. The value must contain between 1 and 128 characters. + // It can contain letters (uppercase and lowercase), numbers, hyphens (-), + // underscores (_), periods (.), at signs (@), forward slashes (/), back slashes + // (\), colons (:), or spaces. The value can't can't start or end with a space. Value *string noSmithyDocumentSerde @@ -89,15 +89,15 @@ type AutoScalingGroupProvider struct { // The managed termination protection setting to use for the Auto Scaling group // capacity provider. This determines whether the Auto Scaling group has managed // termination protection. When using managed termination protection, managed - // scaling must also be used otherwise managed termination protection will not - // work. When managed termination protection is enabled, Amazon ECS prevents the - // Amazon EC2 instances in an Auto Scaling group that contain tasks from being - // terminated during a scale-in action. The Auto Scaling group and each instance in - // the Auto Scaling group must have instance protection from scale-in actions - // enabled as well. For more information, see Instance Protection + // scaling must also be used otherwise managed termination protection doesn't work. + // When managed termination protection is enabled, Amazon ECS prevents the Amazon + // EC2 instances in an Auto Scaling group that contain tasks from being terminated + // during a scale-in action. The Auto Scaling group and each instance in the Auto + // Scaling group must have instance protection from scale-in actions enabled as + // well. For more information, see Instance Protection // (https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection) // in the Auto Scaling User Guide. When managed termination protection is disabled, - // your Amazon EC2 instances are not protected from termination when the Auto + // your Amazon EC2 instances aren't protected from termination when the Auto // Scaling group scales in. ManagedTerminationProtection ManagedTerminationProtection @@ -113,15 +113,15 @@ type AutoScalingGroupProviderUpdate struct { // The managed termination protection setting to use for the Auto Scaling group // capacity provider. This determines whether the Auto Scaling group has managed // termination protection. When using managed termination protection, managed - // scaling must also be used otherwise managed termination protection will not - // work. When managed termination protection is enabled, Amazon ECS prevents the - // Amazon EC2 instances in an Auto Scaling group that contain tasks from being - // terminated during a scale-in action. The Auto Scaling group and each instance in - // the Auto Scaling group must have instance protection from scale-in actions - // enabled as well. For more information, see Instance Protection + // scaling must also be used otherwise managed termination protection doesn't work. + // When managed termination protection is enabled, Amazon ECS prevents the Amazon + // EC2 instances in an Auto Scaling group that contain tasks from being terminated + // during a scale-in action. The Auto Scaling group and each instance in the Auto + // Scaling group must have instance protection from scale-in actions enabled. For + // more information, see Instance Protection // (https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection) // in the Auto Scaling User Guide. When managed termination protection is disabled, - // your Amazon EC2 instances are not protected from termination when the Auto + // your Amazon EC2 instances aren't protected from termination when the Auto // Scaling group scales in. ManagedTerminationProtection ManagedTerminationProtection @@ -131,7 +131,7 @@ type AutoScalingGroupProviderUpdate struct { // An object representing the networking details for a task or service. type AwsVpcConfiguration struct { - // The IDs of the subnets associated with the task or service. There is a limit of + // The IDs of the subnets associated with the task or service. There's a limit of // 16 subnets that can be specified per AwsVpcConfiguration. All specified subnets // must be from the same VPC. // @@ -142,16 +142,16 @@ type AwsVpcConfiguration struct { // default value is DISABLED. AssignPublicIp AssignPublicIp - // The IDs of the security groups associated with the task or service. If you do - // not specify a security group, the default security group for the VPC is used. - // There is a limit of 5 security groups that can be specified per + // The IDs of the security groups associated with the task or service. If you don't + // specify a security group, the default security group for the VPC is used. + // There's a limit of 5 security groups that can be specified per // AwsVpcConfiguration. All specified security groups must be from the same VPC. SecurityGroups []string noSmithyDocumentSerde } -// The details of a capacity provider. +// The details for a capacity provider. type CapacityProvider struct { // The Auto Scaling group settings for the capacity provider. @@ -165,29 +165,29 @@ type CapacityProvider struct { // The current status of the capacity provider. Only capacity providers in an // ACTIVE state can be used in a cluster. When a capacity provider is successfully - // deleted, it will have an INACTIVE status. + // deleted, it has an INACTIVE status. Status CapacityProviderStatus // The metadata that you apply to the capacity provider to help you categorize and - // organize it. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // organize it. Each tag consists of a key and an optional value. You define both. + // The following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags per + // resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each tag + // key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters in + // UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -199,11 +199,11 @@ type CapacityProvider struct { Tags []Tag // The update status of the capacity provider. The following are the possible - // states that will be returned. DELETE_IN_PROGRESS The capacity provider is in the - // process of being deleted. DELETE_COMPLETE The capacity provider has been - // successfully deleted and will have an INACTIVE status. DELETE_FAILED The - // capacity provider was unable to be deleted. The update status reason will - // provide further details about why the delete failed. + // states that is returned. DELETE_IN_PROGRESS The capacity provider is in the + // process of being deleted. DELETE_COMPLETE The capacity provider was successfully + // deleted and has an INACTIVE status. DELETE_FAILED The capacity provider can't be + // deleted. The update status reason provides further details about why the delete + // failed. UpdateStatus CapacityProviderUpdateStatus // The update status reason. This provides further details about the update status @@ -245,21 +245,21 @@ type CapacityProviderStrategyItem struct { // weight value is specified, the default value of 0 is used. When multiple // capacity providers are specified within a capacity provider strategy, at least // one of the capacity providers must have a weight value greater than zero and any - // capacity providers with a weight of 0 will not be used to place tasks. If you + // capacity providers with a weight of 0 can't be used to place tasks. If you // specify multiple capacity providers in a strategy that all have a weight of 0, // any RunTask or CreateService actions using the capacity provider strategy will // fail. An example scenario for using weights is defining a strategy that contains // two capacity providers and both have a weight of 1, then when the base is // satisfied, the tasks will be split evenly across the two capacity providers. // Using that same logic, if you specify a weight of 1 for capacityProviderA and a - // weight of 4 for capacityProviderB, then for every one task that is run using + // weight of 4 for capacityProviderB, then for every one task that's run using // capacityProviderA, four tasks would use capacityProviderB. Weight int32 noSmithyDocumentSerde } -// A regional grouping of one or more container instances on which you can run task +// A regional grouping of one or more container instances where you can run task // requests. Each account receives a default cluster the first time you use the // Amazon ECS service, but you may also create other clusters. Clusters may contain // more than one instance type simultaneously. @@ -270,12 +270,12 @@ type Cluster struct { ActiveServicesCount int32 // The resources attached to a cluster. When using a capacity provider with a - // cluster, the Auto Scaling plan that is created will be returned as a cluster + // cluster, the Auto Scaling plan that's created is returned as a cluster // attachment. Attachments []Attachment // The status of the capacity providers associated with the cluster. The following - // are the states that will be returned: UPDATE_IN_PROGRESS The available capacity + // are the states that are returned. UPDATE_IN_PROGRESS The available capacity // providers for the cluster are updating. This occurs when the Auto Scaling plan // is provisioning or deprovisioning. UPDATE_COMPLETE The capacity providers have // successfully updated. UPDATE_FAILED The capacity provider updates failed. @@ -315,22 +315,22 @@ type Cluster struct { // Container Insights is enabled or disabled for a cluster. Settings []ClusterSetting - // Additional information about your clusters that are separated by launch type, - // including: + // Additional information about your clusters that are separated by launch type. + // They include the following: // // * runningEC2TasksCount // - // * RunningFargateTasksCount - // // * - // pendingEC2TasksCount + // RunningFargateTasksCount // - // * pendingFargateTasksCount + // * pendingEC2TasksCount // - // * activeEC2ServiceCount + // * pendingFargateTasksCount // // * - // activeFargateServiceCount + // activeEC2ServiceCount + // + // * activeFargateServiceCount // // * drainingEC2ServiceCount // @@ -338,40 +338,40 @@ type Cluster struct { // drainingFargateServiceCount Statistics []KeyValuePair - // The status of the cluster. The following are the possible states that will be + // The status of the cluster. The following are the possible states that are // returned. ACTIVE The cluster is ready to accept tasks and if applicable you can // register container instances with the cluster. PROVISIONING The cluster has - // capacity providers associated with it and the resources needed for the capacity - // provider are being created. DEPROVISIONING The cluster has capacity providers - // associated with it and the resources needed for the capacity provider are being - // deleted. FAILED The cluster has capacity providers associated with it and the - // resources needed for the capacity provider have failed to create. INACTIVE The - // cluster has been deleted. Clusters with an INACTIVE status may remain - // discoverable in your account for a period of time. However, this behavior is - // subject to change in the future, so you should not rely on INACTIVE clusters - // persisting. + // capacity providers that are associated with it and the resources needed for the + // capacity provider are being created. DEPROVISIONING The cluster has capacity + // providers that are associated with it and the resources needed for the capacity + // provider are being deleted. FAILED The cluster has capacity providers that are + // associated with it and the resources needed for the capacity provider have + // failed to create. INACTIVE The cluster has been deleted. Clusters with an + // INACTIVE status may remain discoverable in your account for a period of time. + // However, this behavior is subject to change in the future. We don't recommend + // that you rely on INACTIVE clusters persisting. Status *string // The metadata that you apply to the cluster to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // them. Each tag consists of a key and an optional value. You define both. The + // following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags per + // resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each tag + // key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters in + // UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -412,15 +412,14 @@ type ClusterSetting struct { noSmithyDocumentSerde } -// A Docker container that is part of a task. +// A Docker container that's part of a task. type Container struct { // The Amazon Resource Name (ARN) of the container. ContainerArn *string - // The number of CPU units set for the container. The value will be 0 if no value - // was specified in the container definition when the task definition was - // registered. + // The number of CPU units set for the container. The value is 0 if no value was + // specified in the container definition when the task definition was registered. Cpu *string // The exit code returned from the container. @@ -429,7 +428,7 @@ type Container struct { // The IDs of each GPU assigned to the container. GpuIds []string - // The health status of the container. If health checks are not configured for this + // The health status of the container. If health checks aren't configured for this // container in its task definition, then it reports the health status as UNKNOWN. HealthStatus HealthStatus @@ -478,7 +477,7 @@ type Container struct { // containers that are launched as part of a task. type ContainerDefinition struct { - // The command that is passed to the container. This parameter maps to Cmd in the + // The command that's passed to the container. This parameter maps to Cmd in the // Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the @@ -486,7 +485,7 @@ type ContainerDefinition struct { // (https://docs.docker.com/engine/reference/run/#security-configuration). For more // information, see https://docs.docker.com/engine/reference/builder/#cmd // (https://docs.docker.com/engine/reference/builder/#cmd). If there are multiple - // arguments, each argument should be a separated string in the array. + // arguments, each argument is a separated string in the array. Command []string // The number of cpu units reserved for the container. This parameter maps to @@ -504,18 +503,18 @@ type ContainerDefinition struct { // containers share unallocated CPU units with other containers on the container // instance with the same ratio as their allocated amount. For example, if you run // a single-container task on a single-core instance type with 512 CPU units - // specified for that container, and that is the only task running on the container + // specified for that container, and that's the only task running on the container // instance, that container could use the full 1,024 CPU unit share at any given // time. However, if you launched another copy of the same task on that container - // instance, each task would be guaranteed a minimum of 512 CPU units when needed, - // and each container could float to higher CPU usage if the other container was - // not using it, but if both tasks were 100% active all of the time, they would be + // instance, each task is guaranteed a minimum of 512 CPU units when needed. + // Moreover, each container could float to higher CPU usage if the other container + // was not using it. If both tasks were 100% active all of the time, they would be // limited to 512 CPU units. On Linux container instances, the Docker daemon on the // container instance uses the CPU value to calculate the relative CPU share ratios // for running containers. For more information, see CPU share constraint // (https://docs.docker.com/engine/reference/run/#cpu-share-constraint) in the // Docker documentation. The minimum valid CPU share value that the Linux kernel - // allows is 2. However, the CPU parameter is not required, and you can use CPU + // allows is 2. However, the CPU parameter isn't required, and you can use CPU // values below 2 in your container definitions. For CPU values below 2 (including // null), the behavior varies based on your Amazon ECS container agent version: // @@ -530,7 +529,7 @@ type ContainerDefinition struct { // // On Windows container instances, the CPU limit is // enforced as an absolute limit, or a quota. Windows containers only have access - // to the specified amount of CPU that is described in the task definition. A null + // to the specified amount of CPU that's described in the task definition. A null // or zero CPU value is passed to Docker as 0, which Windows interprets as 1% of // one CPU. Cpu int32 @@ -543,14 +542,14 @@ type ContainerDefinition struct { // container agent version. For information about checking your agent version and // updating to the latest version, see Updating the Amazon ECS Container Agent // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) - // in the Amazon Elastic Container Service Developer Guide. If you are using an + // in the Amazon Elastic Container Service Developer Guide. If you're using an // Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of // the ecs-init package. If your container instances are launched from version // 20190301 or later, then they contain the required versions of the container // agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) // in the Amazon Elastic Container Service Developer Guide. For tasks using the - // Fargate launch type, the task or service requires the followiwng platforms: + // Fargate launch type, the task or service requires the following platforms: // // * // Linux platform version 1.3.0 or later. @@ -597,7 +596,7 @@ type ContainerDefinition struct { DockerLabels map[string]string // A list of strings to provide custom labels for SELinux and AppArmor multi-level - // security systems. This field is not valid for containers in tasks using the + // security systems. This field isn't valid for containers in tasks using the // Fargate launch type. With Windows containers, this parameter can be used to // reference a credential spec file when configuring a container for Active // Directory authentication. For more information, see Using gMSAs for Windows @@ -621,10 +620,10 @@ type ContainerDefinition struct { // "credentialspec:CredentialSpecFilePath" DockerSecurityOptions []string - // Early versions of the Amazon ECS container agent do not properly handle + // Early versions of the Amazon ECS container agent don't properly handle // entryPoint parameters. If you have problems using entryPoint, update your // container agent or enter your commands and arguments as command array items - // instead. The entry point that is passed to the container. This parameter maps to + // instead. The entry point that's passed to the container. This parameter maps to // Entrypoint in the Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the @@ -639,38 +638,38 @@ type ContainerDefinition struct { // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the --env // option to docker run - // (https://docs.docker.com/engine/reference/run/#security-configuration). We do - // not recommend using plaintext environment variables for sensitive information, - // such as credential data. + // (https://docs.docker.com/engine/reference/run/#security-configuration). We don't + // recommend that you use plaintext environment variables for sensitive + // information, such as credential data. Environment []KeyValuePair // A list of files containing the environment variables to pass to a container. // This parameter maps to the --env-file option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). You can // specify up to ten environment files. The file must have a .env file extension. - // Each line in an environment file should contain an environment variable in + // Each line in an environment file contains an environment variable in // VARIABLE=VALUE format. Lines beginning with # are treated as comments and are - // ignored. For more information on the environment variable file syntax, see + // ignored. For more information about the environment variable file syntax, see // Declare default environment variables in file // (https://docs.docker.com/compose/env-file/). If there are environment variables // specified using the environment parameter in a container definition, they take // precedence over the variables contained within an environment file. If multiple - // environment files are specified that contain the same variable, they are - // processed from the top down. It is recommended to use unique variable names. For - // more information, see Specifying Environment Variables + // environment files are specified that contain the same variable, they're + // processed from the top down. We recommend that you use unique variable names. + // For more information, see Specifying Environment Variables // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html) // in the Amazon Elastic Container Service Developer Guide. EnvironmentFiles []EnvironmentFile // If the essential parameter of a container is marked as true, and that container // fails or stops for any reason, all other containers that are part of the task - // are stopped. If the essential parameter of a container is marked as false, then - // its failure does not affect the rest of the containers in a task. If this - // parameter is omitted, a container is assumed to be essential. All tasks must - // have at least one essential container. If you have an application that is - // composed of multiple containers, you should group containers that are used for a - // common purpose into components, and separate the different components into - // multiple task definitions. For more information, see Application Architecture + // are stopped. If the essential parameter of a container is marked as false, its + // failure doesn't affect the rest of the containers in a task. If this parameter + // is omitted, a container is assumed to be essential. All tasks must have at least + // one essential container. If you have an application that's composed of multiple + // containers, group containers that are used for a common purpose into components, + // and separate the different components into multiple task definitions. For more + // information, see Application Architecture // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html) // in the Amazon Elastic Container Service Developer Guide. Essential *bool @@ -681,7 +680,7 @@ type ContainerDefinition struct { // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --add-host option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). This - // parameter is not supported for Windows containers or tasks that use the awsvpc + // parameter isn't supported for Windows containers or tasks that use the awsvpc // network mode. ExtraHosts []HostEntry @@ -706,12 +705,12 @@ type ContainerDefinition struct { // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --hostname option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). The - // hostname parameter is not supported if you are using the awsvpc network mode. + // hostname parameter is not supported if you're using the awsvpc network mode. Hostname *string // The image used to start a container. This string is passed directly to the - // Docker daemon. Images in the Docker Hub registry are available by default. Other - // repositories are specified with either repository-url/image:tag or + // Docker daemon. By default, images in the Docker Hub registry are available. + // Other repositories are specified with either repository-url/image:tag or // repository-url/image@digest . Up to 255 letters (uppercase and lowercase), // numbers, hyphens, underscores, colons, periods, forward slashes, and number // signs are allowed. This parameter maps to Image in the Create a container @@ -723,7 +722,7 @@ type ContainerDefinition struct { // * When // a new task starts, the Amazon ECS container agent pulls the latest version of // the specified image and tag for the container to use. However, subsequent - // updates to a repository image are not propagated to already running tasks. + // updates to a repository image aren't propagated to already running tasks. // // * // Images in Amazon ECR repositories can be specified by either using the full @@ -743,9 +742,9 @@ type ContainerDefinition struct { // quay.io/assemblyline/ubuntu). Image *string - // When this parameter is true, this allows you to deploy containerized - // applications that require stdin or a tty to be allocated. This parameter maps to - // OpenStdin in the Create a container + // When this parameter is true, you can deploy containerized applications that + // require stdin or a tty to be allocated. This parameter maps to OpenStdin in the + // Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --interactive option to docker run @@ -782,11 +781,11 @@ type ContainerDefinition struct { // --log-driver option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). By // default, containers use the same logging driver that the Docker daemon uses. - // However the container may use a different logging driver than the Docker daemon + // However the container can use a different logging driver than the Docker daemon // by specifying a log driver with this parameter in the container definition. To // use a different logging driver for a container, the log system must be // configured properly on the container instance (or on a different log server for - // remote logging options). For more information on the options for different + // remote logging options). For more information about the options for different // supported log drivers, see Configure logging drivers // (https://docs.docker.com/engine/admin/logging/overview/) in the Docker // documentation. Amazon ECS currently supports a subset of the logging drivers @@ -819,10 +818,10 @@ type ContainerDefinition struct { // memory value. If you specify both a container-level memory and memoryReservation // value, memory must be greater than memoryReservation. If you specify // memoryReservation, then that value is subtracted from the available memory - // resources for the container instance on which the container is placed. - // Otherwise, the value of memory is used. The Docker daemon reserves a minimum of - // 4 MiB of memory for a container, so you should not specify fewer than 4 MiB of - // memory for your containers. + // resources for the container instance where the container is placed. Otherwise, + // the value of memory is used. The Docker daemon reserves a minimum of 4 MiB of + // memory for a container. Therefore, we recommend that you specify fewer than 4 + // MiB of memory for your containers. Memory *int32 // The soft limit (in MiB) of memory to reserve for the container. When system @@ -839,15 +838,15 @@ type ContainerDefinition struct { // for one or both of memory or memoryReservation in a container definition. If you // specify both, memory must be greater than memoryReservation. If you specify // memoryReservation, then that value is subtracted from the available memory - // resources for the container instance on which the container is placed. - // Otherwise, the value of memory is used. For example, if your container normally - // uses 128 MiB of memory, but occasionally bursts to 256 MiB of memory for short - // periods of time, you can set a memoryReservation of 128 MiB, and a memory hard - // limit of 300 MiB. This configuration would allow the container to only reserve - // 128 MiB of memory from the remaining resources on the container instance, but - // also allow the container to consume more memory resources when needed. The - // Docker daemon reserves a minimum of 4 MiB of memory for a container, so you - // should not specify fewer than 4 MiB of memory for your containers. + // resources for the container instance where the container is placed. Otherwise, + // the value of memory is used. For example, if your container normally uses 128 + // MiB of memory, but occasionally bursts to 256 MiB of memory for short periods of + // time, you can set a memoryReservation of 128 MiB, and a memory hard limit of 300 + // MiB. This configuration would allow the container to only reserve 128 MiB of + // memory from the remaining resources on the container instance, but also allow + // the container to consume more memory resources when needed. The Docker daemon + // reserves a minimum of 4 MiB of memory for a container. Therefore, we recommend + // that you specify fewer than 4 MiB of memory for your containers. MemoryReservation *int32 // The mount points for data volumes in your container. This parameter maps to @@ -857,11 +856,11 @@ type ContainerDefinition struct { // --volume option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). Windows // containers can mount whole directories on the same drive as $env:ProgramData. - // Windows containers cannot mount directories on a different drive, and mount - // point cannot be across drives. + // Windows containers can't mount directories on a different drive, and mount point + // can't be across drives. MountPoints []MountPoint - // The name of a container. If you are linking multiple containers together in a + // The name of a container. If you're linking multiple containers together in a // task definition, the name of one container can be entered in the links of // another container to connect the containers. Up to 255 letters (uppercase and // lowercase), numbers, underscores, and hyphens are allowed. This parameter maps @@ -874,12 +873,12 @@ type ContainerDefinition struct { // The list of port mappings for the container. Port mappings allow containers to // access ports on the host container instance to send or receive traffic. For task - // definitions that use the awsvpc network mode, you should only specify the - // containerPort. The hostPort can be left blank or it must be the same value as - // the containerPort. Port mappings on Windows use the NetNAT gateway address - // rather than localhost. There is no loopback for port mappings on Windows, so you - // cannot access a container's mapped port from the host itself. This parameter - // maps to PortBindings in the Create a container + // definitions that use the awsvpc network mode, only specify the containerPort. + // The hostPort can be left blank or it must be the same value as the + // containerPort. Port mappings on Windows use the NetNAT gateway address rather + // than localhost. There's no loopback for port mappings on Windows, so you can't + // access a container's mapped port from the host itself. This parameter maps to + // PortBindings in the Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --publish option to docker run @@ -938,11 +937,11 @@ type ContainerDefinition struct { // for a container. For example, you specify two containers in a task definition // with containerA having a dependency on containerB reaching a COMPLETE, SUCCESS, // or HEALTHY status. If a startTimeout value is specified for containerB and it - // does not reach the desired status within that time then containerA will give up - // and not start. This results in the task transitioning to a STOPPED state. When - // the ECS_CONTAINER_START_TIMEOUT container agent configuration variable is used, - // it is enforced indendently from this start timeout value. For tasks using the - // Fargate launch type, the task or service requires the followiwng platforms: + // doesn't reach the desired status within that time then containerA gives up and + // not start. This results in the task transitioning to a STOPPED state. When the + // ECS_CONTAINER_START_TIMEOUT container agent configuration variable is used, it's + // enforced independently from this start timeout value. For tasks using the + // Fargate launch type, the task or service requires the following platforms: // // * // Linux platform version 1.3.0 or later. @@ -956,7 +955,7 @@ type ContainerDefinition struct { // information about checking your agent version and updating to the latest // version, see Updating the Amazon ECS Container Agent // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) - // in the Amazon Elastic Container Service Developer Guide. If you are using an + // in the Amazon Elastic Container Service Developer Guide. If you're using an // Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of // the ecs-init package. If your container instances are launched from version // 20190301 or later, then they contain the required versions of the container @@ -967,7 +966,7 @@ type ContainerDefinition struct { // Time duration (in seconds) to wait before the container is forcefully killed if // it doesn't exit normally on its own. For tasks using the Fargate launch type, - // the task or service requires the followiwng platforms: + // the task or service requires the following platforms: // // * Linux platform version // 1.3.0 or later. @@ -976,18 +975,18 @@ type ContainerDefinition struct { // // The max stop // timeout value is 120 seconds and if the parameter is not specified, the default - // value of 30 seconds is used. For tasks using the EC2 launch type, if the - // stopTimeout parameter is not specified, the value set for the Amazon ECS - // container agent configuration variable ECS_CONTAINER_STOP_TIMEOUT is used by - // default. If neither the stopTimeout parameter or the ECS_CONTAINER_STOP_TIMEOUT - // agent configuration variable are set, then the default values of 30 seconds for - // Linux containers and 30 seconds on Windows containers are used. Your container + // value of 30 seconds is used. For tasks that use the EC2 launch type, if the + // stopTimeout parameter isn't specified, the value set for the Amazon ECS + // container agent configuration variable ECS_CONTAINER_STOP_TIMEOUT is used. If + // neither the stopTimeout parameter or the ECS_CONTAINER_STOP_TIMEOUT agent + // configuration variable are set, then the default values of 30 seconds for Linux + // containers and 30 seconds on Windows containers are used. Your container // instances require at least version 1.26.0 of the container agent to enable a // container stop timeout value. However, we recommend using the latest container // agent version. For information about checking your agent version and updating to // the latest version, see Updating the Amazon ECS Container Agent // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) - // in the Amazon Elastic Container Service Developer Guide. If you are using an + // in the Amazon Elastic Container Service Developer Guide. If you're using an // Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of // the ecs-init package. If your container instances are launched from version // 20190301 or later, then they contain the required versions of the container @@ -1001,18 +1000,18 @@ type ContainerDefinition struct { // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --sysctl option to docker run - // (https://docs.docker.com/engine/reference/run/#security-configuration). It is - // not recommended that you specify network-related systemControls parameters for + // (https://docs.docker.com/engine/reference/run/#security-configuration). We don't + // recommended that you specify network-related systemControls parameters for // multiple containers in a single task that also uses either the awsvpc or host - // network modes. For tasks that use the awsvpc network mode, the container that is + // network modes. For tasks that use the awsvpc network mode, the container that's // started last determines which systemControls parameters take effect. For tasks // that use the host network mode, it changes the container instance's namespaced // kernel parameters as well as the containers. SystemControls []SystemControl // A list of ulimits to set in the container. If a ulimit value is specified in a - // task definition, it will override the default values set by Docker. This - // parameter maps to Ulimits in the Create a container + // task definition, it overrides the default values set by Docker. This parameter + // maps to Ulimits in the Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --ulimit option to docker run @@ -1035,10 +1034,10 @@ type ContainerDefinition struct { // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the --user // option to docker run // (https://docs.docker.com/engine/reference/run/#security-configuration). When - // running tasks using the host network mode, you should not run containers using - // the root user (UID 0). It is considered best practice to use a non-root user. - // You can specify the user using the following formats. If specifying a UID or - // GID, you must specify it as a positive integer. + // running tasks using the host network mode, don't run containers using the root + // user (UID 0). We recommend using a non-root user for better security. You can + // specify the user using the following formats. If specifying a UID or GID, you + // must specify it as a positive integer. // // * user // @@ -1065,8 +1064,8 @@ type ContainerDefinition struct { // (https://docs.docker.com/engine/reference/run/#security-configuration). VolumesFrom []VolumeFrom - // The working directory in which to run commands inside the container. This - // parameter maps to WorkingDir in the Create a container + // The working directory to run commands inside the container in. This parameter + // maps to WorkingDir in the Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --workdir option to docker run @@ -1084,14 +1083,14 @@ type ContainerDefinition struct { // version. For information about checking your agent version and updating to the // latest version, see Updating the Amazon ECS Container Agent // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) -// in the Amazon Elastic Container Service Developer Guide. If you are using an +// in the Amazon Elastic Container Service Developer Guide. If you're using an // Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of // the ecs-init package. If your container instances are launched from version // 20190301 or later, then they contain the required versions of the container // agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) -// in the Amazon Elastic Container Service Developer Guide. For tasks using the -// Fargate launch type, the task or service requires the followiwng platforms: +// in the Amazon Elastic Container Service Developer Guide. For tasks that use the +// Fargate launch type, the task or service requires the following platforms: // // * // Linux platform version 1.3.0 or later. @@ -1110,11 +1109,11 @@ type ContainerDependency struct { // * COMPLETE - This condition // validates that a dependent container runs to completion (exits) before // permitting other containers to start. This can be useful for nonessential - // containers that run a script and then exit. This condition cannot be set on an + // containers that run a script and then exit. This condition can't be set on an // essential container. // // * SUCCESS - This condition is the same as COMPLETE, but it - // also requires that the container exits with a zero status. This condition cannot + // also requires that the container exits with a zero status. This condition can't // be set on an essential container. // // * HEALTHY - This condition validates that the @@ -1133,8 +1132,8 @@ type ContainerDependency struct { noSmithyDocumentSerde } -// An EC2 instance that is running the Amazon ECS agent and has been registered -// with a cluster. +// An EC2 instance that's running the Amazon ECS agent and has been registered with +// a cluster. type ContainerInstance struct { // This parameter returns true if the agent is connected to Amazon ECS. Registered @@ -1142,8 +1141,8 @@ type ContainerInstance struct { // instances connected to an agent can accept placement requests. AgentConnected bool - // The status of the most recent agent update. If an update has never been - // requested, this value is NULL. + // The status of the most recent agent update. If an update wasn't ever requested, + // this value is NULL. AgentUpdateStatus AgentUpdateStatus // The resources attached to a container instance, such as elastic network @@ -1155,7 +1154,7 @@ type ContainerInstance struct { // operation. Attributes []Attribute - // The capacity provider associated with the container instance. + // The capacity provider that's associated with the container instance. CapacityProviderName *string // The Amazon Resource Name (ARN) of the container instance. The ARN contains the @@ -1170,10 +1169,13 @@ type ContainerInstance struct { // Services Systems Manager managed instance ID. Ec2InstanceId *string + // An object representing the health status of the container instance. + HealthStatus *ContainerInstanceHealthStatus + // The number of tasks on the container instance that are in the PENDING status. PendingTasksCount int32 - // The Unix timestamp for when the container instance was registered. + // The Unix timestamp for the time when the container instance was registered. RegisteredAt *time.Time // For CPU and memory resource types, this parameter describes the amount of each @@ -1186,12 +1188,12 @@ type ContainerInstance struct { RegisteredResources []Resource // For CPU and memory resource types, this parameter describes the remaining CPU - // and memory that has not already been allocated to tasks and is therefore - // available for new tasks. For port resource types, this parameter describes the - // ports that were reserved by the Amazon ECS container agent (at instance - // registration time) and any task containers that have reserved port mappings on - // the host (with the host or bridge network mode). Any port that is not specified - // here is available for new tasks. + // and memory that wasn't already allocated to tasks and is therefore available for + // new tasks. For port resource types, this parameter describes the ports that were + // reserved by the Amazon ECS container agent (at instance registration time) and + // any task containers that have reserved port mappings on the host (with the host + // or bridge network mode). Any port that's not specified here is available for new + // tasks. RemainingResources []Resource // The number of tasks on the container instance that are in the RUNNING status. @@ -1208,7 +1210,7 @@ type ContainerInstance struct { // instance transitions to a DEREGISTERING status while the trunk elastic network // interface is deprovisioned. The instance then transitions to an INACTIVE status. // The ACTIVE status indicates that the container instance can accept tasks. The - // DRAINING indicates that new tasks are not placed on the container instance and + // DRAINING indicates that new tasks aren't placed on the container instance and // any service tasks running on the container instance are removed if possible. For // more information, see Container Instance Draining // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-draining.html) @@ -1219,25 +1221,25 @@ type ContainerInstance struct { StatusReason *string // The metadata that you apply to the container instance to help you categorize and - // organize them. Each tag consists of a key and an optional value, both of which - // you define. The following basic restrictions apply to tags: + // organize them. Each tag consists of a key and an optional value. You define + // both. The following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags + // per resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each + // tag key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters + // in UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -1250,11 +1252,11 @@ type ContainerInstance struct { // The version counter for the container instance. Every time a container instance // experiences a change that triggers a CloudWatch event, the version counter is - // incremented. If you are replicating your Amazon ECS container instance state - // with CloudWatch Events, you can compare the version of a container instance - // reported by the Amazon ECS APIs with the version reported in CloudWatch Events - // for the container instance (inside the detail object) to verify that the version - // in your event stream is current. + // incremented. If you're replicating your Amazon ECS container instance state with + // CloudWatch Events, you can compare the version of a container instance reported + // by the Amazon ECS APIs with the version reported in CloudWatch Events for the + // container instance (inside the detail object) to verify that the version in your + // event stream is current. Version int64 // The version information for the Amazon ECS container agent and Docker daemon @@ -1264,10 +1266,24 @@ type ContainerInstance struct { noSmithyDocumentSerde } -// The overrides that should be sent to a container. An empty container override -// can be passed in. An example of an empty container override would be -// {"containerOverrides": [ ] }. If a non-empty container override is specified, -// the name parameter must be included. +// An object representing the health status of the container instance. +type ContainerInstanceHealthStatus struct { + + // An array of objects representing the details of the container instance health + // status. + Details []InstanceHealthCheckResult + + // The overall health status of the container instance. This is an aggregate status + // of all container instance health checks. + OverallStatus InstanceHealthCheckState + + noSmithyDocumentSerde +} + +// The overrides that are sent to a container. An empty container override can be +// passed in. An example of an empty container override is {"containerOverrides": [ +// ] }. If a non-empty container override is specified, the name parameter must be +// included. type ContainerOverride struct { // The command to send to the container that overrides the default command from the @@ -1309,7 +1325,7 @@ type ContainerOverride struct { noSmithyDocumentSerde } -// An object representing a change in state for a container. +// An object that represents a change in state for a container. type ContainerStateChange struct { // The name of the container. @@ -1322,7 +1338,7 @@ type ContainerStateChange struct { // The container image SHA 256 digest. ImageDigest *string - // Any network bindings associated with the container. + // Any network bindings that are associated with the container. NetworkBindings []NetworkBinding // The reason for the state change. @@ -1344,7 +1360,7 @@ type Deployment struct { // The capacity provider strategy that the deployment is using. CapacityProviderStrategy []CapacityProviderStrategyItem - // The Unix timestamp for when the service deployment was created. + // The Unix timestamp for the time when the service deployment was created. CreatedAt *time.Time // The most recent desired count of tasks that was specified for the service to @@ -1380,22 +1396,22 @@ type Deployment struct { // the service, for example, LINUX.. PlatformFamily *string - // The platform version on which your tasks in the service are running. A platform - // version is only specified for tasks using the Fargate launch type. If one is not - // specified, the LATEST platform version is used by default. For more information, - // see Fargate Platform Versions + // The platform version that your tasks in the service run on. A platform version + // is only specified for tasks using the Fargate launch type. If one isn't + // specified, the LATEST platform version is used. For more information, see + // Fargate Platform Versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string // The rolloutState of a service is only returned for services that use the rolling - // update (ECS) deployment type that are not behind a Classic Load Balancer. The + // update (ECS) deployment type that aren't behind a Classic Load Balancer. The // rollout state of the deployment. When a service deployment is started, it begins // in an IN_PROGRESS state. When the service reaches a steady state, the deployment - // will transition to a COMPLETED state. If the service fails to reach a steady - // state and circuit breaker is enabled, the deployment will transition to a FAILED - // state. A deployment in FAILED state will launch no new tasks. For more - // information, see DeploymentCircuitBreaker. + // transitions to a COMPLETED state. If the service fails to reach a steady state + // and circuit breaker is enabled, the deployment transitions to a FAILED state. A + // deployment in FAILED state doesn't launch any new tasks. For more information, + // see DeploymentCircuitBreaker. RolloutState DeploymentRolloutState // A description of the rollout state of a deployment. @@ -1404,7 +1420,7 @@ type Deployment struct { // The number of tasks in the deployment that are in the RUNNING status. RunningCount int32 - // The status of the deployment. The following describes each state: PRIMARY The + // The status of the deployment. The following describes each state. PRIMARY The // most recent deployment of a service. ACTIVE A service deployment that still has // running tasks, but are in the process of being replaced with a new PRIMARY // deployment. INACTIVE A deployment that has been completely replaced. @@ -1414,14 +1430,14 @@ type Deployment struct { // to use. TaskDefinition *string - // The Unix timestamp for when the service deployment was last updated. + // The Unix timestamp for the time when the service deployment was last updated. UpdatedAt *time.Time noSmithyDocumentSerde } // The deployment circuit breaker can only be used for services using the rolling -// update (ECS) deployment type that are not behind a Classic Load Balancer. The +// update (ECS) deployment type that aren't behind a Classic Load Balancer. The // deployment circuit breaker determines whether a service deployment will fail if // the service can't reach a steady state. If enabled, a service deployment will // transition to a failed state and stop launching new tasks. You can also enable @@ -1431,14 +1447,15 @@ type Deployment struct { // in the Amazon Elastic Container Service Developer Guide. type DeploymentCircuitBreaker struct { - // Whether to enable the deployment circuit breaker logic for the service. + // Determines whether to enable the deployment circuit breaker logic for the + // service. // // This member is required. Enable bool - // Whether to enable Amazon ECS to roll back the service if a service deployment - // fails. If rollback is enabled, when a service deployment fails, the service is - // rolled back to the last deployment that completed successfully. + // Determines whether to enable Amazon ECS to roll back the service if a service + // deployment fails. If rollback is enabled, when a service deployment fails, the + // service is rolled back to the last deployment that completed successfully. // // This member is required. Rollback bool @@ -1487,9 +1504,9 @@ type DeploymentConfiguration struct { // additional cluster capacity. For example, if your service has a desired number // of four tasks and a minimum healthy percent of 50%, the scheduler may stop two // existing tasks to free up cluster capacity before starting two new tasks. Tasks - // for services that do not use a load balancer are considered healthy if they are + // for services that do not use a load balancer are considered healthy if they're // in the RUNNING state; tasks for services that do use a load balancer are - // considered healthy if they are in the RUNNING state and they are reported as + // considered healthy if they're in the RUNNING state and they're reported as // healthy by the load balancer. The default value for minimum healthy percent is // 100%. If a service is using the blue/green (CODE_DEPLOY) or EXTERNAL deployment // types and tasks that use the EC2 launch type, the minimum healthy percent value @@ -1546,14 +1563,13 @@ type Device struct { noSmithyDocumentSerde } -// This parameter is specified when you are using Docker volumes. Docker volumes -// are only supported when you are using the EC2 launch type. Windows containers -// only support the use of the local driver. To use bind mounts, specify a host -// instead. +// This parameter is specified when you're using Docker volumes. Docker volumes are +// only supported when you're using the EC2 launch type. Windows containers only +// support the use of the local driver. To use bind mounts, specify a host instead. type DockerVolumeConfiguration struct { - // If this value is true, the Docker volume is created if it does not already - // exist. This field is only used if the scope is shared. + // If this value is true, the Docker volume is created if it doesn't already exist. + // This field is only used if the scope is shared. Autoprovision *bool // The Docker volume driver to use. The driver value must match the driver name @@ -1607,11 +1623,11 @@ type EFSAuthorizationConfig struct { // Amazon Elastic File System User Guide. AccessPointId *string - // Whether or not to use the Amazon ECS task IAM role defined in a task definition - // when mounting the Amazon EFS file system. If enabled, transit encryption must be - // enabled in the EFSVolumeConfiguration. If this parameter is omitted, the default - // value of DISABLED is used. For more information, see Using Amazon EFS Access - // Points + // Determines whether to use the Amazon ECS task IAM role defined in a task + // definition when mounting the Amazon EFS file system. If enabled, transit + // encryption must be enabled in the EFSVolumeConfiguration. If this parameter is + // omitted, the default value of DISABLED is used. For more information, see Using + // Amazon EFS Access Points // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html#efs-volume-accesspoints) // in the Amazon Elastic Container Service Developer Guide. Iam EFSAuthorizationConfigIAM @@ -1619,8 +1635,8 @@ type EFSAuthorizationConfig struct { noSmithyDocumentSerde } -// This parameter is specified when you are using an Amazon Elastic File System -// file system for task storage. For more information, see Amazon EFS Volumes +// This parameter is specified when you're using an Amazon Elastic File System file +// system for task storage. For more information, see Amazon EFS Volumes // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html) // in the Amazon Elastic Container Service Developer Guide. type EFSVolumeConfiguration struct { @@ -1641,10 +1657,11 @@ type EFSVolumeConfiguration struct { // path set on the EFS access point. RootDirectory *string - // Whether or not to enable encryption for Amazon EFS data in transit between the - // Amazon ECS host and the Amazon EFS server. Transit encryption must be enabled if - // Amazon EFS IAM authorization is used. If this parameter is omitted, the default - // value of DISABLED is used. For more information, see Encrypting Data in Transit + // Determines whether to enable encryption for Amazon EFS data in transit between + // the Amazon ECS host and the Amazon EFS server. Transit encryption must be + // enabled if Amazon EFS IAM authorization is used. If this parameter is omitted, + // the default value of DISABLED is used. For more information, see Encrypting Data + // in Transit // (https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) in the // Amazon Elastic File System User Guide. TransitEncryption EFSTransitEncryption @@ -1664,14 +1681,14 @@ type EFSVolumeConfiguration struct { // can specify up to ten environment files. The file must have a .env file // extension. Each line in an environment file should contain an environment // variable in VARIABLE=VALUE format. Lines beginning with # are treated as -// comments and are ignored. For more information on the environment variable file -// syntax, see Declare default environment variables in file +// comments and are ignored. For more information about the environment variable +// file syntax, see Declare default environment variables in file // (https://docs.docker.com/compose/env-file/). If there are environment variables // specified using the environment parameter in a container definition, they take // precedence over the variables contained within an environment file. If multiple -// environment files are specified that contain the same variable, they are -// processed from the top down. It is recommended to use unique variable names. For -// more information, see Specifying environment variables +// environment files are specified that contain the same variable, they're +// processed from the top down. We recommend that you use unique variable names. +// For more information, see Specifying environment variables // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html) // in the Amazon Elastic Container Service Developer Guide. This parameter is only // supported for tasks hosted on Fargate using the following platform versions: @@ -1754,8 +1771,8 @@ type ExecuteCommandConfiguration struct { // can be sent to CloudWatch Logs or an Amazon S3 bucket. type ExecuteCommandLogConfiguration struct { - // Whether or not to enable encryption on the CloudWatch logs. If not specified, - // encryption will be disabled. + // Determines whether to enable encryption on the CloudWatch logs. If not + // specified, encryption will be disabled. CloudWatchEncryptionEnabled bool // The name of the CloudWatch log group to send logs to. The CloudWatch log group @@ -1766,8 +1783,8 @@ type ExecuteCommandLogConfiguration struct { // created. S3BucketName *string - // Whether or not to use encryption on the S3 logs. If not specified, encryption is - // not used. + // Determines whether to use encryption on the S3 logs. If not specified, + // encryption is not used. S3EncryptionEnabled bool // An optional folder in the S3 bucket to place logs in. @@ -1847,10 +1864,10 @@ type FSxWindowsFileServerAuthorizationConfig struct { noSmithyDocumentSerde } -// This parameter is specified when you are using Amazon FSx for Windows File -// Server (https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file -// system for task storage. For more information and the input format, see Amazon -// FSx for Windows File Server Volumes +// This parameter is specified when you're using Amazon FSx for Windows File Server +// (https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file system +// for task storage. For more information and the input format, see Amazon FSx for +// Windows File Server Volumes // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) // in the Amazon Elastic Container Service Developer Guide. type FSxWindowsFileServerVolumeConfiguration struct { @@ -1889,7 +1906,7 @@ type FSxWindowsFileServerVolumeConfiguration struct { // * UNHEALTHY-The container health check has failed. // // * UNKNOWN-The -// container health check is being evaluated or there is no container health check +// container health check is being evaluated or there's no container health check // defined. // // The following describes the possible healthStatus values for a task. @@ -1918,26 +1935,25 @@ type FSxWindowsFileServerVolumeConfiguration struct { // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html). // // * -// Container health checks are supported for Fargate tasks if you are using -// platform version 1.1.0 or greater. For more information, see Fargate Platform -// Versions +// Container health checks are supported for Fargate tasks if you're using platform +// version 1.1.0 or greater. For more information, see Fargate Platform Versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). // // * -// Container health checks are not supported for tasks that are part of a service -// that is configured to use a Classic Load Balancer. +// Container health checks aren't supported for tasks that are part of a service +// that's configured to use a Classic Load Balancer. type HealthCheck struct { // A string array representing the command that the container runs to determine if // it is healthy. The string array must start with CMD to execute the command // arguments directly, or CMD-SHELL to run the command with the container's default // shell. When you use the Amazon Web Services Management Console JSON panel, the - // Command Line Interface, or the APIs, you should enclose the list of commands in - // brackets, as shown below. [ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ] - // You do not need to include the brackets when you use the Amazon Web Services - // Management Consoleas shown below. "CMD-SHELL", "curl -f http://localhost/ || - // exit 1" An exit code of 0 indicates success, and non-zero exit code indicates - // failure. For more information, see HealthCheck in the Create a container + // Command Line Interface, or the APIs, enclose the list of commands in brackets. [ + // "CMD-SHELL", "curl -f http://localhost/ || exit 1" ] You don't need to include + // the brackets when you use the Amazon Web Services Management Console. + // "CMD-SHELL", "curl -f http://localhost/ || exit 1" An exit code of 0 indicates + // success, and non-zero exit code indicates failure. For more information, see + // HealthCheck in the Create a container // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/). // @@ -1953,11 +1969,11 @@ type HealthCheck struct { // value is 3. Retries *int32 - // The optional grace period within which to provide containers time to bootstrap - // before failed health checks count towards the maximum number of retries. You may - // specify between 0 and 300 seconds. The startPeriod is disabled by default. If a - // health check succeeds within the startPeriod, then the container is considered - // healthy and any subsequent failures count toward the maximum number of retries. + // The optional grace period to provide containers time to bootstrap before failed + // health checks count towards the maximum number of retries. You can specify + // between 0 and 300 seconds. By default, the startPeriod is disabled. If a health + // check succeeds within the startPeriod, then the container is considered healthy + // and any subsequent failures count toward the maximum number of retries. StartPeriod *int32 // The time period in seconds to wait for a health check to succeed before it is @@ -1989,20 +2005,20 @@ type HostEntry struct { type HostVolumeProperties struct { // When the host parameter is used, specify a sourcePath to declare the path on the - // host container instance that is presented to the container. If this parameter is + // host container instance that's presented to the container. If this parameter is // empty, then the Docker daemon has assigned a host path for you. If the host // parameter contains a sourcePath file location, then the data volume persists at // the specified location on the host container instance until you delete it - // manually. If the sourcePath value does not exist on the host container instance, + // manually. If the sourcePath value doesn't exist on the host container instance, // the Docker daemon creates it. If the location does exist, the contents of the - // source path folder are exported. If you are using the Fargate launch type, the + // source path folder are exported. If you're using the Fargate launch type, the // sourcePath parameter is not supported. SourcePath *string noSmithyDocumentSerde } -// Details on a Elastic Inference accelerator. For more information, see Working +// Details on an Elastic Inference accelerator. For more information, see Working // with Amazon Elastic Inference on Amazon ECS // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html) // in the Amazon Elastic Container Service Developer Guide. @@ -2040,12 +2056,31 @@ type InferenceAcceleratorOverride struct { noSmithyDocumentSerde } +// An object representing the result of a container instance health status check. +type InstanceHealthCheckResult struct { + + // The Unix timestamp for when the container instance health status last changed. + LastStatusChange *time.Time + + // The Unix timestamp for when the container instance health status was last + // updated. + LastUpdated *time.Time + + // The container instance health status. + Status InstanceHealthCheckState + + // The type of container instance health status that was verified. + Type InstanceHealthCheckType + + noSmithyDocumentSerde +} + // The Linux capabilities for the container that are added to or dropped from the -// default configuration provided by Docker. For more information on the default +// default configuration provided by Docker. For more information about the default // capabilities and the non-default available capabilities, see Runtime privilege // and Linux capabilities // (https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) -// in the Docker run reference. For more detailed information on these Linux +// in the Docker run reference. For more detailed information about these Linux // capabilities, see the capabilities(7) // (http://man7.org/linux/man-pages/man7/capabilities.7.html) Linux manual page. type KernelCapabilities struct { @@ -2115,8 +2150,8 @@ type LinuxParameters struct { // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --device option to docker run - // (https://docs.docker.com/engine/reference/run/#security-configuration). If you - // are using tasks that use the Fargate launch type, the devices parameter is not + // (https://docs.docker.com/engine/reference/run/#security-configuration). If + // you're using tasks that use the Fargate launch type, the devices parameter isn't // supported. Devices []Device @@ -2137,8 +2172,8 @@ type LinuxParameters struct { // values are 0 or any positive integer. If the maxSwap parameter is omitted, the // container will use the swap configuration for the container instance it is // running on. A maxSwap value must be set for the swappiness parameter to be used. - // If you are using tasks that use the Fargate launch type, the maxSwap parameter - // is not supported. + // If you're using tasks that use the Fargate launch type, the maxSwap parameter + // isn't supported. MaxSwap *int32 // The value for the size (in MiB) of the /dev/shm volume. This parameter maps to @@ -2155,15 +2190,15 @@ type LinuxParameters struct { // is not specified, a default value of 60 is used. If a value is not specified for // maxSwap then this parameter is ignored. This parameter maps to the // --memory-swappiness option to docker run - // (https://docs.docker.com/engine/reference/run/#security-configuration). If you - // are using tasks that use the Fargate launch type, the swappiness parameter is - // not supported. + // (https://docs.docker.com/engine/reference/run/#security-configuration). If + // you're using tasks that use the Fargate launch type, the swappiness parameter + // isn't supported. Swappiness *int32 // The container path, mount options, and size (in MiB) of the tmpfs mount. This // parameter maps to the --tmpfs option to docker run - // (https://docs.docker.com/engine/reference/run/#security-configuration). If you - // are using tasks that use the Fargate launch type, the tmpfs parameter is not + // (https://docs.docker.com/engine/reference/run/#security-configuration). If + // you're using tasks that use the Fargate launch type, the tmpfs parameter isn't // supported. Tmpfs []Tmpfs @@ -2181,8 +2216,9 @@ type LoadBalancer struct { // The port on the container to associate with the load balancer. This port must // correspond to a containerPort in the task definition the tasks in the service - // are using. For tasks that use the EC2 launch type, the container instance they - // are launched on must allow ingress traffic on the hostPort of the port mapping. + // are using. For tasks that use the EC2 launch type, the container instance + // they're launched on must allow ingress traffic on the hostPort of the port + // mapping. ContainerPort *int32 // The name of the load balancer to associate with the Amazon ECS service or task @@ -2194,21 +2230,21 @@ type LoadBalancer struct { // The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group // or groups associated with a service or task set. A target group ARN is only // specified when using an Application Load Balancer or Network Load Balancer. If - // you are using a Classic Load Balancer the target group ARN should be omitted. - // For services using the ECS deployment controller, you can specify one or - // multiple target groups. For more information, see Registering Multiple Target - // Groups with a Service + // you're using a Classic Load Balancer, omit the target group ARN. For services + // using the ECS deployment controller, you can specify one or multiple target + // groups. For more information, see Registering Multiple Target Groups with a + // Service // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) // in the Amazon Elastic Container Service Developer Guide. For services using the - // CODE_DEPLOY deployment controller, you are required to define two target groups + // CODE_DEPLOY deployment controller, you're required to define two target groups // for the load balancer. For more information, see Blue/Green Deployment with // CodeDeploy // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html) // in the Amazon Elastic Container Service Developer Guide. If your service's task - // definition uses the awsvpc network mode (which is required for the Fargate - // launch type), you must choose ip as the target type, not instance, when creating - // your target groups because tasks that use the awsvpc network mode are associated - // with an elastic network interface, not an Amazon EC2 instance. + // definition uses the awsvpc network mode, you must choose ip as the target type, + // not instance. Do this when creating your target groups because tasks that use + // the awsvpc network mode are associated with an elastic network interface, not an + // Amazon EC2 instance. This network mode is required for the Fargate launch type. TargetGroupArn *string noSmithyDocumentSerde @@ -2220,13 +2256,13 @@ type LoadBalancer struct { // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --log-driver option to docker run // (https://docs.docker.com/engine/reference/commandline/run/). By default, -// containers use the same logging driver that the Docker daemon uses; however the -// container may use a different logging driver than the Docker daemon by +// containers use the same logging driver that the Docker daemon uses. However, the +// container might use a different logging driver than the Docker daemon by // specifying a log driver configuration in the container definition. For more -// information on the options for different supported log drivers, see Configure +// information about the options for different supported log drivers, see Configure // logging drivers (https://docs.docker.com/engine/admin/logging/overview/) in the -// Docker documentation. The following should be noted when specifying a log -// configuration for your containers: +// Docker documentation. Understand the following when specifying a log +// configuration for your containers. // // * Amazon ECS currently supports a subset of // the logging drivers available to the Docker daemon (shown in the valid values @@ -2236,19 +2272,20 @@ type LoadBalancer struct { // * This parameter requires version 1.18 of the Docker // Remote API or greater on your container instance. // -// * For tasks hosted on Amazon -// EC2 instances, the Amazon ECS container agent must register the available -// logging drivers with the ECS_AVAILABLE_LOGGING_DRIVERS environment variable -// before containers placed on that instance can use these log configuration -// options. For more information, see Amazon ECS container agent configuration +// * For tasks that are hosted +// on Amazon EC2 instances, the Amazon ECS container agent must register the +// available logging drivers with the ECS_AVAILABLE_LOGGING_DRIVERS environment +// variable before containers placed on that instance can use these log +// configuration options. For more information, see Amazon ECS container agent +// configuration // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) // in the Amazon Elastic Container Service Developer Guide. // -// * For tasks on -// Fargate, because you do not have access to the underlying infrastructure your -// tasks are hosted on, any additional software needed will have to be installed -// outside of the task. For example, the Fluentd output aggregators or a remote -// host running Logstash to send Gelf logs to. +// * For tasks that are +// on Fargate, because you don't have access to the underlying infrastructure your +// tasks are hosted on, any additional software needed must be installed outside of +// the task. For example, the Fluentd output aggregators or a remote host running +// Logstash to send Gelf logs to. type LogConfiguration struct { // The log driver to use for the container. For tasks on Fargate, the supported log @@ -2261,10 +2298,10 @@ type LogConfiguration struct { // about using the awsfirelens log driver, see Custom log routing // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) // in the Amazon Elastic Container Service Developer Guide. If you have a custom - // driver that is not listed, you can fork the Amazon ECS container agent project - // that is available on GitHub (https://github.com/aws/amazon-ecs-agent) and + // driver that isn't listed, you can fork the Amazon ECS container agent project + // that's available on GitHub (https://github.com/aws/amazon-ecs-agent) and // customize it to work with that driver. We encourage you to submit pull requests - // for changes that you would like to have included. However, we do not currently + // for changes that you would like to have included. However, we don't currently // provide support for running modified copies of this software. // // This member is required. @@ -2289,7 +2326,7 @@ type LogConfiguration struct { // Details about the managed agent status for the container. type ManagedAgent struct { - // The Unix timestamp for when the managed agent was last started. + // The Unix timestamp for the time when the managed agent was last started. LastStartedAt *time.Time // The last known status of the managed agent. @@ -2308,7 +2345,7 @@ type ManagedAgent struct { // An object representing a change in state for a managed agent. type ManagedAgentStateChange struct { - // The name of the container associated with the managed agent. + // The name of the container that's associated with the managed agent. // // This member is required. ContainerName *string @@ -2332,7 +2369,7 @@ type ManagedAgentStateChange struct { // The managed scaling settings for the Auto Scaling group capacity provider. When // managed scaling is enabled, Amazon ECS manages the scale-in and scale-out // actions of the Auto Scaling group. Amazon ECS manages a target tracking scaling -// policy using an Amazon ECS-managed CloudWatch metric with the specified +// policy using an Amazon ECS managed CloudWatch metric with the specified // targetCapacity value as the target value for the metric. For more information, // see Using Managed Scaling // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html#asg-capacity-providers-managed-scaling) @@ -2345,27 +2382,27 @@ type ManagedScaling struct { // omitted, the default value of 300 seconds is used. InstanceWarmupPeriod *int32 - // The maximum number of container instances that Amazon ECS will scale in or scale + // The maximum number of container instances that Amazon ECS scales in or scales // out at one time. If this parameter is omitted, the default value of 10000 is // used. MaximumScalingStepSize *int32 - // The minimum number of container instances that Amazon ECS will scale in or scale + // The minimum number of container instances that Amazon ECS scales in or scales // out at one time. If this parameter is omitted, the default value of 1 is used. MinimumScalingStepSize *int32 - // Whether or not to enable managed scaling for the capacity provider. + // Determines whether to enable managed scaling for the capacity provider. Status ManagedScalingStatus // The target capacity value for the capacity provider. The specified value must be - // greater than 0 and less than or equal to 100. A value of 100 will result in the - // Amazon EC2 instances in your Auto Scaling group being completely utilized. + // greater than 0 and less than or equal to 100. A value of 100 results in the + // Amazon EC2 instances in your Auto Scaling group being completely used. TargetCapacity *int32 noSmithyDocumentSerde } -// Details on a volume mount point that is used in a container definition. +// Details for a volume mount point that's used in a container definition. type MountPoint struct { // The path on the container to mount the host volume at. @@ -2392,10 +2429,10 @@ type NetworkBinding struct { // The IP address that the container is bound to on the container instance. BindIP *string - // The port number on the container that is used with the network binding. + // The port number on the container that's used with the network binding. ContainerPort *int32 - // The port number on the host that is used with the network binding. + // The port number on the host that's used with the network binding. HostPort *int32 // The protocol used for the network binding. @@ -2407,8 +2444,8 @@ type NetworkBinding struct { // An object representing the network configuration for a task or service. type NetworkConfiguration struct { - // The VPC subnets and security groups associated with a task. All specified - // subnets and security groups must be from the same VPC. + // The VPC subnets and security groups that are associated with a task. All + // specified subnets and security groups must be from the same VPC. AwsvpcConfiguration *AwsVpcConfiguration noSmithyDocumentSerde @@ -2433,8 +2470,8 @@ type NetworkInterface struct { // An object representing a constraint on task placement. For more information, see // Task Placement Constraints // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) -// in the Amazon Elastic Container Service Developer Guide. If you are using the -// Fargate launch type, task placement constraints are not supported. +// in the Amazon Elastic Container Service Developer Guide. If you're using the +// Fargate launch type, task placement constraints aren't supported. type PlacementConstraint struct { // A cluster query language expression to apply to the constraint. The expression @@ -2461,8 +2498,8 @@ type PlacementStrategy struct { // The field to apply the placement strategy against. For the spread placement // strategy, valid values are instanceId (or host, which has the same effect), or - // any platform or custom attribute that is applied to a container instance, such - // as attribute:ecs.availability-zone. For the binpack placement strategy, valid + // any platform or custom attribute that's applied to a container instance, such as + // attribute:ecs.availability-zone. For the binpack placement strategy, valid // values are cpu and memory. For the random placement strategy, this field is not // used. Field *string @@ -2471,9 +2508,9 @@ type PlacementStrategy struct { // tasks on available candidates. The spread placement strategy spreads placement // across available candidates evenly based on the field parameter. The binpack // strategy places tasks on available candidates that have the least available - // amount of the resource that is specified with the field parameter. For example, + // amount of the resource that's specified with the field parameter. For example, // if you binpack on memory, a task is placed on the instance with the least amount - // of remaining memory (but still enough to run the task). + // of remaining memory but still enough to run the task. Type PlacementStrategyType noSmithyDocumentSerde @@ -2483,14 +2520,14 @@ type PlacementStrategy struct { // device type is a GPU. type PlatformDevice struct { - // The ID for the GPU(s) on the container instance. The available GPU IDs can also - // be obtained on the container instance in the - // /var/lib/ecs/gpu/nvidia_gpu_info.json file. + // The ID for the GPUs on the container instance. The available GPU IDs can also be + // obtained on the container instance in the /var/lib/ecs/gpu/nvidia_gpu_info.json + // file. // // This member is required. Id *string - // The type of device that is available on the container instance. The only + // The type of device that's available on the container instance. The only // supported value is GPU. // // This member is required. @@ -2501,34 +2538,34 @@ type PlatformDevice struct { // Port mappings allow containers to access ports on the host container instance to // send or receive traffic. Port mappings are specified as part of the container -// definition. If you are using containers in a task with the awsvpc or host -// network mode, exposed ports should be specified using containerPort. The -// hostPort can be left blank or it must be the same value as the containerPort. -// You cannot expose the same container port for multiple protocols. An error will -// be returned if this is attempted After a task reaches the RUNNING status, manual -// and automatic host and container port assignments are visible in the -// networkBindings section of DescribeTasks API responses. +// definition. If you use containers in a task with the awsvpc or host network +// mode, specify the exposed ports using containerPort. The hostPort can be left +// blank or it must be the same value as the containerPort. You can't expose the +// same container port for multiple protocols. If you attempt this, an error is +// returned. After a task reaches the RUNNING status, manual and automatic host and +// container port assignments are visible in the networkBindings section of +// DescribeTasks API responses. type PortMapping struct { - // The port number on the container that is bound to the user-specified or - // automatically assigned host port. If you are using containers in a task with the - // awsvpc or host network mode, exposed ports should be specified using - // containerPort. If you are using containers in a task with the bridge network - // mode and you specify a container port and not a host port, your container - // automatically receives a host port in the ephemeral port range. For more - // information, see hostPort. Port mappings that are automatically assigned in this - // way do not count toward the 100 reserved ports limit of a container instance. + // The port number on the container that's bound to the user-specified or + // automatically assigned host port. If you use containers in a task with the + // awsvpc or host network mode, specify the exposed ports using containerPort. If + // you use containers in a task with the bridge network mode and you specify a + // container port and not a host port, your container automatically receives a host + // port in the ephemeral port range. For more information, see hostPort. Port + // mappings that are automatically assigned in this way do not count toward the 100 + // reserved ports limit of a container instance. ContainerPort *int32 // The port number on the container instance to reserve for your container. If you - // are using containers in a task with the awsvpc or host network mode, the - // hostPort can either be left blank or set to the same value as the containerPort. - // If you are using containers in a task with the bridge network mode, you can - // specify a non-reserved host port for your container port mapping, or you can - // omit the hostPort (or set it to 0) while specifying a containerPort and your - // container automatically receives a port in the ephemeral port range for your - // container instance operating system and Docker version. The default ephemeral - // port range for Docker version 1.6.0 and later is listed on the instance under + // use containers in a task with the awsvpc or host network mode, the hostPort can + // either be left blank or set to the same value as the containerPort. If you use + // containers in a task with the bridge network mode, you can specify a + // non-reserved host port for your container port mapping, or you can omit the + // hostPort (or set it to 0) while specifying a containerPort and your container + // automatically receives a port in the ephemeral port range for your container + // instance operating system and Docker version. The default ephemeral port range + // for Docker version 1.6.0 and later is listed on the instance under // /proc/sys/net/ipv4/ip_local_port_range. If this kernel parameter is unavailable, // the default ephemeral port range from 49153 through 65535 is used. Do not // attempt to specify a host port in the ephemeral port range as these are reserved @@ -2537,11 +2574,12 @@ type PortMapping struct { // is always used for Docker versions before 1.6.0. The default reserved ports are // 22 for SSH, the Docker ports 2375 and 2376, and the Amazon ECS container agent // ports 51678-51680. Any host port that was previously specified in a running task - // is also reserved while the task is running (after a task stops, the host port is - // released). The current reserved ports are displayed in the remainingResources of - // DescribeContainerInstances output. A container instance can have up to 100 - // reserved ports at a time, including the default reserved ports. Automatically - // assigned ports don't count toward the 100 reserved ports limit. + // is also reserved while the task is running. That is, after a task stops, the + // host port is released. The current reserved ports are displayed in the + // remainingResources of DescribeContainerInstances output. A container instance + // can have up to 100 reserved ports at a time. This number includes the default + // reserved ports. Automatically assigned ports aren't included in the 100 reserved + // ports quota. HostPort *int32 // The protocol used for the port mapping. Valid values are tcp and udp. The @@ -2551,11 +2589,11 @@ type PortMapping struct { noSmithyDocumentSerde } -// The configuration details for the App Mesh proxy. For tasks using the EC2 launch -// type, the container instances require at least version 1.26.0 of the container -// agent and at least version 1.26.0-1 of the ecs-init package to enable a proxy -// configuration. If your container instances are launched from the Amazon -// ECS-optimized AMI version 20190301 or later, then they contain the required +// The configuration details for the App Mesh proxy. For tasks that use the EC2 +// launch type, the container instances require at least version 1.26.0 of the +// container agent and at least version 1.26.0-1 of the ecs-init package to enable +// a proxy configuration. If your container instances are launched from the Amazon +// ECS optimized AMI version 20190301 or later, then they contain the required // versions of the container agent and ecs-init. For more information, see Amazon // ECS-optimized Linux AMI // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) @@ -2609,11 +2647,11 @@ type ProxyConfiguration struct { type RepositoryCredentials struct { // The Amazon Resource Name (ARN) of the secret containing the private repository - // credentials. When you are using the Amazon ECS API, CLI, or Amazon Web Services - // SDK, if the secret exists in the same Region as the task that you are launching - // then you can use either the full ARN or the name of the secret. When you are - // using the Amazon Web Services Management Console, you must specify the full ARN - // of the secret. + // credentials. When you use the Amazon ECS API, CLI, or Amazon Web Services SDK, + // if the secret exists in the same Region as the task that you're launching then + // you can use either the full ARN or the name of the secret. When you use the + // Amazon Web Services Management Console, you must specify the full ARN of the + // secret. // // This member is required. CredentialsParameter *string @@ -2643,7 +2681,7 @@ type Resource struct { // type. StringSetValue []string - // The type of the resource, such as INTEGER, DOUBLE, LONG, or STRINGSET. + // The type of the resource. Valid values: INTEGER, DOUBLE, LONG, or STRINGSET. Type *string noSmithyDocumentSerde @@ -2665,11 +2703,11 @@ type ResourceRequirement struct { Type ResourceType // The value for the specified resource type. If the GPU type is used, the value is - // the number of physical GPUs the Amazon ECS container agent will reserve for the - // container. The number of GPUs reserved for all containers in a task should not - // exceed the number of available GPUs on the container instance the task is - // launched on. If the InferenceAccelerator type is used, the value should match - // the deviceName for an InferenceAccelerator specified in a task definition. + // the number of physical GPUs the Amazon ECS container agent reserves for the + // container. The number of GPUs that's reserved for all containers in a task can't + // exceed the number of available GPUs on the container instance that the task is + // launched on. If the InferenceAccelerator type is used, the value matches the + // deviceName for an InferenceAccelerator specified in a task definition. // // This member is required. Value *string @@ -2727,7 +2765,7 @@ type Secret struct { // The secret to expose to the container. The supported values are either the full // ARN of the Secrets Manager secret or the full ARN of the parameter in the SSM // Parameter Store. If the SSM Parameter Store parameter exists in the same Region - // as the task you are launching, then you can use either the full ARN or name of + // as the task you're launching, then you can use either the full ARN or name of // the parameter. If the parameter exists in a different Region, then the full ARN // must be specified. // @@ -2740,15 +2778,14 @@ type Secret struct { // Details on a service within a cluster type Service struct { - // The capacity provider strategy the service is using. When using the - // DescribeServices API, this field is omitted if the service was created using a - // launch type. + // The capacity provider strategy the service uses. When using the DescribeServices + // API, this field is omitted if the service was created using a launch type. CapacityProviderStrategy []CapacityProviderStrategyItem // The Amazon Resource Name (ARN) of the cluster that hosts the service. ClusterArn *string - // The Unix timestamp for when the service was created. + // The Unix timestamp for the time when the service was created. CreatedAt *time.Time // The principal that created the service. @@ -2759,7 +2796,7 @@ type Service struct { DeploymentConfiguration *DeploymentConfiguration // The deployment controller type the service is using. When using the - // DescribeServices API, this field is omitted if the service is using the ECS + // DescribeServices API, this field is omitted if the service uses the ECS // deployment controller type. DeploymentController *DeploymentController @@ -2771,15 +2808,15 @@ type Service struct { // CreateService, and it can be modified with UpdateService. DesiredCount int32 - // Specifies whether to enable Amazon ECS managed tags for the tasks in the + // Determines whether to enable Amazon ECS managed tags for the tasks in the // service. For more information, see Tagging Your Amazon ECS Resources // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html) // in the Amazon Elastic Container Service Developer Guide. EnableECSManagedTags bool - // Whether or not the execute command functionality is enabled for the service. If - // true, the execute command functionality is enabled for all containers in tasks - // as part of the service. + // Determines whether the execute command functionality is enabled for the service. + // If true, the execute command functionality is enabled for all containers in + // tasks as part of the service. EnableExecuteCommand bool // The event stream for your service. A maximum of 100 of the latest events are @@ -2795,9 +2832,9 @@ type Service struct { // field is omitted if the service was created using a capacity provider strategy. LaunchType LaunchType - // A list of Elastic Load Balancing load balancer objects, containing the load - // balancer name, the container name (as it appears in a container definition), and - // the container port to access from the load balancer. + // A list of Elastic Load Balancing load balancer objects. It contains the load + // balancer name, the container name, and the container port to access from the + // load balancer. The container name is as it appears in a container definition. LoadBalancers []LoadBalancer // The VPC subnet and security group configuration for tasks that receive their own @@ -2813,27 +2850,27 @@ type Service struct { // The placement strategy that determines how tasks for the service are placed. PlacementStrategy []PlacementStrategy - // The operating system that your tasks in the service are running on. A platform - // family is specified only for tasks using the Fargate launch type. All tasks that - // run as part of this service must use the same platformFamily value as the - // service, for example, LINUX. + // The operating system that your tasks in the service run on. A platform family is + // specified only for tasks using the Fargate launch type. All tasks that run as + // part of this service must use the same platformFamily value as the service (for + // example, LINUX). PlatformFamily *string - // The platform version on which to run your service. A platform version is only - // specified for tasks hosted on Fargate. If one is not specified, the LATEST - // platform version is used by default. For more information, see Fargate Platform + // The platform version to run your service on. A platform version is only + // specified for tasks that are hosted on Fargate. If one isn't specified, the + // LATEST platform version is used. For more information, see Fargate Platform // Versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string - // Specifies whether to propagate the tags from the task definition or the service - // to the task. If no value is specified, the tags are not propagated. + // Determines whether to propagate the tags from the task definition or the service + // to the task. If no value is specified, the tags aren't propagated. PropagateTags PropagateTags - // The ARN of the IAM role associated with the service that allows the Amazon ECS - // container agent to register container instances with an Elastic Load Balancing - // load balancer. + // The ARN of the IAM role that's associated with the service. It allows the Amazon + // ECS container agent to register container instances with an Elastic Load + // Balancing load balancer. RoleArn *string // The number of tasks in the cluster that are in the RUNNING state. @@ -2842,7 +2879,7 @@ type Service struct { // The scheduling strategy to use for the service. For more information, see // Services // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html). - // There are two service scheduler strategies available: + // There are two service scheduler strategies available. // // * REPLICA-The replica // scheduling strategy places and maintains the desired number of tasks across your @@ -2851,10 +2888,10 @@ type Service struct { // placement decisions. // // * DAEMON-The daemon scheduling strategy deploys exactly - // one task on each active container instance that meets all of the task placement - // constraints that you specify in your cluster. The service scheduler also - // evaluates the task placement constraints for running tasks and will stop tasks - // that do not meet the placement constraints. Fargate tasks do not support the + // one task on each active container instance. This taskmeets all of the task + // placement constraints that you specify in your cluster. The service scheduler + // also evaluates the task placement constraints for running tasks. It stop tasks + // that don't meet the placement constraints. Fargate tasks don't support the // DAEMON scheduling strategy. SchedulingStrategy SchedulingStrategy @@ -2866,11 +2903,11 @@ type Service struct { // The name of your service. Up to 255 letters (uppercase and lowercase), numbers, // underscores, and hyphens are allowed. Service names must be unique within a - // cluster, but you can have similarly named services in multiple clusters within a - // Region or across multiple Regions. + // cluster. However, you can have similarly named services in multiple clusters + // within a Region or across multiple Regions. ServiceName *string - // The details of the service discovery registries to assign to this service. For + // The details for the service discovery registries to assign to this service. For // more information, see Service Discovery // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html). ServiceRegistries []ServiceRegistry @@ -2879,8 +2916,8 @@ type Service struct { Status *string // The metadata that you apply to the service to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // them. Each tag consists of a key and an optional value. You define bot the key + // and value. The following basic restrictions apply to tags: // // * Maximum number of // tags per resource - 50 @@ -2922,13 +2959,13 @@ type Service struct { noSmithyDocumentSerde } -// Details on an event associated with a service. +// The details for an event that's associated with a service. type ServiceEvent struct { - // The Unix timestamp for when the event was triggered. + // The Unix timestamp for the time when the event was triggered. CreatedAt *time.Time - // The ID string of the event. + // The ID string for the event. Id *string // The event message. @@ -2937,29 +2974,30 @@ type ServiceEvent struct { noSmithyDocumentSerde } -// Details of the service registry. +// The details for the service registry. type ServiceRegistry struct { - // The container name value, already specified in the task definition, to be used - // for your service discovery service. If the task definition that your service - // task specifies uses the bridge or host network mode, you must specify a + // The container name value to be used for your service discovery service. It's + // already specified in the task definition. If the task definition that your + // service task specifies uses the bridge or host network mode, you must specify a // containerName and containerPort combination from the task definition. If the // task definition that your service task specifies uses the awsvpc network mode // and a type SRV DNS record is used, you must specify either a containerName and - // containerPort combination or a port value, but not both. + // containerPort combination or a port value. However, you can't specify both. ContainerName *string - // The port value, already specified in the task definition, to be used for your - // service discovery service. If the task definition your service task specifies - // uses the bridge or host network mode, you must specify a containerName and - // containerPort combination from the task definition. If the task definition your - // service task specifies uses the awsvpc network mode and a type SRV DNS record is - // used, you must specify either a containerName and containerPort combination or a - // port value, but not both. + // The port value to be used for your service discovery service. It's already + // specified in the task definition. If the task definition your service task + // specifies uses the bridge or host network mode, you must specify a containerName + // and containerPort combination from the task definition. If the task definition + // your service task specifies uses the awsvpc network mode and a type SRV DNS + // record is used, you must specify either a containerName and containerPort + // combination or a port value. However, you can't specify both. ContainerPort *int32 // The port value used if your service discovery service specified an SRV record. - // This field may be used if both the awsvpc network mode and SRV records are used. + // This field might be used if both the awsvpc network mode and SRV records are + // used. Port *int32 // The Amazon Resource Name (ARN) of the service registry. The currently supported @@ -2970,7 +3008,7 @@ type ServiceRegistry struct { noSmithyDocumentSerde } -// The details of the execute command session. +// The details for the execute command session. type Session struct { // The ID of the execute command session. @@ -2980,7 +3018,7 @@ type Session struct { // uses to send commands and receive output from the container. StreamUrl *string - // An encrypted token value containing session and caller information. Used to + // An encrypted token value containing session and caller information. It's used to // authenticate the connection to the container. TokenValue *string @@ -2993,11 +3031,12 @@ type Setting struct { // The Amazon ECS resource name. Name SettingName - // The ARN of the principal, which can be an IAM user, IAM role, or the root user. - // If this field is omitted, the authenticated user is assumed. + // The ARN of the principal. It can be an IAM user, IAM role, or the root user. If + // this field is omitted, the authenticated user is assumed. PrincipalArn *string - // Whether the account setting is enabled or disabled for the specified resource. + // Determines whether the account setting is enabled or disabled for the specified + // resource. Value *string noSmithyDocumentSerde @@ -3008,51 +3047,51 @@ type Setting struct { // (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section of // the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and the // --sysctl option to docker run -// (https://docs.docker.com/engine/reference/run/#security-configuration). It is -// not recommended that you specify network-related systemControls parameters for -// multiple containers in a single task that also uses either the awsvpc or host -// network mode for the following reasons: +// (https://docs.docker.com/engine/reference/run/#security-configuration). We don't +// recommend that you specify network-related systemControls parameters for +// multiple containers in a single task. This task also uses either the awsvpc or +// host network mode. It does it for the following reasons. // -// * For tasks that use the awsvpc network -// mode, if you set systemControls for any container, it applies to all containers -// in the task. If you set different systemControls for multiple containers in a -// single task, the container that is started last determines which systemControls -// take effect. +// * For tasks that use +// the awsvpc network mode, if you set systemControls for any container, it applies +// to all containers in the task. If you set different systemControls for multiple +// containers in a single task, the container that's started last determines which +// systemControls take effect. // -// * For tasks that use the host network mode, the systemControls -// parameter applies to the container instance's kernel parameter as well as that -// of all containers of any tasks running on that container instance. +// * For tasks that use the host network mode, the +// systemControls parameter applies to the container instance's kernel parameter +// and that of all containers of any tasks running on that container instance. type SystemControl struct { - // The namespaced kernel parameter for which to set a value. + // The namespaced kernel parameter to set a value for. Namespace *string - // The value for the namespaced kernel parameter specified in namespace. + // The value for the namespaced kernel parameter that's specified in namespace. Value *string noSmithyDocumentSerde } // The metadata that you apply to a resource to help you categorize and organize -// them. Each tag consists of a key and an optional value, both of which you -// define. The following basic restrictions apply to tags: +// them. Each tag consists of a key and an optional value. You define them. The +// following basic restrictions apply to tags: // -// * Maximum number of -// tags per resource - 50 +// * Maximum number of tags per +// resource - 50 // -// * For each resource, each tag key must be unique, and -// each tag key can have only one value. +// * For each resource, each tag key must be unique, and each tag +// key can have only one value. // -// * Maximum key length - 128 Unicode -// characters in UTF-8 +// * Maximum key length - 128 Unicode characters in +// UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // -// * -// If your tagging schema is used across multiple services and resources, remember -// that other services may have restrictions on allowed characters. Generally -// allowed characters are: letters, numbers, and spaces representable in UTF-8, and -// the following characters: + - = . _ : / @. +// * If your +// tagging schema is used across multiple services and resources, remember that +// other services may have restrictions on allowed characters. Generally allowed +// characters are: letters, numbers, and spaces representable in UTF-8, and the +// following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -3077,17 +3116,17 @@ type Tag struct { // Details on a task in a cluster. type Task struct { - // The Elastic Network Adapter associated with the task if the task uses the awsvpc - // network mode. + // The Elastic Network Adapter that's associated with the task if the task uses the + // awsvpc network mode. Attachments []Attachment // The attributes of the task Attributes []Attribute - // The availability zone of the task. + // The Availability Zone for the task. AvailabilityZone *string - // The capacity provider associated with the task. + // The capacity provider that's associated with the task. CapacityProviderName *string // The ARN of the cluster that hosts the task. @@ -3096,165 +3135,168 @@ type Task struct { // The connectivity status of a task. Connectivity Connectivity - // The Unix timestamp for when the task last went into CONNECTED status. + // The Unix timestamp for the time when the task last went into CONNECTED status. ConnectivityAt *time.Time // The ARN of the container instances that host the task. ContainerInstanceArn *string - // The containers associated with the task. + // The containers that's associated with the task. Containers []Container // The number of CPU units used by the task as expressed in a task definition. It - // can be expressed as an integer using CPU units, for example 1024. It can also be - // expressed as a string using vCPUs, for example 1 vCPU or 1 vcpu. String values - // are converted to an integer indicating the CPU units when the task definition is - // registered. If you are using the EC2 launch type, this field is optional. - // Supported values are between 128 CPU units (0.125 vCPUs) and 10240 CPU units (10 - // vCPUs). If you are using the Fargate launch type, this field is required and you - // must use one of the following values, which determines your range of supported - // values for the memory parameter: - // - // * 256 (.25 vCPU) - Available memory values: - // 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) + // can be expressed as an integer using CPU units (for example, 1024). It can also + // be expressed as a string using vCPUs (for example, 1 vCPU or 1 vcpu). String + // values are converted to an integer that indicates the CPU units when the task + // definition is registered. If you use the EC2 launch type, this field is + // optional. Supported values are between 128 CPU units (0.125 vCPUs) and 10240 CPU + // units (10 vCPUs). If you use the Fargate launch type, this field is required. + // You must use one of the following values. These values determine the range of + // supported values for the memory parameter: The CPU units cannot be less than 1 + // vCPU when you use Windows containers on Fargate. + // + // * 256 (.25 vCPU) - Available + // memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) + // + // * 512 (.5 vCPU) - + // Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) // - // * 512 (.5 vCPU) - Available memory - // values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - // - // * 1024 (1 vCPU) - - // Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), - // 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + // * + // 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), + // 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) // - // * 2048 (2 vCPU) - Available memory - // values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) + // * 2048 (2 vCPU) - Available + // memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 + // GB) // - // * - // 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) - // in increments of 1024 (1 GB) + // * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 + // (30 GB) in increments of 1024 (1 GB) Cpu *string - // The Unix timestamp for when the task was created (the task entered the PENDING - // state). + // The Unix timestamp for the time when the task was created. More specifically, + // it's for the time when the task entered the PENDING state. CreatedAt *time.Time // The desired status of the task. For more information, see Task Lifecycle // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html). DesiredStatus *string - // Whether or not execute command functionality is enabled for this task. If true, - // this enables execute command functionality on all containers in the task. + // Determines whether execute command functionality is enabled for this task. If + // true, execute command functionality is enabled on all the containers in the + // task. EnableExecuteCommand bool // The ephemeral storage settings for the task. EphemeralStorage *EphemeralStorage - // The Unix timestamp for when the task execution stopped. + // The Unix timestamp for the time when the task execution stopped. ExecutionStoppedAt *time.Time - // The name of the task group associated with the task. + // The name of the task group that's associated with the task. Group *string - // The health status for the task, which is determined by the health of the - // essential containers in the task. If all essential containers in the task are - // reporting as HEALTHY, then the task status also reports as HEALTHY. If any - // essential containers in the task are reporting as UNHEALTHY or UNKNOWN, then the - // task status also reports as UNHEALTHY or UNKNOWN, accordingly. The Amazon ECS - // container agent does not monitor or report on Docker health checks that are - // embedded in a container image (such as those specified in a parent image or from - // the image's Dockerfile) and not specified in the container definition. Health - // check parameters that are specified in a container definition override any - // Docker health checks that exist in the container image. + // The health status for the task. It's determined by the health of the essential + // containers in the task. If all essential containers in the task are reporting as + // HEALTHY, the task status also reports as HEALTHY. If any essential containers in + // the task are reporting as UNHEALTHY or UNKNOWN, the task status also reports as + // UNHEALTHY or UNKNOWN. The Amazon ECS container agent doesn't monitor or report + // on Docker health checks that are embedded in a container image and not specified + // in the container definition. For example, this includes those specified in a + // parent image or from the image's Dockerfile. Health check parameters that are + // specified in a container definition override any Docker health checks that are + // found in the container image. HealthStatus HealthStatus - // The Elastic Inference accelerator associated with the task. + // The Elastic Inference accelerator that's associated with the task. InferenceAccelerators []InferenceAccelerator - // The last known status of the task. For more information, see Task Lifecycle + // The last known status for the task. For more information, see Task Lifecycle // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html). LastStatus *string - // The infrastructure on which your task is running. For more information, see - // Amazon ECS launch types + // The infrastructure where your task runs on. For more information, see Amazon ECS + // launch types // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) // in the Amazon Elastic Container Service Developer Guide. LaunchType LaunchType - // The amount of memory (in MiB) used by the task as expressed in a task - // definition. It can be expressed as an integer using MiB, for example 1024. It - // can also be expressed as a string using GB, for example 1GB or 1 GB. String - // values are converted to an integer indicating the MiB when the task definition - // is registered. If you are using the EC2 launch type, this field is optional. If - // you are using the Fargate launch type, this field is required and you must use - // one of the following values, which determines your range of supported values for - // the cpu parameter: + // The amount of memory (in MiB) that the task uses as expressed in a task + // definition. It can be expressed as an integer using MiB (for example, 1024). If + // it's expressed as a string using GB (for example, 1GB or 1 GB), it's converted + // to an integer indicating the MiB when the task definition is registered. If you + // use the EC2 launch type, this field is optional. If you use the Fargate launch + // type, this field is required. You must use one of the following values. The + // value that you choose determines the range of supported values for the cpu + // parameter. // - // * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu - // values: 256 (.25 vCPU) + // * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 + // (.25 vCPU) // - // * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - - // Available cpu values: 512 (.5 vCPU) + // * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu + // values: 512 (.5 vCPU) // - // * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), - // 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 - // (1 vCPU) + // * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), + // 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) // - // * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - - // Available cpu values: 2048 (2 vCPU) + // * + // Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available + // cpu values: 2048 (2 vCPU) // - // * Between 8192 (8 GB) and 30720 (30 GB) in - // increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) + // * Between 8192 (8 GB) and 30720 (30 GB) in increments + // of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) Memory *string // One or more container overrides. Overrides *TaskOverride // The operating system that your tasks are running on. A platform family is - // specified only for tasks using the Fargate launch type. All tasks that run as - // part of this service must use the same platformFamily value as the service, for - // example, LINUX.. + // specified only for tasks that use the Fargate launch type. All tasks that run as + // part of this service must use the same platformFamily value as the service (for + // example, LINUX.). PlatformFamily *string - // The platform version on which your task is running. A platform version is only - // specified for tasks using the Fargate launch type. If one is not specified, the - // LATEST platform version is used by default. For more information, see Fargate - // Platform Versions + // The platform version where your task runs on. A platform version is only + // specified for tasks that use the Fargate launch type. If you didn't specify one, + // the LATEST platform version is used. For more information, see Fargate Platform + // Versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) // in the Amazon Elastic Container Service Developer Guide. PlatformVersion *string - // The Unix timestamp for when the container image pull began. + // The Unix timestamp for the time when the container image pull began. PullStartedAt *time.Time - // The Unix timestamp for when the container image pull completed. + // The Unix timestamp for the time when the container image pull completed. PullStoppedAt *time.Time - // The Unix timestamp for when the task started (the task transitioned from the - // PENDING state to the RUNNING state). + // The Unix timestamp for the time when the task started. More specifically, it's + // for the time when the task transitioned from the PENDING state to the RUNNING + // state. StartedAt *time.Time - // The tag specified when a task is started. If the task is started by an Amazon - // ECS service, then the startedBy parameter contains the deployment ID of the - // service that starts it. + // The tag specified when a task is started. If an Amazon ECS service started the + // task, the startedBy parameter contains the deployment ID of that service. StartedBy *string - // The stop code indicating why a task was stopped. The stoppedReason may contain + // The stop code indicating why a task was stopped. The stoppedReason might contain // additional details. StopCode TaskStopCode - // The Unix timestamp for when the task was stopped (the task transitioned from the - // RUNNING state to the STOPPED state). + // The Unix timestamp for the time when the task was stopped. More specifically, + // it's for the time when the task transitioned from the RUNNING state to the + // STOPPED state. StoppedAt *time.Time // The reason that the task was stopped. StoppedReason *string - // The Unix timestamp for when the task stops (transitions from the RUNNING state - // to STOPPED). + // The Unix timestamp for the time when the task stops. More specifically, it's for + // the time when the task transitions from the RUNNING state to STOPPED. StoppingAt *time.Time - // The metadata that you apply to the task to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // The metadata that you apply to the task to help you categorize and organize the + // task. Each tag consists of a key and an optional value. You define both the key + // and value. The following basic restrictions apply to tags: // // * Maximum number of // tags per resource - 50 @@ -3289,11 +3331,11 @@ type Task struct { TaskDefinitionArn *string // The version counter for the task. Every time a task experiences a change that - // triggers a CloudWatch event, the version counter is incremented. If you are - // replicating your Amazon ECS task state with CloudWatch Events, you can compare - // the version of a task reported by the Amazon ECS API actions with the version - // reported in CloudWatch Events for the task (inside the detail object) to verify - // that the version in your event stream is current. + // starts a CloudWatch event, the version counter is incremented. If you replicate + // your Amazon ECS task state with CloudWatch Events, you can compare the version + // of a task reported by the Amazon ECS API actions with the version reported in + // CloudWatch Events for the task (inside the detail object) to verify that the + // version in your event stream is current. Version int64 noSmithyDocumentSerde @@ -3318,30 +3360,31 @@ type TaskDefinition struct { // in the Amazon Elastic Container Service Developer Guide. ContainerDefinitions []ContainerDefinition - // The number of cpu units used by the task. If you are using the EC2 launch type, - // this field is optional and any value can be used. If you are using the Fargate - // launch type, this field is required and you must use one of the following - // values, which determines your range of valid values for the memory parameter: + // The number of cpu units used by the task. If you use the EC2 launch type, this + // field is optional. Any value can be used. If you use the Fargate launch type, + // this field is required. You must use one of the following values. The value that + // you choose determines your range of valid values for the memory parameter. The + // CPU units cannot be less than 1 vCPU when you use Windows containers on + // Fargate. // - // * - // 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 - // GB) + // * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), + // 2048 (2 GB) // - // * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 - // (3 GB), 4096 (4 GB) + // * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 + // GB), 3072 (3 GB), 4096 (4 GB) // - // * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), - // 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + // * 1024 (1 vCPU) - Available memory values: 2048 + // (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 + // GB) // - // * - // 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) - // in increments of 1024 (1 GB) + // * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 + // (16 GB) in increments of 1024 (1 GB) // - // * 4096 (4 vCPU) - Available memory values: Between - // 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) + // * 4096 (4 vCPU) - Available memory values: + // Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) Cpu *string - // The Unix timestamp for when the task definition was deregistered. + // The Unix timestamp for the time when the task definition was deregistered. DeregisteredAt *time.Time // The ephemeral storage settings to use for tasks run with the task definition. @@ -3356,14 +3399,14 @@ type TaskDefinition struct { ExecutionRoleArn *string // The name of a family that this task definition is registered to. Up to 255 - // letters (uppercase and lowercase), numbers, hyphens, and underscores are - // allowed. A family groups multiple versions of a task definition. Amazon ECS - // gives the first task definition that you registered to a family a revision - // number of 1. Amazon ECS gives sequential revision numbers to each task - // definition that you add. + // characters are allowed. Letters (both uppercase and lowercase letters), numbers, + // hyphens (-), and underscores (_) are allowed. A family groups multiple versions + // of a task definition. Amazon ECS gives the first task definition that you + // registered to a family a revision number of 1. Amazon ECS gives sequential + // revision numbers to each task definition that you add. Family *string - // The Elastic Inference accelerator associated with the task. + // The Elastic Inference accelerator that's associated with the task. InferenceAccelerators []InferenceAccelerator // The IPC resource namespace to use for the containers in the task. The valid @@ -3396,32 +3439,32 @@ type TaskDefinition struct { // Windows containers or tasks run on Fargate. IpcMode IpcMode - // The amount (in MiB) of memory used by the task. If your tasks will be run on - // Amazon EC2 instances, you must specify either a task-level memory value or a + // The amount (in MiB) of memory used by the task. If your tasks runs on Amazon EC2 + // instances, you must specify either a task-level memory value or a // container-level memory value. This field is optional and any value can be used. - // If a task-level memory value is specified then the container-level memory value - // is optional. For more information regarding container-level memory and memory + // If a task-level memory value is specified, the container-level memory value is + // optional. For more information regarding container-level memory and memory // reservation, see ContainerDefinition // (https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html). - // If your tasks will be run on Fargate, this field is required and you must use - // one of the following values, which determines your range of valid values for the - // cpu parameter: + // If your tasks runs on Fargate, this field is required. You must use one of the + // following values. The value you choose determines your range of valid values for + // the cpu parameter. // - // * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: - // 256 (.25 vCPU) + // * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu + // values: 256 (.25 vCPU) // - // * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available - // cpu values: 512 (.5 vCPU) + // * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - + // Available cpu values: 512 (.5 vCPU) // - // * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), - // 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + // * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), + // 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 + // (1 vCPU) // - // * - // Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available - // cpu values: 2048 (2 vCPU) + // * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - + // Available cpu values: 2048 (2 vCPU) // - // * Between 8192 (8 GB) and 30720 (30 GB) in increments - // of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) + // * Between 8192 (8 GB) and 30720 (30 GB) in + // increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) Memory *string // The Docker networking mode to use for the containers in the task. The valid @@ -3466,21 +3509,21 @@ type TaskDefinition struct { // not supported for Windows containers or tasks run on Fargate. PidMode PidMode - // An array of placement constraint objects to use for tasks. This parameter is not + // An array of placement constraint objects to use for tasks. This parameter isn't // supported for tasks run on Fargate. PlacementConstraints []TaskDefinitionPlacementConstraint // The configuration details for the App Mesh proxy. Your Amazon ECS container // instances require at least version 1.26.0 of the container agent and at least // version 1.26.0-1 of the ecs-init package to enable a proxy configuration. If - // your container instances are launched from the Amazon ECS-optimized AMI version - // 20190301 or later, then they contain the required versions of the container - // agent and ecs-init. For more information, see Amazon ECS-optimized Linux AMI + // your container instances are launched from the Amazon ECS optimized AMI version + // 20190301 or later, they contain the required versions of the container agent and + // ecs-init. For more information, see Amazon ECS-optimized Linux AMI // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) // in the Amazon Elastic Container Service Developer Guide. ProxyConfiguration *ProxyConfiguration - // The Unix timestamp for when the task definition was registered. + // The Unix timestamp for the time when the task definition was registered. RegisteredAt *time.Time // The principal that registered the task definition. @@ -3488,12 +3531,12 @@ type TaskDefinition struct { // The container instance attributes required by your task. When an Amazon EC2 // instance is registered to your cluster, the Amazon ECS container agent assigns - // some standard attributes to the instance. You can apply custom attributes, - // specified as key-value pairs using the Amazon ECS console or the PutAttributes - // API. These attributes are used when considering task placement for tasks hosted - // on Amazon EC2 instances. For more information, see Attributes + // some standard attributes to the instance. You can apply custom attributes. These + // are specified as key-value pairs using the Amazon ECS console or the + // PutAttributes API. These attributes are used when determining task placement for + // tasks hosted on Amazon EC2 instances. For more information, see Attributes // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes) - // in the Amazon Elastic Container Service Developer Guide. This parameter is not + // in the Amazon Elastic Container Service Developer Guide. This parameter isn't // supported for tasks run on Fargate. RequiresAttributes []Attribute @@ -3506,7 +3549,7 @@ type TaskDefinition struct { // number of a task definition in a family. When you register a task definition for // the first time, the revision is 1. Each time that you register a new revision of // a task definition in the same family, the revision value always increases by - // one, even if you have deregistered previous revisions in this family. + // one. This is even if you deregistered previous revisions in this family. Revision int32 // The operating system that your task definitions are running on. A platform @@ -3528,8 +3571,8 @@ type TaskDefinition struct { // in the Amazon Elastic Container Service Developer Guide. IAM roles for tasks on // Windows require that the -EnableTaskIAMRole option is set when you launch the // Amazon ECS-optimized Windows AMI. Your containers must also run some - // configuration code in order to take advantage of the feature. For more - // information, see Windows IAM roles for tasks + // configuration code to use the feature. For more information, see Windows IAM + // roles for tasks // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html) // in the Amazon Elastic Container Service Developer Guide. TaskRoleArn *string @@ -3538,7 +3581,7 @@ type TaskDefinition struct { // Using data volumes in tasks // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html) // in the Amazon Elastic Container Service Developer Guide. The host and sourcePath - // parameters are not supported for tasks run on Fargate. + // parameters aren't supported for tasks run on Fargate. Volumes []Volume noSmithyDocumentSerde @@ -3548,7 +3591,7 @@ type TaskDefinition struct { // For more information, see Task placement constraints // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html) // in the Amazon Elastic Container Service Developer Guide. Task placement -// constraints are not supported for tasks run on Fargate. +// constraints aren't supported for tasks run on Fargate. type TaskDefinitionPlacementConstraint struct { // A cluster query language expression to apply to the constraint. For more @@ -3564,23 +3607,23 @@ type TaskDefinitionPlacementConstraint struct { noSmithyDocumentSerde } -// The overrides associated with a task. +// The overrides that are associated with a task. type TaskOverride struct { - // One or more container overrides sent to a task. + // One or more container overrides that are sent to a task. ContainerOverrides []ContainerOverride // The cpu override for the task. Cpu *string // The ephemeral storage setting override for the task. This parameter is only - // supported for tasks hosted on Fargate using the following platform versions: + // supported for tasks hosted on Fargate that use the following platform + // versions: // - // * - // Linux platform version 1.4.0 or later. + // * Linux platform version 1.4.0 or later. // - // * Windows platform version 1.0.0 or - // later. + // * Windows platform version + // 1.0.0 or later. EphemeralStorage *EphemeralStorage // The Amazon Resource Name (ARN) of the task execution IAM role override for the @@ -3611,7 +3654,7 @@ type TaskOverride struct { // production traffic. type TaskSet struct { - // The capacity provider strategy associated with the task set. + // The capacity provider strategy that are associated with the task set. CapacityProviderStrategy []CapacityProviderStrategyItem // The Amazon Resource Name (ARN) of the cluster that the service that hosts the @@ -3624,14 +3667,14 @@ type TaskSet struct { // up to 2 tasks. ComputedDesiredCount int32 - // The Unix timestamp for when the task set was created. + // The Unix timestamp for the time when the task set was created. CreatedAt *time.Time - // The external ID associated with the task set. If a task set is created by an - // CodeDeploy deployment, the externalId parameter contains the CodeDeploy - // deployment ID. If a task set is created for an external deployment and is - // associated with a service discovery registry, the externalId parameter contains - // the ECS_TASK_SET_EXTERNAL_ID Cloud Map attribute. + // The external ID associated with the task set. If an CodeDeploy deployment + // created a task set, the externalId parameter contains the CodeDeploy deployment + // ID. If a task set is created for an external deployment and is associated with a + // service discovery registry, the externalId parameter contains the + // ECS_TASK_SET_EXTERNAL_ID Cloud Map attribute. ExternalId *string // The ID of the task set. @@ -3643,7 +3686,7 @@ type TaskSet struct { // in the Amazon Elastic Container Service Developer Guide. LaunchType LaunchType - // Details on a load balancer that is used with a task set. + // Details on a load balancer that are used with a task set. LoadBalancers []LoadBalancer // The network configuration for the task set. @@ -3652,15 +3695,15 @@ type TaskSet struct { // The number of tasks in the task set that are in the PENDING status during a // deployment. A task in the PENDING state is preparing to enter the RUNNING state. // A task set enters the PENDING status when it launches for the first time or when - // it is restarted after being in the STOPPED state. + // it's restarted after being in the STOPPED state. PendingCount int32 // The operating system that your tasks in the set are running on. A platform - // family is specified only for tasks using the Fargate launch type. All tasks in - // the set must have the same value. + // family is specified only for tasks that use the Fargate launch type. All tasks + // in the set must have the same value. PlatformFamily *string - // The Fargate platform version on which the tasks in the task set are running. A + // The Fargate platform version where the tasks in the task set are running. A // platform version is only specified for tasks run on Fargate. For more // information, see Fargate platform versions // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) @@ -3671,71 +3714,72 @@ type TaskSet struct { // deployment. A task in the RUNNING state is running and ready for use. RunningCount int32 - // A floating-point percentage of the desired number of tasks to place and keep + // A floating-point percentage of your desired number of tasks to place and keep // running in the task set. Scale *Scale // The Amazon Resource Name (ARN) of the service the task set exists in. ServiceArn *string - // The details of the service discovery registries to assign to this task set. For + // The details for the service discovery registries to assign to this task set. For // more information, see Service discovery // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html). ServiceRegistries []ServiceRegistry - // The stability status, which indicates whether the task set has reached a steady - // state. If the following conditions are met, the task set will be in - // STEADY_STATE: - // - // * The task runningCount is equal to the computedDesiredCount. + // The stability status. This indicates whether the task set has reached a steady + // state. If the following conditions are met, the task set sre in STEADY_STATE: // // * - // The pendingCount is 0. + // The task runningCount is equal to the computedDesiredCount. + // + // * The pendingCount + // is 0. // - // * There are no tasks running on container instances in - // the DRAINING status. + // * There are no tasks that are running on container instances in the + // DRAINING status. // // * All tasks are reporting a healthy status from the load // balancers, service discovery, and container health checks. // // If any of those - // conditions are not met, the stability status returns STABILIZING. + // conditions aren't met, the stability status returns STABILIZING. StabilityStatus StabilityStatus - // The Unix timestamp for when the task set stability status was retrieved. + // The Unix timestamp for the time when the task set stability status was + // retrieved. StabilityStatusAt *time.Time - // The tag specified when a task set is started. If the task set is created by an - // CodeDeploy deployment, the startedBy parameter is CODE_DEPLOY. For a task set - // created for an external deployment, the startedBy field isn't used. + // The tag specified when a task set is started. If an CodeDeploy deployment + // created the task set, the startedBy parameter is CODE_DEPLOY. If an external + // deployment created the task set, the startedBy field isn't used. StartedBy *string - // The status of the task set. The following describes each state: PRIMARY The task - // set is serving production traffic. ACTIVE The task set is not serving production - // traffic. DRAINING The tasks in the task set are being stopped and their + // The status of the task set. The following describes each state. PRIMARY The task + // set is serving production traffic. ACTIVE The task set isn't serving production + // traffic. DRAINING The tasks in the task set are being stopped, and their // corresponding targets are being deregistered from their target group. Status *string // The metadata that you apply to the task set to help you categorize and organize - // them. Each tag consists of a key and an optional value, both of which you - // define. The following basic restrictions apply to tags: + // them. Each tag consists of a key and an optional value. You define both. The + // following basic restrictions apply to tags: // - // * Maximum number of - // tags per resource - 50 + // * Maximum number of tags per + // resource - 50 // - // * For each resource, each tag key must be unique, and - // each tag key can have only one value. + // * For each resource, each tag key must be unique, and each tag + // key can have only one value. // - // * Maximum key length - 128 Unicode - // characters in UTF-8 + // * Maximum key length - 128 Unicode characters in + // UTF-8 // // * Maximum value length - 256 Unicode characters in UTF-8 // - // * - // If your tagging schema is used across multiple services and resources, remember - // that other services may have restrictions on allowed characters. Generally - // allowed characters are: letters, numbers, and spaces representable in UTF-8, and - // the following characters: + - = . _ : / @. + // * If your + // tagging schema is used across multiple services and resources, remember that + // other services may have restrictions on allowed characters. Generally allowed + // characters are: letters, numbers, and spaces representable in UTF-8, and the + // following characters: + - = . _ : / @. // // * Tag keys and values are // case-sensitive. @@ -3746,13 +3790,13 @@ type TaskSet struct { // Tags with this prefix do not count against your tags per resource limit. Tags []Tag - // The task definition the task set is using. + // The task definition that the task set is using. TaskDefinition *string // The Amazon Resource Name (ARN) of the task set. TaskSetArn *string - // The Unix timestamp for when the task set was last updated. + // The Unix timestamp for the time when the task set was last updated. UpdatedAt *time.Time noSmithyDocumentSerde @@ -3820,15 +3864,15 @@ type VersionInfo struct { // The version number of the Amazon ECS container agent. AgentVersion *string - // The Docker version running on the container instance. + // The Docker version that's running on the container instance. DockerVersion *string noSmithyDocumentSerde } -// A data volume used in a task definition. For tasks that use the Amazon Elastic -// File System (Amazon EFS), specify an efsVolumeConfiguration. For Windows tasks -// that use Amazon FSx for Windows File Server file system, specify a +// A data volume that's used in a task definition. For tasks that use the Amazon +// Elastic File System (Amazon EFS), specify an efsVolumeConfiguration. For Windows +// tasks that use Amazon FSx for Windows File Server file system, specify a // fsxWindowsFileServerVolumeConfiguration. For tasks that use a Docker volume, // specify a DockerVolumeConfiguration. For tasks that use a bind mount host // volume, specify a host and optional sourcePath. For more information, see Using @@ -3836,30 +3880,29 @@ type VersionInfo struct { // (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html). type Volume struct { - // This parameter is specified when you are using Docker volumes. Windows - // containers only support the use of the local driver. To use bind mounts, specify - // the host parameter instead. Docker volumes are not supported by tasks run on - // Fargate. + // This parameter is specified when you use Docker volumes. Windows containers only + // support the use of the local driver. To use bind mounts, specify the host + // parameter instead. Docker volumes aren't supported by tasks run on Fargate. DockerVolumeConfiguration *DockerVolumeConfiguration - // This parameter is specified when you are using an Amazon Elastic File System - // file system for task storage. + // This parameter is specified when you use an Amazon Elastic File System file + // system for task storage. EfsVolumeConfiguration *EFSVolumeConfiguration - // This parameter is specified when you are using Amazon FSx for Windows File - // Server file system for task storage. + // This parameter is specified when you use Amazon FSx for Windows File Server file + // system for task storage. FsxWindowsFileServerVolumeConfiguration *FSxWindowsFileServerVolumeConfiguration - // This parameter is specified when you are using bind mount host volumes. The - // contents of the host parameter determine whether your bind mount host volume - // persists on the host container instance and where it is stored. If the host - // parameter is empty, then the Docker daemon assigns a host path for your data - // volume. However, the data is not guaranteed to persist after the containers - // associated with it stop running. Windows containers can mount whole directories - // on the same drive as $env:ProgramData. Windows containers cannot mount - // directories on a different drive, and mount point cannot be across drives. For - // example, you can mount C:\my\path:C:\my\path and D:\:D:\, but not - // D:\my\path:C:\my\path or D:\:C:\my\path. + // This parameter is specified when you use bind mount host volumes. The contents + // of the host parameter determine whether your bind mount host volume persists on + // the host container instance and where it's stored. If the host parameter is + // empty, then the Docker daemon assigns a host path for your data volume. However, + // the data isn't guaranteed to persist after the containers that are associated + // with it stop running. Windows containers can mount whole directories on the same + // drive as $env:ProgramData. Windows containers can't mount directories on a + // different drive, and mount point can't be across drives. For example, you can + // mount C:\my\path:C:\my\path and D:\:D:\, but not D:\my\path:C:\my\path or + // D:\:C:\my\path. Host *HostVolumeProperties // The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, @@ -3878,8 +3921,8 @@ type VolumeFrom struct { // false. ReadOnly *bool - // The name of another container within the same task definition from which to - // mount volumes. + // The name of another container within the same task definition to mount volumes + // from. SourceContainer *string noSmithyDocumentSerde diff --git a/service/gamelift/internal/endpoints/endpoints.go b/service/gamelift/internal/endpoints/endpoints.go index 600b8664227..58f84783803 100644 --- a/service/gamelift/internal/endpoints/endpoints.go +++ b/service/gamelift/internal/endpoints/endpoints.go @@ -147,6 +147,9 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ap-northeast-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-3", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-south-1", }: endpoints.Endpoint{}, diff --git a/service/greengrassv2/api_op_CreateComponentVersion.go b/service/greengrassv2/api_op_CreateComponentVersion.go index 6f59670940d..b8920b0dad9 100644 --- a/service/greengrassv2/api_op_CreateComponentVersion.go +++ b/service/greengrassv2/api_op_CreateComponentVersion.go @@ -49,7 +49,8 @@ import ( // * Node.js 12 – nodejs12.x // // To create a component from a Lambda -// function, specify lambdaFunction when you call this operation. +// function, specify lambdaFunction when you call this operation. IoT Greengrass +// currently supports Lambda functions on only Linux core devices. func (c *Client) CreateComponentVersion(ctx context.Context, params *CreateComponentVersionInput, optFns ...func(*Options)) (*CreateComponentVersionOutput, error) { if params == nil { params = &CreateComponentVersionInput{} diff --git a/service/greengrassv2/deserializers.go b/service/greengrassv2/deserializers.go index e8e744b6fdc..f835fd9f6e8 100644 --- a/service/greengrassv2/deserializers.go +++ b/service/greengrassv2/deserializers.go @@ -4884,6 +4884,15 @@ func awsRestjson1_deserializeDocumentComponentRunWith(v **types.ComponentRunWith return err } + case "windowsUser": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.WindowsUser = ptr.String(jtv) + } + default: _, _ = key, value diff --git a/service/greengrassv2/serializers.go b/service/greengrassv2/serializers.go index e4d3bbf0fe4..103dd840258 100644 --- a/service/greengrassv2/serializers.go +++ b/service/greengrassv2/serializers.go @@ -1799,6 +1799,11 @@ func awsRestjson1_serializeDocumentComponentRunWith(v *types.ComponentRunWith, v } } + if v.WindowsUser != nil { + ok := object.Key("windowsUser") + ok.String(*v.WindowsUser) + } + return nil } diff --git a/service/greengrassv2/types/types.go b/service/greengrassv2/types/types.go index 8d67c6be872..cf9a7bf80aa 100644 --- a/service/greengrassv2/types/types.go +++ b/service/greengrassv2/types/types.go @@ -240,24 +240,35 @@ type ComponentPlatform struct { // in the IoT Greengrass V2 Developer Guide. type ComponentRunWith struct { - // The POSIX system user and (optional) group to use to run this component. Specify - // the user and group separated by a colon (:) in the following format: user:group. - // The group is optional. If you don't specify a group, the IoT Greengrass Core - // software uses the primary user for the group. If you omit this parameter, the - // IoT Greengrass Core software uses the default system user and group that you - // configure on the Greengrass nucleus component. For more information, see - // Configure the user and group that run components + // The POSIX system user and, optionally, group to use to run this component on + // Linux core devices. The user, and group if specified, must exist on each Linux + // core device. Specify the user and group separated by a colon (:) in the + // following format: user:group. The group is optional. If you don't specify a + // group, the IoT Greengrass Core software uses the primary user for the group. If + // you omit this parameter, the IoT Greengrass Core software uses the default + // system user and group that you configure on the Greengrass nucleus component. + // For more information, see Configure the user and group that run components // (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user). PosixUser *string // The system resource limits to apply to this component's process on the core - // device. If you omit this parameter, the IoT Greengrass Core software uses the + // device. IoT Greengrass currently supports this feature on only Linux core + // devices. If you omit this parameter, the IoT Greengrass Core software uses the // default system resource limits that you configure on the Greengrass nucleus // component. For more information, see Configure system resource limits for // components // (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits). SystemResourceLimits *SystemResourceLimits + // The Windows user to use to run this component on Windows core devices. The user + // must exist on each Windows core device, and its name and password must be in the + // LocalSystem account's Credentials Manager instance. If you omit this parameter, + // the IoT Greengrass Core software uses the default Windows user that you + // configure on the Greengrass nucleus component. For more information, see + // Configure the user and group that run components + // (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user). + WindowsUser *string + noSmithyDocumentSerde } diff --git a/service/health/api_op_DescribeAffectedAccountsForOrganization.go b/service/health/api_op_DescribeAffectedAccountsForOrganization.go index 82e1d637bbb..987752d9e1d 100644 --- a/service/health/api_op_DescribeAffectedAccountsForOrganization.go +++ b/service/health/api_op_DescribeAffectedAccountsForOrganization.go @@ -12,11 +12,11 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns a list of accounts in the organization from AWS Organizations that are +// Returns a list of accounts in the organization from Organizations that are // affected by the provided event. For more information about the different types -// of AWS Health events, see Event +// of Health events, see Event // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). Before -// you can call this operation, you must first enable AWS Health to work with AWS +// you can call this operation, you must first enable Health to work with // Organizations. To do this, call the EnableHealthServiceAccessForOrganization // (https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html) // operation from your organization's management account. This API operation uses @@ -66,21 +66,21 @@ type DescribeAffectedAccountsForOrganizationOutput struct { // A JSON set of elements of the affected accounts. AffectedAccounts []string - // This parameter specifies if the AWS Health event is a public AWS service event - // or an account-specific event. - // - // * If the eventScopeCode value is PUBLIC, then the - // affectedAccounts value is always empty. + // This parameter specifies if the Health event is a public Amazon Web Services + // service event or an account-specific event. // // * If the eventScopeCode value is - // ACCOUNT_SPECIFIC, then the affectedAccounts value lists the affected AWS - // accounts in your organization. For example, if an event affects a service such - // as Amazon Elastic Compute Cloud and you have AWS accounts that use that service, - // those account IDs appear in the response. + // PUBLIC, then the affectedAccounts value is always empty. // - // * If the eventScopeCode value is - // NONE, then the eventArn that you specified in the request is invalid or doesn't - // exist. + // * If the + // eventScopeCode value is ACCOUNT_SPECIFIC, then the affectedAccounts value lists + // the affected Amazon Web Services accounts in your organization. For example, if + // an event affects a service such as Amazon Elastic Compute Cloud and you have + // Amazon Web Services accounts that use that service, those account IDs appear in + // the response. + // + // * If the eventScopeCode value is NONE, then the eventArn that you + // specified in the request is invalid or doesn't exist. EventScopeCode types.EventScopeCode // If the results of a search are large, only a portion of the results are diff --git a/service/health/api_op_DescribeAffectedEntities.go b/service/health/api_op_DescribeAffectedEntities.go index 23dfd2dc08f..cb9dace1d92 100644 --- a/service/health/api_op_DescribeAffectedEntities.go +++ b/service/health/api_op_DescribeAffectedEntities.go @@ -15,20 +15,19 @@ import ( // Returns a list of entities that have been affected by the specified events, // based on the specified filter criteria. Entities can refer to individual // customer resources, groups of customer resources, or any other construct, -// depending on the AWS service. Events that have impact beyond that of the -// affected entities, or where the extent of impact is unknown, include at least -// one entity indicating this. At least one event ARN is required. Results are -// sorted by the lastUpdatedTime of the entity, starting with the most recent. +// depending on the Amazon Web Services service. Events that have impact beyond +// that of the affected entities, or where the extent of impact is unknown, include +// at least one entity indicating this. At least one event ARN is required. // -// * -// This API operation uses pagination. Specify the nextToken parameter in the next +// * This +// API operation uses pagination. Specify the nextToken parameter in the next // request to return more results. // // * This operation supports resource-level -// permissions. You can use this operation to allow or deny access to specific AWS +// permissions. You can use this operation to allow or deny access to specific // Health events. For more information, see Resource- and action-based conditions // (https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions) -// in the AWS Health User Guide. +// in the Health User Guide. func (c *Client) DescribeAffectedEntities(ctx context.Context, params *DescribeAffectedEntitiesInput, optFns ...func(*Options)) (*DescribeAffectedEntitiesOutput, error) { if params == nil { params = &DescribeAffectedEntitiesInput{} diff --git a/service/health/api_op_DescribeAffectedEntitiesForOrganization.go b/service/health/api_op_DescribeAffectedEntitiesForOrganization.go index 8ed94313f0c..eee053193de 100644 --- a/service/health/api_op_DescribeAffectedEntitiesForOrganization.go +++ b/service/health/api_op_DescribeAffectedEntitiesForOrganization.go @@ -13,13 +13,12 @@ import ( ) // Returns a list of entities that have been affected by one or more events for one -// or more accounts in your organization in AWS Organizations, based on the filter +// or more accounts in your organization in Organizations, based on the filter // criteria. Entities can refer to individual customer resources, groups of -// customer resources, or any other construct, depending on the AWS service. At -// least one event Amazon Resource Name (ARN) and account ID are required. Results -// are sorted by the lastUpdatedTime of the entity, starting with the most recent. -// Before you can call this operation, you must first enable AWS Health to work -// with AWS Organizations. To do this, call the +// customer resources, or any other construct, depending on the Amazon Web Services +// service. At least one event Amazon Resource Name (ARN) and account ID are +// required. Before you can call this operation, you must first enable Health to +// work with Organizations. To do this, call the // EnableHealthServiceAccessForOrganization // (https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html) // operation from your organization's management account. @@ -29,10 +28,10 @@ import ( // more results. // // * This operation doesn't support resource-level permissions. You -// can't use this operation to allow or deny access to specific AWS Health events. -// For more information, see Resource- and action-based conditions +// can't use this operation to allow or deny access to specific Health events. For +// more information, see Resource- and action-based conditions // (https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions) -// in the AWS Health User Guide. +// in the Health User Guide. func (c *Client) DescribeAffectedEntitiesForOrganization(ctx context.Context, params *DescribeAffectedEntitiesForOrganizationInput, optFns ...func(*Options)) (*DescribeAffectedEntitiesForOrganizationOutput, error) { if params == nil { params = &DescribeAffectedEntitiesForOrganizationInput{} diff --git a/service/health/api_op_DescribeEntityAggregates.go b/service/health/api_op_DescribeEntityAggregates.go index 1ea09dd5868..9c8b473aafc 100644 --- a/service/health/api_op_DescribeEntityAggregates.go +++ b/service/health/api_op_DescribeEntityAggregates.go @@ -12,8 +12,7 @@ import ( ) // Returns the number of entities that are affected by each of the specified -// events. If no events are specified, the counts of all affected entities are -// returned. +// events. func (c *Client) DescribeEntityAggregates(ctx context.Context, params *DescribeEntityAggregatesInput, optFns ...func(*Options)) (*DescribeEntityAggregatesOutput, error) { if params == nil { params = &DescribeEntityAggregatesInput{} diff --git a/service/health/api_op_DescribeEventDetails.go b/service/health/api_op_DescribeEventDetails.go index cb91c4e1310..3586c4c2897 100644 --- a/service/health/api_op_DescribeEventDetails.go +++ b/service/health/api_op_DescribeEventDetails.go @@ -12,8 +12,8 @@ import ( ) // Returns detailed information about one or more specified events. Information -// includes standard event data (AWS Region, service, and so on, as returned by -// DescribeEvents +// includes standard event data (Amazon Web Services Region, service, and so on, as +// returned by DescribeEvents // (https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEvents.html)), // a detailed event description, and possible additional metadata that depends upon // the nature of the event. Affected entities are not included. To retrieve the @@ -21,10 +21,10 @@ import ( // (https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntities.html) // operation. If a specified event can't be retrieved, an error message is returned // for that event. This operation supports resource-level permissions. You can use -// this operation to allow or deny access to specific AWS Health events. For more +// this operation to allow or deny access to specific Health events. For more // information, see Resource- and action-based conditions // (https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions) -// in the AWS Health User Guide. +// in the Health User Guide. func (c *Client) DescribeEventDetails(ctx context.Context, params *DescribeEventDetailsInput, optFns ...func(*Options)) (*DescribeEventDetailsOutput, error) { if params == nil { params = &DescribeEventDetailsInput{} diff --git a/service/health/api_op_DescribeEventDetailsForOrganization.go b/service/health/api_op_DescribeEventDetailsForOrganization.go index db3b14f9ae6..81e0fcf20b6 100644 --- a/service/health/api_op_DescribeEventDetailsForOrganization.go +++ b/service/health/api_op_DescribeEventDetailsForOrganization.go @@ -12,39 +12,40 @@ import ( ) // Returns detailed information about one or more specified events for one or more -// AWS accounts in your organization. This information includes standard event data -// (such as the AWS Region and service), an event description, and (depending on -// the event) possible metadata. This operation doesn't return affected entities, -// such as the resources related to the event. To return affected entities, use the +// Amazon Web Services accounts in your organization. This information includes +// standard event data (such as the Amazon Web Services Region and service), an +// event description, and (depending on the event) possible metadata. This +// operation doesn't return affected entities, such as the resources related to the +// event. To return affected entities, use the // DescribeAffectedEntitiesForOrganization // (https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntitiesForOrganization.html) -// operation. Before you can call this operation, you must first enable AWS Health -// to work with AWS Organizations. To do this, call the +// operation. Before you can call this operation, you must first enable Health to +// work with Organizations. To do this, call the // EnableHealthServiceAccessForOrganization // (https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html) // operation from your organization's management account. When you call the // DescribeEventDetailsForOrganization operation, specify the -// organizationEventDetailFilters object in the request. Depending on the AWS -// Health event type, note the following differences: +// organizationEventDetailFilters object in the request. Depending on the Health +// event type, note the following differences: // -// * To return event details -// for a public event, you must specify a null value for the awsAccountId -// parameter. If you specify an account ID for a public event, AWS Health returns -// an error message because public events aren't specific to an account. +// * To return event details for a +// public event, you must specify a null value for the awsAccountId parameter. If +// you specify an account ID for a public event, Health returns an error message +// because public events aren't specific to an account. // -// * To -// return event details for an event that is specific to an account in your -// organization, you must specify the awsAccountId parameter in the request. If you -// don't specify an account ID, AWS Health returns an error message because the -// event is specific to an account in your organization. +// * To return event details +// for an event that is specific to an account in your organization, you must +// specify the awsAccountId parameter in the request. If you don't specify an +// account ID, Health returns an error message because the event is specific to an +// account in your organization. // -// For more information, see -// Event (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). -// This operation doesn't support resource-level permissions. You can't use this -// operation to allow or deny access to specific AWS Health events. For more +// For more information, see Event +// (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). This +// operation doesn't support resource-level permissions. You can't use this +// operation to allow or deny access to specific Health events. For more // information, see Resource- and action-based conditions // (https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions) -// in the AWS Health User Guide. +// in the Health User Guide. func (c *Client) DescribeEventDetailsForOrganization(ctx context.Context, params *DescribeEventDetailsForOrganizationInput, optFns ...func(*Options)) (*DescribeEventDetailsForOrganizationOutput, error) { if params == nil { params = &DescribeEventDetailsForOrganizationInput{} diff --git a/service/health/api_op_DescribeEventTypes.go b/service/health/api_op_DescribeEventTypes.go index 965c7bd7a23..b3302488da0 100644 --- a/service/health/api_op_DescribeEventTypes.go +++ b/service/health/api_op_DescribeEventTypes.go @@ -13,9 +13,9 @@ import ( ) // Returns the event types that meet the specified filter criteria. You can use -// this API operation to find information about the AWS Health event, such as the -// category, AWS service, and event code. The metadata for each event appears in -// the EventType +// this API operation to find information about the Health event, such as the +// category, Amazon Web Services service, and event code. The metadata for each +// event appears in the EventType // (https://docs.aws.amazon.com/health/latest/APIReference/API_EventType.html) // object. If you don't specify a filter criteria, the API operation returns all // event types, in no particular order. This API operation uses pagination. Specify diff --git a/service/health/api_op_DescribeEvents.go b/service/health/api_op_DescribeEvents.go index c3e37472f13..51562ef384e 100644 --- a/service/health/api_op_DescribeEvents.go +++ b/service/health/api_op_DescribeEvents.go @@ -24,12 +24,12 @@ import ( // // * // When you call the DescribeEvents operation and specify an entity for the -// entityValues parameter, AWS Health might return public events that aren't -// specific to that resource. For example, if you call DescribeEvents and specify -// an ID for an Amazon Elastic Compute Cloud (Amazon EC2) instance, AWS Health -// might return events that aren't specific to that resource or service. To get -// events that are specific to a service, use the services parameter in the filter -// object. For more information, see Event +// entityValues parameter, Health might return public events that aren't specific +// to that resource. For example, if you call DescribeEvents and specify an ID for +// an Amazon Elastic Compute Cloud (Amazon EC2) instance, Health might return +// events that aren't specific to that resource or service. To get events that are +// specific to a service, use the services parameter in the filter object. For more +// information, see Event // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). // // * This diff --git a/service/health/api_op_DescribeEventsForOrganization.go b/service/health/api_op_DescribeEventsForOrganization.go index 4468cad651c..c8cd0737c80 100644 --- a/service/health/api_op_DescribeEventsForOrganization.go +++ b/service/health/api_op_DescribeEventsForOrganization.go @@ -12,8 +12,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns information about events across your organization in AWS Organizations. -// You can use thefilters parameter to specify the events that you want to return. +// Returns information about events across your organization in Organizations. You +// can use thefilters parameter to specify the events that you want to return. // Events are returned in a summary form and don't include the affected accounts, // detailed description, any additional metadata that depends on the event type, or // any affected resources. To retrieve that information, use the following @@ -34,9 +34,9 @@ import ( // you don't specify a filter, the DescribeEventsForOrganizations returns all // events across your organization. Results are sorted by lastModifiedTime, // starting with the most recent event. For more information about the different -// types of AWS Health events, see Event +// types of Health events, see Event // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). Before -// you can call this operation, you must first enable AWS Health to work with AWS +// you can call this operation, you must first enable Health to work with // Organizations. To do this, call the EnableHealthServiceAccessForOrganization // (https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html) // operation from your organization's management account. This API operation uses diff --git a/service/health/api_op_DescribeHealthServiceStatusForOrganization.go b/service/health/api_op_DescribeHealthServiceStatusForOrganization.go index b72a44fc8e6..1f922ff5243 100644 --- a/service/health/api_op_DescribeHealthServiceStatusForOrganization.go +++ b/service/health/api_op_DescribeHealthServiceStatusForOrganization.go @@ -10,10 +10,10 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// This operation provides status information on enabling or disabling AWS Health -// to work with your organization. To call this operation, you must sign in as an -// IAM user, assume an IAM role, or sign in as the root user (not recommended) in -// the organization's management account. +// This operation provides status information on enabling or disabling Health to +// work with your organization. To call this operation, you must sign in as an IAM +// user, assume an IAM role, or sign in as the root user (not recommended) in the +// organization's management account. func (c *Client) DescribeHealthServiceStatusForOrganization(ctx context.Context, params *DescribeHealthServiceStatusForOrganizationInput, optFns ...func(*Options)) (*DescribeHealthServiceStatusForOrganizationOutput, error) { if params == nil { params = &DescribeHealthServiceStatusForOrganizationInput{} @@ -35,8 +35,9 @@ type DescribeHealthServiceStatusForOrganizationInput struct { type DescribeHealthServiceStatusForOrganizationOutput struct { - // Information about the status of enabling or disabling AWS Health Organizational - // View in your organization. Valid values are ENABLED | DISABLED | PENDING. + // Information about the status of enabling or disabling the Health organizational + // view feature in your organization. Valid values are ENABLED | DISABLED | + // PENDING. HealthServiceAccessStatusForOrganization *string // Metadata pertaining to the operation's result. diff --git a/service/health/api_op_DisableHealthServiceAccessForOrganization.go b/service/health/api_op_DisableHealthServiceAccessForOrganization.go index e549bb222fd..a3b6935401a 100644 --- a/service/health/api_op_DisableHealthServiceAccessForOrganization.go +++ b/service/health/api_op_DisableHealthServiceAccessForOrganization.go @@ -10,23 +10,23 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Disables AWS Health from working with AWS Organizations. To call this operation, -// you must sign in as an AWS Identity and Access Management (IAM) user, assume an -// IAM role, or sign in as the root user (not recommended) in the organization's -// management account. For more information, see Aggregating AWS Health events -// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the AWS +// Disables Health from working with Organizations. To call this operation, you +// must sign in as an Identity and Access Management (IAM) user, assume an IAM +// role, or sign in as the root user (not recommended) in the organization's +// management account. For more information, see Aggregating Health events +// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the // Health User Guide. This operation doesn't remove the service-linked role from // the management account in your organization. You must use the IAM console, API, -// or AWS Command Line Interface (AWS CLI) to remove the service-linked role. For -// more information, see Deleting a Service-Linked Role +// or Command Line Interface (CLI) to remove the service-linked role. For more +// information, see Deleting a Service-Linked Role // (https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role) // in the IAM User Guide. You can also disable the organizational feature by using // the Organizations DisableAWSServiceAccess // (https://docs.aws.amazon.com/organizations/latest/APIReference/API_DisableAWSServiceAccess.html) -// API operation. After you call this operation, AWS Health stops aggregating -// events for all other AWS accounts in your organization. If you call the AWS -// Health API operations for organizational view, AWS Health returns an error. AWS -// Health continues to aggregate health events for your AWS account. +// API operation. After you call this operation, Health stops aggregating events +// for all other Amazon Web Services accounts in your organization. If you call the +// Health API operations for organizational view, Health returns an error. Health +// continues to aggregate health events for your Amazon Web Services account. func (c *Client) DisableHealthServiceAccessForOrganization(ctx context.Context, params *DisableHealthServiceAccessForOrganizationInput, optFns ...func(*Options)) (*DisableHealthServiceAccessForOrganizationOutput, error) { if params == nil { params = &DisableHealthServiceAccessForOrganizationInput{} diff --git a/service/health/api_op_EnableHealthServiceAccessForOrganization.go b/service/health/api_op_EnableHealthServiceAccessForOrganization.go index fe10810133e..14b81130a4c 100644 --- a/service/health/api_op_EnableHealthServiceAccessForOrganization.go +++ b/service/health/api_op_EnableHealthServiceAccessForOrganization.go @@ -10,29 +10,29 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Enables AWS Health to work with AWS Organizations. You can use the -// organizational view feature to aggregate events from all AWS accounts in your +// Enables Health to work with Organizations. You can use the organizational view +// feature to aggregate events from all Amazon Web Services accounts in your // organization in a centralized location. This operation also creates a // service-linked role for the management account in the organization. To call this // operation, you must meet the following requirements: // // * You must have a Business -// or Enterprise Support plan from AWS Support -// (http://aws.amazon.com/premiumsupport/) to use the AWS Health API. If you call -// the AWS Health API from an AWS account that doesn't have a Business or +// or Enterprise Support plan from Amazon Web Services Support +// (http://aws.amazon.com/premiumsupport/) to use the Health API. If you call the +// Health API from an Amazon Web Services account that doesn't have a Business or // Enterprise Support plan, you receive a SubscriptionRequiredException error. // // * // You must have permission to call this operation from the organization's -// management account. For example IAM policies, see AWS Health identity-based -// policy examples +// management account. For example IAM policies, see Health identity-based policy +// examples // (https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html). // // If -// you don't have the required support plan, you can instead use the AWS Health -// console to enable the organizational view feature. For more information, see -// Aggregating AWS Health events -// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the AWS +// you don't have the required support plan, you can instead use the Health console +// to enable the organizational view feature. For more information, see Aggregating +// Health events +// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the // Health User Guide. func (c *Client) EnableHealthServiceAccessForOrganization(ctx context.Context, params *EnableHealthServiceAccessForOrganizationInput, optFns ...func(*Options)) (*EnableHealthServiceAccessForOrganizationOutput, error) { if params == nil { diff --git a/service/health/doc.go b/service/health/doc.go index 8d9bccc9ba7..661a78c4f60 100644 --- a/service/health/doc.go +++ b/service/health/doc.go @@ -3,44 +3,44 @@ // Package health provides the API client, operations, and parameter types for AWS // Health APIs and Notifications. // -// AWS Health The AWS Health API provides programmatic access to the AWS Health -// information that appears in the AWS Personal Health Dashboard +// Health The Health API provides programmatic access to the Health information +// that appears in the Personal Health Dashboard // (https://phd.aws.amazon.com/phd/home#/). You can use the API operations to get -// information about AWS Health events that affect your AWS services and +// information about events that might affect your Amazon Web Services services and // resources. // -// * You must have a Business or Enterprise Support plan from AWS -// Support (http://aws.amazon.com/premiumsupport/) to use the AWS Health API. If -// you call the AWS Health API from an AWS account that doesn't have a Business or -// Enterprise Support plan, you receive a SubscriptionRequiredException error. +// * You must have a Business or Enterprise Support plan from Amazon +// Web Services Support (http://aws.amazon.com/premiumsupport/) to use the Health +// API. If you call the Health API from an Amazon Web Services account that doesn't +// have a Business or Enterprise Support plan, you receive a +// SubscriptionRequiredException error. // -// * -// You can use the AWS Health endpoint health.us-east-1.amazonaws.com (HTTPS) to -// call the AWS Health API operations. AWS Health supports a multi-Region -// application architecture and has two regional endpoints in an active-passive -// configuration. You can use the high availability endpoint example to determine -// which AWS Region is active, so that you can get the latest information from the -// API. For more information, see Accessing the AWS Health API -// (https://docs.aws.amazon.com/health/latest/ug/health-api.html) in the AWS Health -// User Guide. +// * You can use the Health endpoint +// health.us-east-1.amazonaws.com (HTTPS) to call the Health API operations. Health +// supports a multi-Region application architecture and has two regional endpoints +// in an active-passive configuration. You can use the high availability endpoint +// example to determine which Amazon Web Services Region is active, so that you can +// get the latest information from the API. For more information, see Accessing the +// Health API (https://docs.aws.amazon.com/health/latest/ug/health-api.html) in the +// Health User Guide. // -// For authentication of requests, AWS Health uses the Signature +// For authentication of requests, Health uses the Signature // Version 4 Signing Process // (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). If -// your AWS account is part of AWS Organizations, you can use the AWS Health -// organizational view feature. This feature provides a centralized view of AWS -// Health events across all accounts in your organization. You can aggregate AWS -// Health events in real time to identify accounts in your organization that are -// affected by an operational event or get notified of security vulnerabilities. -// Use the organizational view API operations to enable this feature and return -// event information. For more information, see Aggregating AWS Health events -// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the AWS -// Health User Guide. When you use the AWS Health API operations to return AWS -// Health events, see the following recommendations: +// your Amazon Web Services account is part of Organizations, you can use the +// Health organizational view feature. This feature provides a centralized view of +// Health events across all accounts in your organization. You can aggregate Health +// events in real time to identify accounts in your organization that are affected +// by an operational event or get notified of security vulnerabilities. Use the +// organizational view API operations to enable this feature and return event +// information. For more information, see Aggregating Health events +// (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in the +// Health User Guide. When you use the Health API operations to return Health +// events, see the following recommendations: // // * Use the eventScopeCode // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html#AWSHealth-Type-Event-eventScopeCode) -// parameter to specify whether to return AWS Health events that are public or +// parameter to specify whether to return Health events that are public or // account-specific. // // * Use pagination to view all events from the response. For diff --git a/service/health/types/types.go b/service/health/types/types.go index d1d86b8d077..9c4e9914175 100644 --- a/service/health/types/types.go +++ b/service/health/types/types.go @@ -10,7 +10,8 @@ import ( // Information about an entity that is affected by a Health event. type AffectedEntity struct { - // The 12-digit AWS account number that contains the affected entity. + // The 12-digit Amazon Web Services account number that contains the affected + // entity. AwsAccountId *string // The unique identifier for the entity. Format: @@ -82,8 +83,8 @@ type EntityAggregate struct { noSmithyDocumentSerde } -// The values to use to filter results from the EntityFilter -// (https://docs.aws.amazon.com/health/latest/APIReference/API_EntityFilter.html) +// The values to use to filter results from the DescribeAffectedEntities +// (https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntities.html) // operation. type EntityFilter struct { @@ -113,22 +114,23 @@ type EntityFilter struct { noSmithyDocumentSerde } -// Summary information about an AWS Health event. AWS Health events can be public -// or account-specific: +// Summary information about an Health event. Health events can be public or +// account-specific: // -// * Public events might be service events that are not -// specific to an AWS account. For example, if there is an issue with an AWS -// Region, AWS Health provides information about the event, even if you don't use -// services or resources in that Region. +// * Public events might be service events that are not specific +// to an Amazon Web Services account. For example, if there is an issue with an +// Amazon Web Services Region, Health provides information about the event, even if +// you don't use services or resources in that Region. // -// * Account-specific events are specific to -// either your AWS account or an account in your organization. For example, if -// there's an issue with Amazon Elastic Compute Cloud in a Region that you use, AWS -// Health provides information about the event and the affected resources in the -// account. +// * Account-specific events +// are specific to either your Amazon Web Services account or an account in your +// organization. For example, if there's an issue with Amazon Elastic Compute Cloud +// in a Region that you use, Health provides information about the event and the +// affected resources in the account. // -// You can determine if an event is public or account-specific by using -// the eventScopeCode parameter. For more information, see eventScopeCode +// You can determine if an event is public or +// account-specific by using the eventScopeCode parameter. For more information, +// see eventScopeCode // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html#AWSHealth-Type-Event-eventScopeCode). type Event struct { @@ -138,31 +140,32 @@ type Event struct { // arn:aws:health:us-east-1::event/EC2/EC2_INSTANCE_RETIREMENT_SCHEDULED/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456 Arn *string - // The AWS Availability Zone of the event. For example, us-east-1a. + // The Amazon Web Services Availability Zone of the event. For example, us-east-1a. AvailabilityZone *string // The date and time that the event ended. EndTime *time.Time - // This parameter specifies if the AWS Health event is a public AWS service event - // or an account-specific event. - // - // * If the eventScopeCode value is PUBLIC, then the - // affectedAccounts value is always empty. + // This parameter specifies if the Health event is a public Amazon Web Services + // service event or an account-specific event. // // * If the eventScopeCode value is - // ACCOUNT_SPECIFIC, then the affectedAccounts value lists the affected AWS - // accounts in your organization. For example, if an event affects a service such - // as Amazon Elastic Compute Cloud and you have AWS accounts that use that service, - // those account IDs appear in the response. + // PUBLIC, then the affectedAccounts value is always empty. // - // * If the eventScopeCode value is - // NONE, then the eventArn that you specified in the request is invalid or doesn't - // exist. + // * If the + // eventScopeCode value is ACCOUNT_SPECIFIC, then the affectedAccounts value lists + // the affected Amazon Web Services accounts in your organization. For example, if + // an event affects a service such as Amazon Elastic Compute Cloud and you have + // Amazon Web Services accounts that use that service, those account IDs appear in + // the response. + // + // * If the eventScopeCode value is NONE, then the eventArn that you + // specified in the request is invalid or doesn't exist. EventScopeCode EventScopeCode - // The category of the event. Possible values are issue, scheduledChange, and - // accountNotification. + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. EventTypeCategory EventTypeCategory // The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION @@ -172,10 +175,11 @@ type Event struct { // The most recent date and time that the event was updated. LastUpdatedTime *time.Time - // The AWS Region name of the event. + // The Amazon Web Services Region name of the event. Region *string - // The AWS service that is affected by the event. For example, EC2, RDS. + // The Amazon Web Services service that is affected by the event. For example, EC2, + // RDS. Service *string // The date and time that the event began. @@ -203,7 +207,8 @@ type EventAccountFilter struct { // This member is required. EventArn *string - // The 12-digit AWS account numbers that contains the affected entities. + // The 12-digit Amazon Web Services account numbers that contains the affected + // entities. AwsAccountId *string noSmithyDocumentSerde @@ -284,7 +289,7 @@ type EventDetailsErrorItem struct { // operations. type EventFilter struct { - // A list of AWS Availability Zones. + // A list of Amazon Web Services Availability Zones. AvailabilityZones []string // A list of dates and times that the event ended. @@ -305,8 +310,9 @@ type EventFilter struct { // A list of event status codes. EventStatusCodes []EventStatusCode - // A list of event type category codes (issue, scheduledChange, or - // accountNotification). + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. EventTypeCategories []EventTypeCategory // A list of unique identifiers for event types. For example, @@ -316,10 +322,11 @@ type EventFilter struct { // A list of dates and times that the event was last updated. LastUpdatedTimes []DateTimeRange - // A list of AWS Regions. + // A list of Amazon Web Services Regions. Regions []string - // The AWS services associated with the event. For example, EC2, RDS. + // The Amazon Web Services services associated with the event. For example, EC2, + // RDS. Services []string // A list of dates and times that the event began. @@ -332,7 +339,7 @@ type EventFilter struct { noSmithyDocumentSerde } -// Contains the metadata about a type of event that is reported by AWS Health. The +// Contains the metadata about a type of event that is reported by Health. The // EventType shows the category, service, and the event type code of the event. For // example, an issue might be the category, EC2 the service, and // AWS_EC2_SYSTEM_MAINTENANCE_EVENT the event type code. You can use the @@ -340,22 +347,24 @@ type EventFilter struct { // (https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEventTypes.html) // API operation to return this information about an event. You can also use the // Amazon CloudWatch Events console to create a rule so that you can get notified -// or take action when AWS Health delivers a specific event to your AWS account. -// For more information, see Monitor for AWS Health events with Amazon CloudWatch -// Events +// or take action when Health delivers a specific event to your Amazon Web Services +// account. For more information, see Monitor for Health events with Amazon +// CloudWatch Events // (https://docs.aws.amazon.com/health/latest/ug/cloudwatch-events-health.html) in -// the AWS Health User Guide. +// the Health User Guide. type EventType struct { - // A list of event type category codes (issue, scheduledChange, or - // accountNotification). + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. Category EventTypeCategory // The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION // ; for example, AWS_EC2_SYSTEM_MAINTENANCE_EVENT. Code *string - // The AWS service that is affected by the event. For example, EC2, RDS. + // The Amazon Web Services service that is affected by the event. For example, EC2, + // RDS. Service *string noSmithyDocumentSerde @@ -366,14 +375,16 @@ type EventType struct { // operation. type EventTypeFilter struct { - // A list of event type category codes (issue, scheduledChange, or - // accountNotification). + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. EventTypeCategories []EventTypeCategory // A list of event type codes. EventTypeCodes []string - // The AWS services associated with the event. For example, EC2, RDS. + // The Amazon Web Services services associated with the event. For example, EC2, + // RDS. Services []string noSmithyDocumentSerde @@ -384,7 +395,8 @@ type EventTypeFilter struct { // operation can't find or process a specific entity. type OrganizationAffectedEntitiesErrorItem struct { - // The 12-digit AWS account numbers that contains the affected entities. + // The 12-digit Amazon Web Services account numbers that contains the affected + // entities. AwsAccountId *string // The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION. @@ -418,24 +430,26 @@ type OrganizationEvent struct { // The date and time that the event ended. EndTime *time.Time - // This parameter specifies if the AWS Health event is a public AWS service event - // or an account-specific event. - // - // * If the eventScopeCode value is PUBLIC, then the - // affectedAccounts value is always empty. + // This parameter specifies if the Health event is a public Amazon Web Services + // service event or an account-specific event. // // * If the eventScopeCode value is - // ACCOUNT_SPECIFIC, then the affectedAccounts value lists the affected AWS - // accounts in your organization. For example, if an event affects a service such - // as Amazon Elastic Compute Cloud and you have AWS accounts that use that service, - // those account IDs appear in the response. + // PUBLIC, then the affectedAccounts value is always empty. // - // * If the eventScopeCode value is - // NONE, then the eventArn that you specified in the request is invalid or doesn't - // exist. + // * If the + // eventScopeCode value is ACCOUNT_SPECIFIC, then the affectedAccounts value lists + // the affected Amazon Web Services accounts in your organization. For example, if + // an event affects a service such as Amazon Elastic Compute Cloud and you have + // Amazon Web Services accounts that use that service, those account IDs appear in + // the response. + // + // * If the eventScopeCode value is NONE, then the eventArn that you + // specified in the request is invalid or doesn't exist. EventScopeCode EventScopeCode - // The category of the event type. + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. EventTypeCategory EventTypeCategory // The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION. @@ -445,10 +459,11 @@ type OrganizationEvent struct { // The most recent date and time that the event was updated. LastUpdatedTime *time.Time - // The AWS Region name of the event. + // The Amazon Web Services Region name of the event. Region *string - // The AWS service that is affected by the event, such as EC2 and RDS. + // The Amazon Web Services service that is affected by the event, such as EC2 and + // RDS. Service *string // The date and time that the event began. @@ -471,25 +486,27 @@ type OrganizationEvent struct { // operation. type OrganizationEventDetails struct { - // The 12-digit AWS account numbers that contains the affected entities. + // The 12-digit Amazon Web Services account numbers that contains the affected + // entities. AwsAccountId *string - // Summary information about an AWS Health event. AWS Health events can be public - // or account-specific: + // Summary information about an Health event. Health events can be public or + // account-specific: // - // * Public events might be service events that are not - // specific to an AWS account. For example, if there is an issue with an AWS - // Region, AWS Health provides information about the event, even if you don't use - // services or resources in that Region. + // * Public events might be service events that are not specific + // to an Amazon Web Services account. For example, if there is an issue with an + // Amazon Web Services Region, Health provides information about the event, even if + // you don't use services or resources in that Region. // - // * Account-specific events are specific to - // either your AWS account or an account in your organization. For example, if - // there's an issue with Amazon Elastic Compute Cloud in a Region that you use, AWS - // Health provides information about the event and the affected resources in the - // account. + // * Account-specific events + // are specific to either your Amazon Web Services account or an account in your + // organization. For example, if there's an issue with Amazon Elastic Compute Cloud + // in a Region that you use, Health provides information about the event and the + // affected resources in the account. // - // You can determine if an event is public or account-specific by using - // the eventScopeCode parameter. For more information, see eventScopeCode + // You can determine if an event is public or + // account-specific by using the eventScopeCode parameter. For more information, + // see eventScopeCode // (https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html#AWSHealth-Type-Event-eventScopeCode). Event *Event @@ -521,15 +538,16 @@ type OrganizationEventDetailsErrorItem struct { // // * We couldn't find a public // event that matches your request. To find an event that is account specific, you - // must enter an AWS account ID in the request. + // must enter an Amazon Web Services account ID in the request. // - // * We couldn't find an account - // specific event for the specified AWS account. To find an event that is public, - // you must enter a null value for the AWS account ID in the request. + // * We couldn't find + // an account specific event for the specified Amazon Web Services account. To find + // an event that is public, you must enter a null value for the Amazon Web Services + // account ID in the request. // - // * Your AWS - // account doesn't include the AWS Support plan required to use the AWS Health API. - // You must have either a Business or Enterprise Support plan. + // * Your Amazon Web Services account doesn't include + // the Amazon Web Services Support plan required to use the Health API. You must + // have either a Business or Enterprise Support plan. ErrorMessage *string // The name of the error. @@ -549,7 +567,8 @@ type OrganizationEventDetailsErrorItem struct { // operation. type OrganizationEventFilter struct { - // A list of 12-digit AWS account numbers that contains the affected entities. + // A list of 12-digit Amazon Web Services account numbers that contains the + // affected entities. AwsAccountIds []string // A range of dates and times that is used by the EventFilter @@ -573,8 +592,9 @@ type OrganizationEventFilter struct { // A list of event status codes. EventStatusCodes []EventStatusCode - // A list of event type category codes (issue, scheduledChange, or - // accountNotification). + // A list of event type category codes. Possible values are issue, + // accountNotification, or scheduledChange. Currently, the investigation value + // isn't supported at this time. EventTypeCategories []EventTypeCategory // A list of unique identifiers for event types. For example, @@ -592,10 +612,11 @@ type OrganizationEventFilter struct { // value is equal to or before to. LastUpdatedTime *DateTimeRange - // A list of AWS Regions. + // A list of Amazon Web Services Regions. Regions []string - // The AWS services associated with the event. For example, EC2, RDS. + // The Amazon Web Services services associated with the event. For example, EC2, + // RDS. Services []string // A range of dates and times that is used by the EventFilter diff --git a/service/identitystore/internal/endpoints/endpoints.go b/service/identitystore/internal/endpoints/endpoints.go index 933f5815449..5081ad45c52 100644 --- a/service/identitystore/internal/endpoints/endpoints.go +++ b/service/identitystore/internal/endpoints/endpoints.go @@ -266,7 +266,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "identitystore-fips.{region}.amazonaws.com", + Hostname: "identitystore.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/iotwireless/api_op_AssociateMulticastGroupWithFuotaTask.go b/service/iotwireless/api_op_AssociateMulticastGroupWithFuotaTask.go new file mode 100644 index 00000000000..872584348cd --- /dev/null +++ b/service/iotwireless/api_op_AssociateMulticastGroupWithFuotaTask.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Associate a multicast group with a FUOTA task. +func (c *Client) AssociateMulticastGroupWithFuotaTask(ctx context.Context, params *AssociateMulticastGroupWithFuotaTaskInput, optFns ...func(*Options)) (*AssociateMulticastGroupWithFuotaTaskOutput, error) { + if params == nil { + params = &AssociateMulticastGroupWithFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "AssociateMulticastGroupWithFuotaTask", params, optFns, c.addOperationAssociateMulticastGroupWithFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*AssociateMulticastGroupWithFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type AssociateMulticastGroupWithFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The ID of the multicast group. + // + // This member is required. + MulticastGroupId *string + + noSmithyDocumentSerde +} + +type AssociateMulticastGroupWithFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationAssociateMulticastGroupWithFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpAssociateMulticastGroupWithFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpAssociateMulticastGroupWithFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpAssociateMulticastGroupWithFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssociateMulticastGroupWithFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opAssociateMulticastGroupWithFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "AssociateMulticastGroupWithFuotaTask", + } +} diff --git a/service/iotwireless/api_op_AssociateWirelessDeviceWithFuotaTask.go b/service/iotwireless/api_op_AssociateWirelessDeviceWithFuotaTask.go new file mode 100644 index 00000000000..5099b225586 --- /dev/null +++ b/service/iotwireless/api_op_AssociateWirelessDeviceWithFuotaTask.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Associate a wireless device with a FUOTA task. +func (c *Client) AssociateWirelessDeviceWithFuotaTask(ctx context.Context, params *AssociateWirelessDeviceWithFuotaTaskInput, optFns ...func(*Options)) (*AssociateWirelessDeviceWithFuotaTaskOutput, error) { + if params == nil { + params = &AssociateWirelessDeviceWithFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "AssociateWirelessDeviceWithFuotaTask", params, optFns, c.addOperationAssociateWirelessDeviceWithFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*AssociateWirelessDeviceWithFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type AssociateWirelessDeviceWithFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The ID of the wireless device. + // + // This member is required. + WirelessDeviceId *string + + noSmithyDocumentSerde +} + +type AssociateWirelessDeviceWithFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationAssociateWirelessDeviceWithFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpAssociateWirelessDeviceWithFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpAssociateWirelessDeviceWithFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpAssociateWirelessDeviceWithFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssociateWirelessDeviceWithFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opAssociateWirelessDeviceWithFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "AssociateWirelessDeviceWithFuotaTask", + } +} diff --git a/service/iotwireless/api_op_AssociateWirelessDeviceWithMulticastGroup.go b/service/iotwireless/api_op_AssociateWirelessDeviceWithMulticastGroup.go new file mode 100644 index 00000000000..d13b11dad9c --- /dev/null +++ b/service/iotwireless/api_op_AssociateWirelessDeviceWithMulticastGroup.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Associates a wireless device with a multicast group. +func (c *Client) AssociateWirelessDeviceWithMulticastGroup(ctx context.Context, params *AssociateWirelessDeviceWithMulticastGroupInput, optFns ...func(*Options)) (*AssociateWirelessDeviceWithMulticastGroupOutput, error) { + if params == nil { + params = &AssociateWirelessDeviceWithMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "AssociateWirelessDeviceWithMulticastGroup", params, optFns, c.addOperationAssociateWirelessDeviceWithMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*AssociateWirelessDeviceWithMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type AssociateWirelessDeviceWithMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // The ID of the wireless device. + // + // This member is required. + WirelessDeviceId *string + + noSmithyDocumentSerde +} + +type AssociateWirelessDeviceWithMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationAssociateWirelessDeviceWithMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpAssociateWirelessDeviceWithMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAssociateWirelessDeviceWithMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opAssociateWirelessDeviceWithMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "AssociateWirelessDeviceWithMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_CancelMulticastGroupSession.go b/service/iotwireless/api_op_CancelMulticastGroupSession.go new file mode 100644 index 00000000000..d70d9b71fd3 --- /dev/null +++ b/service/iotwireless/api_op_CancelMulticastGroupSession.go @@ -0,0 +1,116 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Cancels an existing multicast group session. +func (c *Client) CancelMulticastGroupSession(ctx context.Context, params *CancelMulticastGroupSessionInput, optFns ...func(*Options)) (*CancelMulticastGroupSessionOutput, error) { + if params == nil { + params = &CancelMulticastGroupSessionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CancelMulticastGroupSession", params, optFns, c.addOperationCancelMulticastGroupSessionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CancelMulticastGroupSessionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CancelMulticastGroupSessionInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type CancelMulticastGroupSessionOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCancelMulticastGroupSessionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCancelMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCancelMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpCancelMulticastGroupSessionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCancelMulticastGroupSession(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCancelMulticastGroupSession(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "CancelMulticastGroupSession", + } +} diff --git a/service/iotwireless/api_op_CreateFuotaTask.go b/service/iotwireless/api_op_CreateFuotaTask.go new file mode 100644 index 00000000000..49e2fee9a88 --- /dev/null +++ b/service/iotwireless/api_op_CreateFuotaTask.go @@ -0,0 +1,186 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a FUOTA task. +func (c *Client) CreateFuotaTask(ctx context.Context, params *CreateFuotaTaskInput, optFns ...func(*Options)) (*CreateFuotaTaskOutput, error) { + if params == nil { + params = &CreateFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateFuotaTask", params, optFns, c.addOperationCreateFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateFuotaTaskInput struct { + + // The S3 URI points to a firmware update image that is to be used with a FUOTA + // task. + // + // This member is required. + FirmwareUpdateImage *string + + // The firmware update role that is to be used with a FUOTA task. + // + // This member is required. + FirmwareUpdateRole *string + + // Each resource must have a unique client request token. If you try to create a + // new resource with the same token as a resource that already exists, an exception + // occurs. If you omit this value, AWS SDKs will automatically generate a unique + // client request. + ClientRequestToken *string + + // The description of the new resource. + Description *string + + // The LoRaWAN information used with a FUOTA task. + LoRaWAN *types.LoRaWANFuotaTask + + // The name of a FUOTA task. + Name *string + + // The tag to attach to the specified resource. Tags are metadata that you can use + // to manage a resource. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type CreateFuotaTaskOutput struct { + + // The arn of a FUOTA task. + Arn *string + + // The ID of a FUOTA task. + Id *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateFuotaTaskMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateFuotaTask struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateFuotaTask) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateFuotaTaskInput ") + } + + if input.ClientRequestToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientRequestToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateFuotaTaskMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateFuotaTask{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "CreateFuotaTask", + } +} diff --git a/service/iotwireless/api_op_CreateMulticastGroup.go b/service/iotwireless/api_op_CreateMulticastGroup.go new file mode 100644 index 00000000000..f638a0a1b51 --- /dev/null +++ b/service/iotwireless/api_op_CreateMulticastGroup.go @@ -0,0 +1,177 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a multicast group. +func (c *Client) CreateMulticastGroup(ctx context.Context, params *CreateMulticastGroupInput, optFns ...func(*Options)) (*CreateMulticastGroupOutput, error) { + if params == nil { + params = &CreateMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateMulticastGroup", params, optFns, c.addOperationCreateMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateMulticastGroupInput struct { + + // The LoRaWAN information that is to be used with the multicast group. + // + // This member is required. + LoRaWAN *types.LoRaWANMulticast + + // Each resource must have a unique client request token. If you try to create a + // new resource with the same token as a resource that already exists, an exception + // occurs. If you omit this value, AWS SDKs will automatically generate a unique + // client request. + ClientRequestToken *string + + // The description of the multicast group. + Description *string + + // The name of the multicast group. + Name *string + + // The tag to attach to the specified resource. Tags are metadata that you can use + // to manage a resource. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type CreateMulticastGroupOutput struct { + + // The arn of the multicast group. + Arn *string + + // The ID of the multicast group. + Id *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateMulticastGroupMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateMulticastGroup struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateMulticastGroup) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateMulticastGroupInput ") + } + + if input.ClientRequestToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientRequestToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateMulticastGroupMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateMulticastGroup{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "CreateMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_DeleteFuotaTask.go b/service/iotwireless/api_op_DeleteFuotaTask.go new file mode 100644 index 00000000000..da26beeecb7 --- /dev/null +++ b/service/iotwireless/api_op_DeleteFuotaTask.go @@ -0,0 +1,116 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a FUOTA task. +func (c *Client) DeleteFuotaTask(ctx context.Context, params *DeleteFuotaTaskInput, optFns ...func(*Options)) (*DeleteFuotaTaskOutput, error) { + if params == nil { + params = &DeleteFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteFuotaTask", params, optFns, c.addOperationDeleteFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type DeleteFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "DeleteFuotaTask", + } +} diff --git a/service/iotwireless/api_op_DeleteMulticastGroup.go b/service/iotwireless/api_op_DeleteMulticastGroup.go new file mode 100644 index 00000000000..7ff088b6555 --- /dev/null +++ b/service/iotwireless/api_op_DeleteMulticastGroup.go @@ -0,0 +1,116 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a multicast group if it is not in use by a fuota task. +func (c *Client) DeleteMulticastGroup(ctx context.Context, params *DeleteMulticastGroupInput, optFns ...func(*Options)) (*DeleteMulticastGroupOutput, error) { + if params == nil { + params = &DeleteMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteMulticastGroup", params, optFns, c.addOperationDeleteMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type DeleteMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDeleteMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "DeleteMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_DisassociateMulticastGroupFromFuotaTask.go b/service/iotwireless/api_op_DisassociateMulticastGroupFromFuotaTask.go new file mode 100644 index 00000000000..18d9f570a58 --- /dev/null +++ b/service/iotwireless/api_op_DisassociateMulticastGroupFromFuotaTask.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Disassociates a multicast group from a fuota task. +func (c *Client) DisassociateMulticastGroupFromFuotaTask(ctx context.Context, params *DisassociateMulticastGroupFromFuotaTaskInput, optFns ...func(*Options)) (*DisassociateMulticastGroupFromFuotaTaskOutput, error) { + if params == nil { + params = &DisassociateMulticastGroupFromFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DisassociateMulticastGroupFromFuotaTask", params, optFns, c.addOperationDisassociateMulticastGroupFromFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DisassociateMulticastGroupFromFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DisassociateMulticastGroupFromFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The ID of the multicast group. + // + // This member is required. + MulticastGroupId *string + + noSmithyDocumentSerde +} + +type DisassociateMulticastGroupFromFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDisassociateMulticastGroupFromFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDisassociateMulticastGroupFromFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDisassociateMulticastGroupFromFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDisassociateMulticastGroupFromFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDisassociateMulticastGroupFromFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDisassociateMulticastGroupFromFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "DisassociateMulticastGroupFromFuotaTask", + } +} diff --git a/service/iotwireless/api_op_DisassociateWirelessDeviceFromFuotaTask.go b/service/iotwireless/api_op_DisassociateWirelessDeviceFromFuotaTask.go new file mode 100644 index 00000000000..90fbfe745b5 --- /dev/null +++ b/service/iotwireless/api_op_DisassociateWirelessDeviceFromFuotaTask.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Disassociates a wireless device from a FUOTA task. +func (c *Client) DisassociateWirelessDeviceFromFuotaTask(ctx context.Context, params *DisassociateWirelessDeviceFromFuotaTaskInput, optFns ...func(*Options)) (*DisassociateWirelessDeviceFromFuotaTaskOutput, error) { + if params == nil { + params = &DisassociateWirelessDeviceFromFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DisassociateWirelessDeviceFromFuotaTask", params, optFns, c.addOperationDisassociateWirelessDeviceFromFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DisassociateWirelessDeviceFromFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DisassociateWirelessDeviceFromFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The ID of the wireless device. + // + // This member is required. + WirelessDeviceId *string + + noSmithyDocumentSerde +} + +type DisassociateWirelessDeviceFromFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDisassociateWirelessDeviceFromFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDisassociateWirelessDeviceFromFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDisassociateWirelessDeviceFromFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDisassociateWirelessDeviceFromFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDisassociateWirelessDeviceFromFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDisassociateWirelessDeviceFromFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "DisassociateWirelessDeviceFromFuotaTask", + } +} diff --git a/service/iotwireless/api_op_DisassociateWirelessDeviceFromMulticastGroup.go b/service/iotwireless/api_op_DisassociateWirelessDeviceFromMulticastGroup.go new file mode 100644 index 00000000000..dc3f7e3904a --- /dev/null +++ b/service/iotwireless/api_op_DisassociateWirelessDeviceFromMulticastGroup.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Disassociates a wireless device from a multicast group. +func (c *Client) DisassociateWirelessDeviceFromMulticastGroup(ctx context.Context, params *DisassociateWirelessDeviceFromMulticastGroupInput, optFns ...func(*Options)) (*DisassociateWirelessDeviceFromMulticastGroupOutput, error) { + if params == nil { + params = &DisassociateWirelessDeviceFromMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DisassociateWirelessDeviceFromMulticastGroup", params, optFns, c.addOperationDisassociateWirelessDeviceFromMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DisassociateWirelessDeviceFromMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DisassociateWirelessDeviceFromMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // The ID of the wireless device. + // + // This member is required. + WirelessDeviceId *string + + noSmithyDocumentSerde +} + +type DisassociateWirelessDeviceFromMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDisassociateWirelessDeviceFromMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDisassociateWirelessDeviceFromMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDisassociateWirelessDeviceFromMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDisassociateWirelessDeviceFromMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "DisassociateWirelessDeviceFromMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_GetFuotaTask.go b/service/iotwireless/api_op_GetFuotaTask.go new file mode 100644 index 00000000000..630f3ef93a0 --- /dev/null +++ b/service/iotwireless/api_op_GetFuotaTask.go @@ -0,0 +1,147 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "time" +) + +// Gets information about a FUOTA task. +func (c *Client) GetFuotaTask(ctx context.Context, params *GetFuotaTaskInput, optFns ...func(*Options)) (*GetFuotaTaskOutput, error) { + if params == nil { + params = &GetFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetFuotaTask", params, optFns, c.addOperationGetFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type GetFuotaTaskOutput struct { + + // The arn of a FUOTA task. + Arn *string + + // Created at timestamp for the resource. + CreatedAt *time.Time + + // The description of the new resource. + Description *string + + // The S3 URI points to a firmware update image that is to be used with a FUOTA + // task. + FirmwareUpdateImage *string + + // The firmware update role that is to be used with a FUOTA task. + FirmwareUpdateRole *string + + // The ID of a FUOTA task. + Id *string + + // The LoRaWAN information returned from getting a FUOTA task. + LoRaWAN *types.LoRaWANFuotaTaskGetInfo + + // The name of a FUOTA task. + Name *string + + // The status of a FUOTA task. + Status types.FuotaTaskStatus + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "GetFuotaTask", + } +} diff --git a/service/iotwireless/api_op_GetMulticastGroup.go b/service/iotwireless/api_op_GetMulticastGroup.go new file mode 100644 index 00000000000..13b91bc1834 --- /dev/null +++ b/service/iotwireless/api_op_GetMulticastGroup.go @@ -0,0 +1,141 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "time" +) + +// Gets information about a multicast group. +func (c *Client) GetMulticastGroup(ctx context.Context, params *GetMulticastGroupInput, optFns ...func(*Options)) (*GetMulticastGroupOutput, error) { + if params == nil { + params = &GetMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetMulticastGroup", params, optFns, c.addOperationGetMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type GetMulticastGroupOutput struct { + + // The arn of the multicast group. + Arn *string + + // Created at timestamp for the resource. + CreatedAt *time.Time + + // The description of the new resource. + Description *string + + // The ID of the multicast group. + Id *string + + // The LoRaWAN information that is to be returned from getting multicast group + // information. + LoRaWAN *types.LoRaWANMulticastGet + + // The name of the multicast group. + Name *string + + // The status of the multicast group. + Status *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "GetMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_GetMulticastGroupSession.go b/service/iotwireless/api_op_GetMulticastGroupSession.go new file mode 100644 index 00000000000..3fd1dacf583 --- /dev/null +++ b/service/iotwireless/api_op_GetMulticastGroupSession.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Gets information about a multicast group session. +func (c *Client) GetMulticastGroupSession(ctx context.Context, params *GetMulticastGroupSessionInput, optFns ...func(*Options)) (*GetMulticastGroupSessionOutput, error) { + if params == nil { + params = &GetMulticastGroupSessionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetMulticastGroupSession", params, optFns, c.addOperationGetMulticastGroupSessionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetMulticastGroupSessionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetMulticastGroupSessionInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + noSmithyDocumentSerde +} + +type GetMulticastGroupSessionOutput struct { + + // The LoRaWAN information used with the multicast session. + LoRaWAN *types.LoRaWANMulticastSession + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetMulticastGroupSessionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetMulticastGroupSessionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetMulticastGroupSession(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetMulticastGroupSession(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "GetMulticastGroupSession", + } +} diff --git a/service/iotwireless/api_op_GetResourceEventConfiguration.go b/service/iotwireless/api_op_GetResourceEventConfiguration.go new file mode 100644 index 00000000000..51ab76d77d6 --- /dev/null +++ b/service/iotwireless/api_op_GetResourceEventConfiguration.go @@ -0,0 +1,132 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Get the event configuration for a particular resource identifier. +func (c *Client) GetResourceEventConfiguration(ctx context.Context, params *GetResourceEventConfigurationInput, optFns ...func(*Options)) (*GetResourceEventConfigurationOutput, error) { + if params == nil { + params = &GetResourceEventConfigurationInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetResourceEventConfiguration", params, optFns, c.addOperationGetResourceEventConfigurationMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetResourceEventConfigurationOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetResourceEventConfigurationInput struct { + + // Resource identifier to opt in for event messaging. + // + // This member is required. + Identifier *string + + // Identifier type of the particular resource identifier for event configuration. + // + // This member is required. + IdentifierType types.IdentifierType + + // Partner type of the resource if the identifier type is PartnerAccountId. + PartnerType types.EventNotificationPartnerType + + noSmithyDocumentSerde +} + +type GetResourceEventConfigurationOutput struct { + + // Event configuration for the device registration state event + DeviceRegistrationState *types.DeviceRegistrationStateEventConfiguration + + // Event configuration for the Proximity event + Proximity *types.ProximityEventConfiguration + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetResourceEventConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpGetResourceEventConfiguration{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpGetResourceEventConfiguration{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpGetResourceEventConfigurationValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetResourceEventConfiguration(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetResourceEventConfiguration(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "GetResourceEventConfiguration", + } +} diff --git a/service/iotwireless/api_op_ListFuotaTasks.go b/service/iotwireless/api_op_ListFuotaTasks.go new file mode 100644 index 00000000000..68f8e1134fd --- /dev/null +++ b/service/iotwireless/api_op_ListFuotaTasks.go @@ -0,0 +1,207 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the FUOTA tasks registered to your AWS account. +func (c *Client) ListFuotaTasks(ctx context.Context, params *ListFuotaTasksInput, optFns ...func(*Options)) (*ListFuotaTasksOutput, error) { + if params == nil { + params = &ListFuotaTasksInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListFuotaTasks", params, optFns, c.addOperationListFuotaTasksMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListFuotaTasksOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListFuotaTasksInput struct { + + // The maximum number of results to return in this operation. + MaxResults int32 + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListFuotaTasksOutput struct { + + // Lists the FUOTA tasks registered to your AWS account. + FuotaTaskList []types.FuotaTask + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListFuotaTasksMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListFuotaTasks{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListFuotaTasks{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListFuotaTasks(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListFuotaTasksAPIClient is a client that implements the ListFuotaTasks +// operation. +type ListFuotaTasksAPIClient interface { + ListFuotaTasks(context.Context, *ListFuotaTasksInput, ...func(*Options)) (*ListFuotaTasksOutput, error) +} + +var _ ListFuotaTasksAPIClient = (*Client)(nil) + +// ListFuotaTasksPaginatorOptions is the paginator options for ListFuotaTasks +type ListFuotaTasksPaginatorOptions struct { + // The maximum number of results to return in this operation. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListFuotaTasksPaginator is a paginator for ListFuotaTasks +type ListFuotaTasksPaginator struct { + options ListFuotaTasksPaginatorOptions + client ListFuotaTasksAPIClient + params *ListFuotaTasksInput + nextToken *string + firstPage bool +} + +// NewListFuotaTasksPaginator returns a new ListFuotaTasksPaginator +func NewListFuotaTasksPaginator(client ListFuotaTasksAPIClient, params *ListFuotaTasksInput, optFns ...func(*ListFuotaTasksPaginatorOptions)) *ListFuotaTasksPaginator { + if params == nil { + params = &ListFuotaTasksInput{} + } + + options := ListFuotaTasksPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListFuotaTasksPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListFuotaTasksPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListFuotaTasks page. +func (p *ListFuotaTasksPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListFuotaTasksOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + result, err := p.client.ListFuotaTasks(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListFuotaTasks(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "ListFuotaTasks", + } +} diff --git a/service/iotwireless/api_op_ListMulticastGroups.go b/service/iotwireless/api_op_ListMulticastGroups.go new file mode 100644 index 00000000000..aee565aeb45 --- /dev/null +++ b/service/iotwireless/api_op_ListMulticastGroups.go @@ -0,0 +1,208 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the multicast groups registered to your AWS account. +func (c *Client) ListMulticastGroups(ctx context.Context, params *ListMulticastGroupsInput, optFns ...func(*Options)) (*ListMulticastGroupsOutput, error) { + if params == nil { + params = &ListMulticastGroupsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListMulticastGroups", params, optFns, c.addOperationListMulticastGroupsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListMulticastGroupsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListMulticastGroupsInput struct { + + // The maximum number of results to return in this operation. + MaxResults int32 + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListMulticastGroupsOutput struct { + + // List of multicast groups. + MulticastGroupList []types.MulticastGroup + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListMulticastGroupsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListMulticastGroups{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListMulticastGroups{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListMulticastGroups(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListMulticastGroupsAPIClient is a client that implements the ListMulticastGroups +// operation. +type ListMulticastGroupsAPIClient interface { + ListMulticastGroups(context.Context, *ListMulticastGroupsInput, ...func(*Options)) (*ListMulticastGroupsOutput, error) +} + +var _ ListMulticastGroupsAPIClient = (*Client)(nil) + +// ListMulticastGroupsPaginatorOptions is the paginator options for +// ListMulticastGroups +type ListMulticastGroupsPaginatorOptions struct { + // The maximum number of results to return in this operation. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListMulticastGroupsPaginator is a paginator for ListMulticastGroups +type ListMulticastGroupsPaginator struct { + options ListMulticastGroupsPaginatorOptions + client ListMulticastGroupsAPIClient + params *ListMulticastGroupsInput + nextToken *string + firstPage bool +} + +// NewListMulticastGroupsPaginator returns a new ListMulticastGroupsPaginator +func NewListMulticastGroupsPaginator(client ListMulticastGroupsAPIClient, params *ListMulticastGroupsInput, optFns ...func(*ListMulticastGroupsPaginatorOptions)) *ListMulticastGroupsPaginator { + if params == nil { + params = &ListMulticastGroupsInput{} + } + + options := ListMulticastGroupsPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListMulticastGroupsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListMulticastGroupsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListMulticastGroups page. +func (p *ListMulticastGroupsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListMulticastGroupsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + result, err := p.client.ListMulticastGroups(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListMulticastGroups(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "ListMulticastGroups", + } +} diff --git a/service/iotwireless/api_op_ListMulticastGroupsByFuotaTask.go b/service/iotwireless/api_op_ListMulticastGroupsByFuotaTask.go new file mode 100644 index 00000000000..e76f503a3b7 --- /dev/null +++ b/service/iotwireless/api_op_ListMulticastGroupsByFuotaTask.go @@ -0,0 +1,218 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// List all multicast groups associated with a fuota task. +func (c *Client) ListMulticastGroupsByFuotaTask(ctx context.Context, params *ListMulticastGroupsByFuotaTaskInput, optFns ...func(*Options)) (*ListMulticastGroupsByFuotaTaskOutput, error) { + if params == nil { + params = &ListMulticastGroupsByFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListMulticastGroupsByFuotaTask", params, optFns, c.addOperationListMulticastGroupsByFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListMulticastGroupsByFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListMulticastGroupsByFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The maximum number of results to return in this operation. + MaxResults int32 + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListMulticastGroupsByFuotaTaskOutput struct { + + // List of multicast groups associated with a FUOTA task. + MulticastGroupList []types.MulticastGroupByFuotaTask + + // To retrieve the next set of results, the nextToken value from a previous + // response; otherwise null to receive the first set of results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListMulticastGroupsByFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListMulticastGroupsByFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListMulticastGroupsByFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListMulticastGroupsByFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListMulticastGroupsByFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListMulticastGroupsByFuotaTaskAPIClient is a client that implements the +// ListMulticastGroupsByFuotaTask operation. +type ListMulticastGroupsByFuotaTaskAPIClient interface { + ListMulticastGroupsByFuotaTask(context.Context, *ListMulticastGroupsByFuotaTaskInput, ...func(*Options)) (*ListMulticastGroupsByFuotaTaskOutput, error) +} + +var _ ListMulticastGroupsByFuotaTaskAPIClient = (*Client)(nil) + +// ListMulticastGroupsByFuotaTaskPaginatorOptions is the paginator options for +// ListMulticastGroupsByFuotaTask +type ListMulticastGroupsByFuotaTaskPaginatorOptions struct { + // The maximum number of results to return in this operation. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListMulticastGroupsByFuotaTaskPaginator is a paginator for +// ListMulticastGroupsByFuotaTask +type ListMulticastGroupsByFuotaTaskPaginator struct { + options ListMulticastGroupsByFuotaTaskPaginatorOptions + client ListMulticastGroupsByFuotaTaskAPIClient + params *ListMulticastGroupsByFuotaTaskInput + nextToken *string + firstPage bool +} + +// NewListMulticastGroupsByFuotaTaskPaginator returns a new +// ListMulticastGroupsByFuotaTaskPaginator +func NewListMulticastGroupsByFuotaTaskPaginator(client ListMulticastGroupsByFuotaTaskAPIClient, params *ListMulticastGroupsByFuotaTaskInput, optFns ...func(*ListMulticastGroupsByFuotaTaskPaginatorOptions)) *ListMulticastGroupsByFuotaTaskPaginator { + if params == nil { + params = &ListMulticastGroupsByFuotaTaskInput{} + } + + options := ListMulticastGroupsByFuotaTaskPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListMulticastGroupsByFuotaTaskPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListMulticastGroupsByFuotaTaskPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListMulticastGroupsByFuotaTask page. +func (p *ListMulticastGroupsByFuotaTaskPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListMulticastGroupsByFuotaTaskOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + result, err := p.client.ListMulticastGroupsByFuotaTask(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListMulticastGroupsByFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "ListMulticastGroupsByFuotaTask", + } +} diff --git a/service/iotwireless/api_op_ListWirelessDevices.go b/service/iotwireless/api_op_ListWirelessDevices.go index bd61ad00f83..16a0c2b8936 100644 --- a/service/iotwireless/api_op_ListWirelessDevices.go +++ b/service/iotwireless/api_op_ListWirelessDevices.go @@ -36,9 +36,15 @@ type ListWirelessDevicesInput struct { // A filter to list only the wireless devices that use this device profile. DeviceProfileId *string + // The ID of a FUOTA task. + FuotaTaskId *string + // The maximum number of results to return in this operation. MaxResults int32 + // The ID of the multicast group. + MulticastGroupId *string + // To retrieve the next set of results, the nextToken value from a previous // response; otherwise null to receive the first set of results. NextToken *string diff --git a/service/iotwireless/api_op_SendDataToMulticastGroup.go b/service/iotwireless/api_op_SendDataToMulticastGroup.go new file mode 100644 index 00000000000..557cfbf160c --- /dev/null +++ b/service/iotwireless/api_op_SendDataToMulticastGroup.go @@ -0,0 +1,131 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Sends the specified data to a multicast group. +func (c *Client) SendDataToMulticastGroup(ctx context.Context, params *SendDataToMulticastGroupInput, optFns ...func(*Options)) (*SendDataToMulticastGroupOutput, error) { + if params == nil { + params = &SendDataToMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "SendDataToMulticastGroup", params, optFns, c.addOperationSendDataToMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*SendDataToMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type SendDataToMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // The binary to be sent to the end device, encoded in base64. + // + // This member is required. + PayloadData *string + + // Wireless metadata that is to be sent to multicast group. + // + // This member is required. + WirelessMetadata *types.MulticastWirelessMetadata + + noSmithyDocumentSerde +} + +type SendDataToMulticastGroupOutput struct { + + // ID of a multicast group message. + MessageId *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationSendDataToMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpSendDataToMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpSendDataToMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpSendDataToMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opSendDataToMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opSendDataToMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "SendDataToMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_StartBulkAssociateWirelessDeviceWithMulticastGroup.go b/service/iotwireless/api_op_StartBulkAssociateWirelessDeviceWithMulticastGroup.go new file mode 100644 index 00000000000..132bdf5f179 --- /dev/null +++ b/service/iotwireless/api_op_StartBulkAssociateWirelessDeviceWithMulticastGroup.go @@ -0,0 +1,126 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a bulk association of all qualifying wireless devices with a multicast +// group. +func (c *Client) StartBulkAssociateWirelessDeviceWithMulticastGroup(ctx context.Context, params *StartBulkAssociateWirelessDeviceWithMulticastGroupInput, optFns ...func(*Options)) (*StartBulkAssociateWirelessDeviceWithMulticastGroupOutput, error) { + if params == nil { + params = &StartBulkAssociateWirelessDeviceWithMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartBulkAssociateWirelessDeviceWithMulticastGroup", params, optFns, c.addOperationStartBulkAssociateWirelessDeviceWithMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartBulkAssociateWirelessDeviceWithMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartBulkAssociateWirelessDeviceWithMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // Query string used to search for wireless devices as part of the bulk associate + // and disassociate process. + QueryString *string + + // The tag to attach to the specified resource. Tags are metadata that you can use + // to manage a resource. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type StartBulkAssociateWirelessDeviceWithMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartBulkAssociateWirelessDeviceWithMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStartBulkAssociateWirelessDeviceWithMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartBulkAssociateWirelessDeviceWithMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartBulkAssociateWirelessDeviceWithMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "StartBulkAssociateWirelessDeviceWithMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_StartBulkDisassociateWirelessDeviceFromMulticastGroup.go b/service/iotwireless/api_op_StartBulkDisassociateWirelessDeviceFromMulticastGroup.go new file mode 100644 index 00000000000..48e3d083161 --- /dev/null +++ b/service/iotwireless/api_op_StartBulkDisassociateWirelessDeviceFromMulticastGroup.go @@ -0,0 +1,126 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a bulk disassociatin of all qualifying wireless devices from a multicast +// group. +func (c *Client) StartBulkDisassociateWirelessDeviceFromMulticastGroup(ctx context.Context, params *StartBulkDisassociateWirelessDeviceFromMulticastGroupInput, optFns ...func(*Options)) (*StartBulkDisassociateWirelessDeviceFromMulticastGroupOutput, error) { + if params == nil { + params = &StartBulkDisassociateWirelessDeviceFromMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartBulkDisassociateWirelessDeviceFromMulticastGroup", params, optFns, c.addOperationStartBulkDisassociateWirelessDeviceFromMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartBulkDisassociateWirelessDeviceFromMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartBulkDisassociateWirelessDeviceFromMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // Query string used to search for wireless devices as part of the bulk associate + // and disassociate process. + QueryString *string + + // The tag to attach to the specified resource. Tags are metadata that you can use + // to manage a resource. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type StartBulkDisassociateWirelessDeviceFromMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartBulkDisassociateWirelessDeviceFromMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStartBulkDisassociateWirelessDeviceFromMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartBulkDisassociateWirelessDeviceFromMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartBulkDisassociateWirelessDeviceFromMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "StartBulkDisassociateWirelessDeviceFromMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_StartFuotaTask.go b/service/iotwireless/api_op_StartFuotaTask.go new file mode 100644 index 00000000000..50e2fcfa948 --- /dev/null +++ b/service/iotwireless/api_op_StartFuotaTask.go @@ -0,0 +1,120 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a FUOTA task. +func (c *Client) StartFuotaTask(ctx context.Context, params *StartFuotaTaskInput, optFns ...func(*Options)) (*StartFuotaTaskOutput, error) { + if params == nil { + params = &StartFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartFuotaTask", params, optFns, c.addOperationStartFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The LoRaWAN information used to start a FUOTA task. + LoRaWAN *types.LoRaWANStartFuotaTask + + noSmithyDocumentSerde +} + +type StartFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStartFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "StartFuotaTask", + } +} diff --git a/service/iotwireless/api_op_StartMulticastGroupSession.go b/service/iotwireless/api_op_StartMulticastGroupSession.go new file mode 100644 index 00000000000..cde6d00ad50 --- /dev/null +++ b/service/iotwireless/api_op_StartMulticastGroupSession.go @@ -0,0 +1,122 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a multicast group session. +func (c *Client) StartMulticastGroupSession(ctx context.Context, params *StartMulticastGroupSessionInput, optFns ...func(*Options)) (*StartMulticastGroupSessionOutput, error) { + if params == nil { + params = &StartMulticastGroupSessionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartMulticastGroupSession", params, optFns, c.addOperationStartMulticastGroupSessionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartMulticastGroupSessionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartMulticastGroupSessionInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // The LoRaWAN information used with the multicast session. + // + // This member is required. + LoRaWAN *types.LoRaWANMulticastSession + + noSmithyDocumentSerde +} + +type StartMulticastGroupSessionOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartMulticastGroupSessionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartMulticastGroupSession{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpStartMulticastGroupSessionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartMulticastGroupSession(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartMulticastGroupSession(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "StartMulticastGroupSession", + } +} diff --git a/service/iotwireless/api_op_UpdateFuotaTask.go b/service/iotwireless/api_op_UpdateFuotaTask.go new file mode 100644 index 00000000000..642d56c955a --- /dev/null +++ b/service/iotwireless/api_op_UpdateFuotaTask.go @@ -0,0 +1,133 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates properties of a FUOTA task. +func (c *Client) UpdateFuotaTask(ctx context.Context, params *UpdateFuotaTaskInput, optFns ...func(*Options)) (*UpdateFuotaTaskOutput, error) { + if params == nil { + params = &UpdateFuotaTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateFuotaTask", params, optFns, c.addOperationUpdateFuotaTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateFuotaTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateFuotaTaskInput struct { + + // The ID of a FUOTA task. + // + // This member is required. + Id *string + + // The description of the new resource. + Description *string + + // The S3 URI points to a firmware update image that is to be used with a FUOTA + // task. + FirmwareUpdateImage *string + + // The firmware update role that is to be used with a FUOTA task. + FirmwareUpdateRole *string + + // The LoRaWAN information used with a FUOTA task. + LoRaWAN *types.LoRaWANFuotaTask + + // The name of a FUOTA task. + Name *string + + noSmithyDocumentSerde +} + +type UpdateFuotaTaskOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateFuotaTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateFuotaTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateFuotaTask{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateFuotaTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateFuotaTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateFuotaTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "UpdateFuotaTask", + } +} diff --git a/service/iotwireless/api_op_UpdateMulticastGroup.go b/service/iotwireless/api_op_UpdateMulticastGroup.go new file mode 100644 index 00000000000..f1303343a6e --- /dev/null +++ b/service/iotwireless/api_op_UpdateMulticastGroup.go @@ -0,0 +1,126 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates properties of a multicast group session. +func (c *Client) UpdateMulticastGroup(ctx context.Context, params *UpdateMulticastGroupInput, optFns ...func(*Options)) (*UpdateMulticastGroupOutput, error) { + if params == nil { + params = &UpdateMulticastGroupInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateMulticastGroup", params, optFns, c.addOperationUpdateMulticastGroupMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateMulticastGroupOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateMulticastGroupInput struct { + + // The ID of the multicast group. + // + // This member is required. + Id *string + + // The description of the new resource. + Description *string + + // The LoRaWAN information that is to be used with the multicast group. + LoRaWAN *types.LoRaWANMulticast + + // The name of the multicast group. + Name *string + + noSmithyDocumentSerde +} + +type UpdateMulticastGroupOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateMulticastGroupMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateMulticastGroup{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateMulticastGroup{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateMulticastGroupValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateMulticastGroup(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateMulticastGroup(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "UpdateMulticastGroup", + } +} diff --git a/service/iotwireless/api_op_UpdateResourceEventConfiguration.go b/service/iotwireless/api_op_UpdateResourceEventConfiguration.go new file mode 100644 index 00000000000..2e109206608 --- /dev/null +++ b/service/iotwireless/api_op_UpdateResourceEventConfiguration.go @@ -0,0 +1,131 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package iotwireless + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/iotwireless/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Update the event configuration for a particular resource identifier. +func (c *Client) UpdateResourceEventConfiguration(ctx context.Context, params *UpdateResourceEventConfigurationInput, optFns ...func(*Options)) (*UpdateResourceEventConfigurationOutput, error) { + if params == nil { + params = &UpdateResourceEventConfigurationInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateResourceEventConfiguration", params, optFns, c.addOperationUpdateResourceEventConfigurationMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateResourceEventConfigurationOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateResourceEventConfigurationInput struct { + + // Resource identifier to opt in for event messaging. + // + // This member is required. + Identifier *string + + // Identifier type of the particular resource identifier for event configuration. + // + // This member is required. + IdentifierType types.IdentifierType + + // Event configuration for the device registration state event + DeviceRegistrationState *types.DeviceRegistrationStateEventConfiguration + + // Partner type of the resource if the identifier type is PartnerAccountId + PartnerType types.EventNotificationPartnerType + + // Event configuration for the Proximity event + Proximity *types.ProximityEventConfiguration + + noSmithyDocumentSerde +} + +type UpdateResourceEventConfigurationOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateResourceEventConfigurationMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateResourceEventConfiguration{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateResourceEventConfiguration{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateResourceEventConfigurationValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateResourceEventConfiguration(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateResourceEventConfiguration(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "iotwireless", + OperationName: "UpdateResourceEventConfiguration", + } +} diff --git a/service/iotwireless/deserializers.go b/service/iotwireless/deserializers.go index cd6e3b28825..01c0f928e68 100644 --- a/service/iotwireless/deserializers.go +++ b/service/iotwireless/deserializers.go @@ -13,6 +13,7 @@ import ( smithyio "github.com/aws/smithy-go/io" "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" + smithytime "github.com/aws/smithy-go/time" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "math" @@ -190,14 +191,14 @@ func awsRestjson1_deserializeOpDocumentAssociateAwsAccountWithPartnerAccountOutp return nil } -type awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing struct { +type awsRestjson1_deserializeOpAssociateMulticastGroupWithFuotaTask struct { } -func (*awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing) ID() string { +func (*awsRestjson1_deserializeOpAssociateMulticastGroupWithFuotaTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateMulticastGroupWithFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -211,15 +212,15 @@ func (m *awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing) HandleDeser } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithThing(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateMulticastGroupWithFuotaTask(response, &metadata) } - output := &AssociateWirelessDeviceWithThingOutput{} + output := &AssociateMulticastGroupWithFuotaTaskOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateMulticastGroupWithFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -288,14 +289,14 @@ func awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithThing(response *s } } -type awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate struct { +type awsRestjson1_deserializeOpAssociateWirelessDeviceWithFuotaTask struct { } -func (*awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate) ID() string { +func (*awsRestjson1_deserializeOpAssociateWirelessDeviceWithFuotaTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateWirelessDeviceWithFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -309,43 +310,15 @@ func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate) Hand } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithCertificate(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithFuotaTask(response, &metadata) } - output := &AssociateWirelessGatewayWithCertificateOutput{} + output := &AssociateWirelessDeviceWithFuotaTaskOutput{} out.Result = output - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) - - body := io.TeeReader(response.Body, ringBuffer) - - decoder := json.NewDecoder(body) - decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return out, metadata, err - } - - err = awsRestjson1_deserializeOpDocumentAssociateWirelessGatewayWithCertificateOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), - } - } - return out, metadata, err } -func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -414,54 +387,14 @@ func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithCertificate(resp } } -func awsRestjson1_deserializeOpDocumentAssociateWirelessGatewayWithCertificateOutput(v **AssociateWirelessGatewayWithCertificateOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *AssociateWirelessGatewayWithCertificateOutput - if *v == nil { - sv = &AssociateWirelessGatewayWithCertificateOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "IotCertificateId": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) - } - sv.IotCertificateId = ptr.String(jtv) - } - - default: - _, _ = key, value - - } - } - *v = sv - return nil -} - -type awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing struct { +type awsRestjson1_deserializeOpAssociateWirelessDeviceWithMulticastGroup struct { } -func (*awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing) ID() string { +func (*awsRestjson1_deserializeOpAssociateWirelessDeviceWithMulticastGroup) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateWirelessDeviceWithMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -475,15 +408,15 @@ func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing) HandleDese } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithThing(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithMulticastGroup(response, &metadata) } - output := &AssociateWirelessGatewayWithThingOutput{} + output := &AssociateWirelessDeviceWithMulticastGroupOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -552,14 +485,14 @@ func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithThing(response * } } -type awsRestjson1_deserializeOpCreateDestination struct { +type awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing struct { } -func (*awsRestjson1_deserializeOpCreateDestination) ID() string { +func (*awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateWirelessDeviceWithThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -573,43 +506,15 @@ func (m *awsRestjson1_deserializeOpCreateDestination) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateDestination(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithThing(response, &metadata) } - output := &CreateDestinationOutput{} + output := &AssociateWirelessDeviceWithThingOutput{} out.Result = output - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) - - body := io.TeeReader(response.Body, ringBuffer) - - decoder := json.NewDecoder(body) - decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return out, metadata, err - } - - err = awsRestjson1_deserializeOpDocumentCreateDestinationOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), - } - } - return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateWirelessDeviceWithThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -678,63 +583,14 @@ func awsRestjson1_deserializeOpErrorCreateDestination(response *smithyhttp.Respo } } -func awsRestjson1_deserializeOpDocumentCreateDestinationOutput(v **CreateDestinationOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *CreateDestinationOutput - if *v == nil { - sv = &CreateDestinationOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DestinationArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "Name": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) - } - sv.Name = ptr.String(jtv) - } - - default: - _, _ = key, value - - } - } - *v = sv - return nil -} - -type awsRestjson1_deserializeOpCreateDeviceProfile struct { +type awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate struct { } -func (*awsRestjson1_deserializeOpCreateDeviceProfile) ID() string { +func (*awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -748,9 +604,9 @@ func (m *awsRestjson1_deserializeOpCreateDeviceProfile) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateDeviceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithCertificate(response, &metadata) } - output := &CreateDeviceProfileOutput{} + output := &AssociateWirelessGatewayWithCertificateOutput{} out.Result = output var buff [1024]byte @@ -771,7 +627,7 @@ func (m *awsRestjson1_deserializeOpCreateDeviceProfile) HandleDeserialize(ctx co return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentAssociateWirelessGatewayWithCertificateOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -784,7 +640,7 @@ func (m *awsRestjson1_deserializeOpCreateDeviceProfile) HandleDeserialize(ctx co return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -834,6 +690,9 @@ func awsRestjson1_deserializeOpErrorCreateDeviceProfile(response *smithyhttp.Res case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -850,7 +709,7 @@ func awsRestjson1_deserializeOpErrorCreateDeviceProfile(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(v **CreateDeviceProfileOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentAssociateWirelessGatewayWithCertificateOutput(v **AssociateWirelessGatewayWithCertificateOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -863,31 +722,22 @@ func awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(v **CreateDevic return fmt.Errorf("unexpected JSON type %v", value) } - var sv *CreateDeviceProfileOutput + var sv *AssociateWirelessGatewayWithCertificateOutput if *v == nil { - sv = &CreateDeviceProfileOutput{} + sv = &AssociateWirelessGatewayWithCertificateOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DeviceProfileArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "Id": + case "IotCertificateId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected DeviceProfileId to be of type string, got %T instead", value) + return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) } - sv.Id = ptr.String(jtv) + sv.IotCertificateId = ptr.String(jtv) } default: @@ -899,14 +749,14 @@ func awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(v **CreateDevic return nil } -type awsRestjson1_deserializeOpCreateServiceProfile struct { +type awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing struct { } -func (*awsRestjson1_deserializeOpCreateServiceProfile) ID() string { +func (*awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpAssociateWirelessGatewayWithThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -920,43 +770,15 @@ func (m *awsRestjson1_deserializeOpCreateServiceProfile) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateServiceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithThing(response, &metadata) } - output := &CreateServiceProfileOutput{} + output := &AssociateWirelessGatewayWithThingOutput{} out.Result = output - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) - - body := io.TeeReader(response.Body, ringBuffer) - - decoder := json.NewDecoder(body) - decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return out, metadata, err - } - - err = awsRestjson1_deserializeOpDocumentCreateServiceProfileOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), - } - } - return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorAssociateWirelessGatewayWithThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1006,6 +828,9 @@ func awsRestjson1_deserializeOpErrorCreateServiceProfile(response *smithyhttp.Re case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -1022,63 +847,112 @@ func awsRestjson1_deserializeOpErrorCreateServiceProfile(response *smithyhttp.Re } } -func awsRestjson1_deserializeOpDocumentCreateServiceProfileOutput(v **CreateServiceProfileOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil +type awsRestjson1_deserializeOpCancelMulticastGroupSession struct { +} + +func (*awsRestjson1_deserializeOpCancelMulticastGroupSession) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCancelMulticastGroupSession) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err } - shape, ok := value.(map[string]interface{}) + response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { - return fmt.Errorf("unexpected JSON type %v", value) + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} } - var sv *CreateServiceProfileOutput - if *v == nil { - sv = &CreateServiceProfileOutput{} - } else { - sv = *v + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCancelMulticastGroupSession(response, &metadata) } + output := &CancelMulticastGroupSessionOutput{} + out.Result = output - for key, value := range shape { - switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ServiceProfileArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } + return out, metadata, err +} - case "Id": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ServiceProfileId to be of type string, got %T instead", value) - } - sv.Id = ptr.String(jtv) - } +func awsRestjson1_deserializeOpErrorCancelMulticastGroupSession(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) - default: - _, _ = key, value + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + } - *v = sv - return nil } -type awsRestjson1_deserializeOpCreateWirelessDevice struct { +type awsRestjson1_deserializeOpCreateDestination struct { } -func (*awsRestjson1_deserializeOpCreateWirelessDevice) ID() string { +func (*awsRestjson1_deserializeOpCreateDestination) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1092,9 +966,9 @@ func (m *awsRestjson1_deserializeOpCreateWirelessDevice) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessDevice(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateDestination(response, &metadata) } - output := &CreateWirelessDeviceOutput{} + output := &CreateDestinationOutput{} out.Result = output var buff [1024]byte @@ -1115,7 +989,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessDevice) HandleDeserialize(ctx c return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentCreateDestinationOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1128,7 +1002,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessDevice) HandleDeserialize(ctx c return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1197,7 +1071,7 @@ func awsRestjson1_deserializeOpErrorCreateWirelessDevice(response *smithyhttp.Re } } -func awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(v **CreateWirelessDeviceOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentCreateDestinationOutput(v **CreateDestinationOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1210,9 +1084,9 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(v **CreateWire return fmt.Errorf("unexpected JSON type %v", value) } - var sv *CreateWirelessDeviceOutput + var sv *CreateDestinationOutput if *v == nil { - sv = &CreateWirelessDeviceOutput{} + sv = &CreateDestinationOutput{} } else { sv = *v } @@ -1223,18 +1097,18 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(v **CreateWire if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessDeviceArn to be of type string, got %T instead", value) + return fmt.Errorf("expected DestinationArn to be of type string, got %T instead", value) } sv.Arn = ptr.String(jtv) } - case "Id": + case "Name": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) } - sv.Id = ptr.String(jtv) + sv.Name = ptr.String(jtv) } default: @@ -1246,14 +1120,14 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(v **CreateWire return nil } -type awsRestjson1_deserializeOpCreateWirelessGateway struct { +type awsRestjson1_deserializeOpCreateDeviceProfile struct { } -func (*awsRestjson1_deserializeOpCreateWirelessGateway) ID() string { +func (*awsRestjson1_deserializeOpCreateDeviceProfile) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1267,9 +1141,9 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGateway) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGateway(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateDeviceProfile(response, &metadata) } - output := &CreateWirelessGatewayOutput{} + output := &CreateDeviceProfileOutput{} out.Result = output var buff [1024]byte @@ -1290,7 +1164,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGateway) HandleDeserialize(ctx return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1303,7 +1177,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGateway) HandleDeserialize(ctx return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1369,7 +1243,7 @@ func awsRestjson1_deserializeOpErrorCreateWirelessGateway(response *smithyhttp.R } } -func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWirelessGatewayOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentCreateDeviceProfileOutput(v **CreateDeviceProfileOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1382,9 +1256,9 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWir return fmt.Errorf("unexpected JSON type %v", value) } - var sv *CreateWirelessGatewayOutput + var sv *CreateDeviceProfileOutput if *v == nil { - sv = &CreateWirelessGatewayOutput{} + sv = &CreateDeviceProfileOutput{} } else { sv = *v } @@ -1395,7 +1269,7 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWir if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayArn to be of type string, got %T instead", value) + return fmt.Errorf("expected DeviceProfileArn to be of type string, got %T instead", value) } sv.Arn = ptr.String(jtv) } @@ -1404,7 +1278,7 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWir if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + return fmt.Errorf("expected DeviceProfileId to be of type string, got %T instead", value) } sv.Id = ptr.String(jtv) } @@ -1418,14 +1292,14 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWir return nil } -type awsRestjson1_deserializeOpCreateWirelessGatewayTask struct { +type awsRestjson1_deserializeOpCreateFuotaTask struct { } -func (*awsRestjson1_deserializeOpCreateWirelessGatewayTask) ID() string { +func (*awsRestjson1_deserializeOpCreateFuotaTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1439,9 +1313,9 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTask) HandleDeserialize( } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGatewayTask(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateFuotaTask(response, &metadata) } - output := &CreateWirelessGatewayTaskOutput{} + output := &CreateFuotaTaskOutput{} out.Result = output var buff [1024]byte @@ -1462,7 +1336,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTask) HandleDeserialize( return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentCreateFuotaTaskOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1475,7 +1349,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTask) HandleDeserialize( return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1544,7 +1418,7 @@ func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTask(response *smithyht } } -func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(v **CreateWirelessGatewayTaskOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentCreateFuotaTaskOutput(v **CreateFuotaTaskOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1557,31 +1431,31 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(v **Creat return fmt.Errorf("unexpected JSON type %v", value) } - var sv *CreateWirelessGatewayTaskOutput + var sv *CreateFuotaTaskOutput if *v == nil { - sv = &CreateWirelessGatewayTaskOutput{} + sv = &CreateFuotaTaskOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "Status": + case "Arn": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayTaskStatus to be of type string, got %T instead", value) + return fmt.Errorf("expected FuotaTaskArn to be of type string, got %T instead", value) } - sv.Status = types.WirelessGatewayTaskStatus(jtv) + sv.Arn = ptr.String(jtv) } - case "WirelessGatewayTaskDefinitionId": + case "Id": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) + return fmt.Errorf("expected FuotaTaskId to be of type string, got %T instead", value) } - sv.WirelessGatewayTaskDefinitionId = ptr.String(jtv) + sv.Id = ptr.String(jtv) } default: @@ -1593,14 +1467,14 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(v **Creat return nil } -type awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition struct { +type awsRestjson1_deserializeOpCreateMulticastGroup struct { } -func (*awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) ID() string { +func (*awsRestjson1_deserializeOpCreateMulticastGroup) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1614,9 +1488,9 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) HandleDe } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGatewayTaskDefinition(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateMulticastGroup(response, &metadata) } - output := &CreateWirelessGatewayTaskDefinitionOutput{} + output := &CreateMulticastGroupOutput{} out.Result = output var buff [1024]byte @@ -1637,7 +1511,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) HandleDe return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentCreateMulticastGroupOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -1650,7 +1524,7 @@ func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) HandleDe return out, metadata, err } -func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1719,7 +1593,7 @@ func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTaskDefinition(response } } -func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput(v **CreateWirelessGatewayTaskDefinitionOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentCreateMulticastGroupOutput(v **CreateMulticastGroupOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -1732,9 +1606,9 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput return fmt.Errorf("unexpected JSON type %v", value) } - var sv *CreateWirelessGatewayTaskDefinitionOutput + var sv *CreateMulticastGroupOutput if *v == nil { - sv = &CreateWirelessGatewayTaskDefinitionOutput{} + sv = &CreateMulticastGroupOutput{} } else { sv = *v } @@ -1745,7 +1619,7 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayTaskDefinitionArn to be of type string, got %T instead", value) + return fmt.Errorf("expected MulticastGroupArn to be of type string, got %T instead", value) } sv.Arn = ptr.String(jtv) } @@ -1754,7 +1628,7 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) + return fmt.Errorf("expected MulticastGroupId to be of type string, got %T instead", value) } sv.Id = ptr.String(jtv) } @@ -1768,14 +1642,14 @@ func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput return nil } -type awsRestjson1_deserializeOpDeleteDestination struct { +type awsRestjson1_deserializeOpCreateServiceProfile struct { } -func (*awsRestjson1_deserializeOpDeleteDestination) ID() string { +func (*awsRestjson1_deserializeOpCreateServiceProfile) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1789,15 +1663,43 @@ func (m *awsRestjson1_deserializeOpDeleteDestination) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteDestination(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateServiceProfile(response, &metadata) } - output := &DeleteDestinationOutput{} + output := &CreateServiceProfileOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateServiceProfileOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1847,9 +1749,6 @@ func awsRestjson1_deserializeOpErrorDeleteDestination(response *smithyhttp.Respo case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -1866,14 +1765,63 @@ func awsRestjson1_deserializeOpErrorDeleteDestination(response *smithyhttp.Respo } } -type awsRestjson1_deserializeOpDeleteDeviceProfile struct { -} +func awsRestjson1_deserializeOpDocumentCreateServiceProfileOutput(v **CreateServiceProfileOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } -func (*awsRestjson1_deserializeOpDeleteDeviceProfile) ID() string { - return "OperationDeserializer" -} + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } -func (m *awsRestjson1_deserializeOpDeleteDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + var sv *CreateServiceProfileOutput + if *v == nil { + sv = &CreateServiceProfileOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceProfileArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceProfileId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateWirelessDevice struct { +} + +func (*awsRestjson1_deserializeOpCreateWirelessDevice) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1887,15 +1835,43 @@ func (m *awsRestjson1_deserializeOpDeleteDeviceProfile) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteDeviceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessDevice(response, &metadata) } - output := &DeleteDeviceProfileOutput{} + output := &CreateWirelessDeviceOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -1964,14 +1940,63 @@ func awsRestjson1_deserializeOpErrorDeleteDeviceProfile(response *smithyhttp.Res } } -type awsRestjson1_deserializeOpDeleteServiceProfile struct { +func awsRestjson1_deserializeOpDocumentCreateWirelessDeviceOutput(v **CreateWirelessDeviceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateWirelessDeviceOutput + if *v == nil { + sv = &CreateWirelessDeviceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDeleteServiceProfile) ID() string { +type awsRestjson1_deserializeOpCreateWirelessGateway struct { +} + +func (*awsRestjson1_deserializeOpCreateWirelessGateway) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpCreateWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -1985,15 +2010,43 @@ func (m *awsRestjson1_deserializeOpDeleteServiceProfile) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteServiceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGateway(response, &metadata) } - output := &DeleteServiceProfileOutput{} + output := &CreateWirelessGatewayOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorCreateWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2043,9 +2096,6 @@ func awsRestjson1_deserializeOpErrorDeleteServiceProfile(response *smithyhttp.Re case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -2062,14 +2112,2976 @@ func awsRestjson1_deserializeOpErrorDeleteServiceProfile(response *smithyhttp.Re } } -type awsRestjson1_deserializeOpDeleteWirelessDevice struct { +func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayOutput(v **CreateWirelessGatewayOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateWirelessGatewayOutput + if *v == nil { + sv = &CreateWirelessGatewayOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateWirelessGatewayTask struct { +} + +func (*awsRestjson1_deserializeOpCreateWirelessGatewayTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGatewayTask(response, &metadata) + } + output := &CreateWirelessGatewayTaskOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskOutput(v **CreateWirelessGatewayTaskOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateWirelessGatewayTaskOutput + if *v == nil { + sv = &CreateWirelessGatewayTaskOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayTaskStatus to be of type string, got %T instead", value) + } + sv.Status = types.WirelessGatewayTaskStatus(jtv) + } + + case "WirelessGatewayTaskDefinitionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) + } + sv.WirelessGatewayTaskDefinitionId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition struct { +} + +func (*awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateWirelessGatewayTaskDefinition(response, &metadata) + } + output := &CreateWirelessGatewayTaskDefinitionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateWirelessGatewayTaskDefinitionOutput(v **CreateWirelessGatewayTaskDefinitionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateWirelessGatewayTaskDefinitionOutput + if *v == nil { + sv = &CreateWirelessGatewayTaskDefinitionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayTaskDefinitionArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteDestination struct { +} + +func (*awsRestjson1_deserializeOpDeleteDestination) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteDestination(response, &metadata) + } + output := &DeleteDestinationOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteDeviceProfile struct { +} + +func (*awsRestjson1_deserializeOpDeleteDeviceProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteDeviceProfile(response, &metadata) + } + output := &DeleteDeviceProfileOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteFuotaTask struct { +} + +func (*awsRestjson1_deserializeOpDeleteFuotaTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteFuotaTask(response, &metadata) + } + output := &DeleteFuotaTaskOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteMulticastGroup struct { +} + +func (*awsRestjson1_deserializeOpDeleteMulticastGroup) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteMulticastGroup(response, &metadata) + } + output := &DeleteMulticastGroupOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteServiceProfile struct { +} + +func (*awsRestjson1_deserializeOpDeleteServiceProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteServiceProfile(response, &metadata) + } + output := &DeleteServiceProfileOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteWirelessDevice struct { +} + +func (*awsRestjson1_deserializeOpDeleteWirelessDevice) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessDevice(response, &metadata) + } + output := &DeleteWirelessDeviceOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteWirelessGateway struct { +} + +func (*awsRestjson1_deserializeOpDeleteWirelessGateway) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response, &metadata) + } + output := &DeleteWirelessGatewayOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteWirelessGatewayTask struct { +} + +func (*awsRestjson1_deserializeOpDeleteWirelessGatewayTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTask(response, &metadata) + } + output := &DeleteWirelessGatewayTaskOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition struct { +} + +func (*awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTaskDefinition(response, &metadata) + } + output := &DeleteWirelessGatewayTaskDefinitionOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount struct { +} + +func (*awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(response, &metadata) + } + output := &DisassociateAwsAccountFromPartnerAccountOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateMulticastGroupFromFuotaTask struct { +} + +func (*awsRestjson1_deserializeOpDisassociateMulticastGroupFromFuotaTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateMulticastGroupFromFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateMulticastGroupFromFuotaTask(response, &metadata) + } + output := &DisassociateMulticastGroupFromFuotaTaskOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateMulticastGroupFromFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateWirelessDeviceFromFuotaTask struct { +} + +func (*awsRestjson1_deserializeOpDisassociateWirelessDeviceFromFuotaTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateWirelessDeviceFromFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromFuotaTask(response, &metadata) + } + output := &DisassociateWirelessDeviceFromFuotaTaskOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateWirelessDeviceFromMulticastGroup struct { +} + +func (*awsRestjson1_deserializeOpDisassociateWirelessDeviceFromMulticastGroup) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateWirelessDeviceFromMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromMulticastGroup(response, &metadata) + } + output := &DisassociateWirelessDeviceFromMulticastGroupOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing struct { +} + +func (*awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response, &metadata) + } + output := &DisassociateWirelessDeviceFromThingOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate struct { +} + +func (*awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromCertificate(response, &metadata) + } + output := &DisassociateWirelessGatewayFromCertificateOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing struct { +} + +func (*awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromThing(response, &metadata) + } + output := &DisassociateWirelessGatewayFromThingOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpGetDestination struct { +} + +func (*awsRestjson1_deserializeOpGetDestination) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetDestination(response, &metadata) + } + output := &GetDestinationOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetDestinationOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetDestinationOutput(v **GetDestinationOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetDestinationOutput + if *v == nil { + sv = &GetDestinationOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DestinationArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Description to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "Expression": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Expression to be of type string, got %T instead", value) + } + sv.Expression = ptr.String(jtv) + } + + case "ExpressionType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExpressionType to be of type string, got %T instead", value) + } + sv.ExpressionType = types.ExpressionType(jtv) + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "RoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RoleArn to be of type string, got %T instead", value) + } + sv.RoleArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetDeviceProfile struct { +} + +func (*awsRestjson1_deserializeOpGetDeviceProfile) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetDeviceProfile(response, &metadata) + } + output := &GetDeviceProfileOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfileOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetDeviceProfileOutput + if *v == nil { + sv = &GetDeviceProfileOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeviceProfileArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeviceProfileId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANDeviceProfile(&sv.LoRaWAN, value); err != nil { + return err + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeviceProfileName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetFuotaTask struct { +} + +func (*awsRestjson1_deserializeOpGetFuotaTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetFuotaTask(response, &metadata) + } + output := &GetFuotaTaskOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetFuotaTaskOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetFuotaTaskOutput(v **GetFuotaTaskOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetFuotaTaskOutput + if *v == nil { + sv = &GetFuotaTaskOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "CreatedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected CreatedAt to be a JSON Number, got %T instead", value) + + } + } + + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Description to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "FirmwareUpdateImage": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FirmwareUpdateImage to be of type string, got %T instead", value) + } + sv.FirmwareUpdateImage = ptr.String(jtv) + } + + case "FirmwareUpdateRole": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FirmwareUpdateRole to be of type string, got %T instead", value) + } + sv.FirmwareUpdateRole = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANFuotaTaskGetInfo(&sv.LoRaWAN, value); err != nil { + return err + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "Status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskStatus to be of type string, got %T instead", value) + } + sv.Status = types.FuotaTaskStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetLogLevelsByResourceTypes struct { +} + +func (*awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetLogLevelsByResourceTypes(response, &metadata) + } + output := &GetLogLevelsByResourceTypesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetLogLevelsByResourceTypes(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(v **GetLogLevelsByResourceTypesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetLogLevelsByResourceTypesOutput + if *v == nil { + sv = &GetLogLevelsByResourceTypesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DefaultLogLevel": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LogLevel to be of type string, got %T instead", value) + } + sv.DefaultLogLevel = types.LogLevel(jtv) + } + + case "WirelessDeviceLogOptions": + if err := awsRestjson1_deserializeDocumentWirelessDeviceLogOptionList(&sv.WirelessDeviceLogOptions, value); err != nil { + return err + } + + case "WirelessGatewayLogOptions": + if err := awsRestjson1_deserializeDocumentWirelessGatewayLogOptionList(&sv.WirelessGatewayLogOptions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetMulticastGroup struct { +} + +func (*awsRestjson1_deserializeOpGetMulticastGroup) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpGetMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorGetMulticastGroup(response, &metadata) + } + output := &GetMulticastGroupOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetMulticastGroupOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorGetMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetMulticastGroupOutput(v **GetMulticastGroupOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetMulticastGroupOutput + if *v == nil { + sv = &GetMulticastGroupOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "CreatedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected CreatedAt to be a JSON Number, got %T instead", value) + + } + } + + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Description to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANMulticastGet(&sv.LoRaWAN, value); err != nil { + return err + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "Status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupStatus to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpGetMulticastGroupSession struct { } -func (*awsRestjson1_deserializeOpDeleteWirelessDevice) ID() string { +func (*awsRestjson1_deserializeOpGetMulticastGroupSession) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetMulticastGroupSession) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2083,15 +5095,43 @@ func (m *awsRestjson1_deserializeOpDeleteWirelessDevice) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessDevice(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetMulticastGroupSession(response, &metadata) } - output := &DeleteWirelessDeviceOutput{} + output := &GetMulticastGroupSessionOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetMulticastGroupSessionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetMulticastGroupSession(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2157,14 +5197,50 @@ func awsRestjson1_deserializeOpErrorDeleteWirelessDevice(response *smithyhttp.Re } } -type awsRestjson1_deserializeOpDeleteWirelessGateway struct { +func awsRestjson1_deserializeOpDocumentGetMulticastGroupSessionOutput(v **GetMulticastGroupSessionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetMulticastGroupSessionOutput + if *v == nil { + sv = &GetMulticastGroupSessionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANMulticastSession(&sv.LoRaWAN, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDeleteWirelessGateway) ID() string { +type awsRestjson1_deserializeOpGetPartnerAccount struct { +} + +func (*awsRestjson1_deserializeOpGetPartnerAccount) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetPartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2178,15 +5254,43 @@ func (m *awsRestjson1_deserializeOpDeleteWirelessGateway) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetPartnerAccount(response, &metadata) } - output := &DeleteWirelessGatewayOutput{} + output := &GetPartnerAccountOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetPartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2227,9 +5331,6 @@ func awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response *smithyhttp.R } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -2252,14 +5353,59 @@ func awsRestjson1_deserializeOpErrorDeleteWirelessGateway(response *smithyhttp.R } } -type awsRestjson1_deserializeOpDeleteWirelessGatewayTask struct { +func awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(v **GetPartnerAccountOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetPartnerAccountOutput + if *v == nil { + sv = &GetPartnerAccountOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AccountLinked": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected AccountLinked to be of type *bool, got %T instead", value) + } + sv.AccountLinked = jtv + } + + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkAccountInfoWithFingerprint(&sv.Sidewalk, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDeleteWirelessGatewayTask) ID() string { +type awsRestjson1_deserializeOpGetResourceEventConfiguration struct { +} + +func (*awsRestjson1_deserializeOpGetResourceEventConfiguration) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetResourceEventConfiguration) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2273,15 +5419,43 @@ func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTask) HandleDeserialize( } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTask(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetResourceEventConfiguration(response, &metadata) } - output := &DeleteWirelessGatewayTaskOutput{} + output := &GetResourceEventConfigurationOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetResourceEventConfigurationOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetResourceEventConfiguration(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2347,14 +5521,55 @@ func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTask(response *smithyht } } -type awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition struct { +func awsRestjson1_deserializeOpDocumentGetResourceEventConfigurationOutput(v **GetResourceEventConfigurationOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetResourceEventConfigurationOutput + if *v == nil { + sv = &GetResourceEventConfigurationOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DeviceRegistrationState": + if err := awsRestjson1_deserializeDocumentDeviceRegistrationStateEventConfiguration(&sv.DeviceRegistrationState, value); err != nil { + return err + } + + case "Proximity": + if err := awsRestjson1_deserializeDocumentProximityEventConfiguration(&sv.Proximity, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition) ID() string { +type awsRestjson1_deserializeOpGetResourceLogLevel struct { +} + +func (*awsRestjson1_deserializeOpGetResourceLogLevel) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2368,15 +5583,43 @@ func (m *awsRestjson1_deserializeOpDeleteWirelessGatewayTaskDefinition) HandleDe } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTaskDefinition(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetResourceLogLevel(response, &metadata) } - output := &DeleteWirelessGatewayTaskDefinitionOutput{} + output := &GetResourceLogLevelOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2442,14 +5685,54 @@ func awsRestjson1_deserializeOpErrorDeleteWirelessGatewayTaskDefinition(response } } -type awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount struct { +func awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(v **GetResourceLogLevelOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetResourceLogLevelOutput + if *v == nil { + sv = &GetResourceLogLevelOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "LogLevel": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LogLevel to be of type string, got %T instead", value) + } + sv.LogLevel = types.LogLevel(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount) ID() string { +type awsRestjson1_deserializeOpGetServiceEndpoint struct { +} + +func (*awsRestjson1_deserializeOpGetServiceEndpoint) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetServiceEndpoint) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2463,15 +5746,43 @@ func (m *awsRestjson1_deserializeOpDisassociateAwsAccountFromPartnerAccount) Han } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetServiceEndpoint(response, &metadata) } - output := &DisassociateAwsAccountFromPartnerAccountOutput{} + output := &GetServiceEndpointOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetServiceEndpoint(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2512,12 +5823,12 @@ func awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(res } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -2534,14 +5845,72 @@ func awsRestjson1_deserializeOpErrorDisassociateAwsAccountFromPartnerAccount(res } } -type awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing struct { +func awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(v **GetServiceEndpointOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetServiceEndpointOutput + if *v == nil { + sv = &GetServiceEndpointOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ServerTrust": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CertificatePEM to be of type string, got %T instead", value) + } + sv.ServerTrust = ptr.String(jtv) + } + + case "ServiceEndpoint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EndPoint to be of type string, got %T instead", value) + } + sv.ServiceEndpoint = ptr.String(jtv) + } + + case "ServiceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayServiceType to be of type string, got %T instead", value) + } + sv.ServiceType = types.WirelessGatewayServiceType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil } -func (*awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing) ID() string { +type awsRestjson1_deserializeOpGetServiceProfile struct { +} + +func (*awsRestjson1_deserializeOpGetServiceProfile) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2555,15 +5924,43 @@ func (m *awsRestjson1_deserializeOpDisassociateWirelessDeviceFromThing) HandleDe } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetServiceProfile(response, &metadata) } - output := &DisassociateWirelessDeviceFromThingOutput{} + output := &GetServiceProfileOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2607,9 +6004,6 @@ func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response case strings.EqualFold("AccessDeniedException", errorCode): return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - case strings.EqualFold("ConflictException", errorCode): - return awsRestjson1_deserializeErrorConflictException(response, errorBody) - case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -2622,24 +6016,87 @@ func awsRestjson1_deserializeOpErrorDisassociateWirelessDeviceFromThing(response case strings.EqualFold("ValidationException", errorCode): return awsRestjson1_deserializeErrorValidationException(response, errorBody) - default: - genericError := &smithy.GenericAPIError{ - Code: errorCode, - Message: errorMessage, + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(v **GetServiceProfileOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetServiceProfileOutput + if *v == nil { + sv = &GetServiceProfileOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceProfileArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceProfileId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANGetServiceProfileInfo(&sv.LoRaWAN, value); err != nil { + return err + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceProfileName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + } - return genericError - } + *v = sv + return nil } -type awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate struct { +type awsRestjson1_deserializeOpGetWirelessDevice struct { } -func (*awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessDevice) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2653,15 +6110,43 @@ func (m *awsRestjson1_deserializeOpDisassociateWirelessGatewayFromCertificate) H } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromCertificate(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessDevice(response, &metadata) } - output := &DisassociateWirelessGatewayFromCertificateOutput{} + output := &GetWirelessDeviceOutput{} out.Result = output + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + return out, metadata, err } -func awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2727,112 +6212,127 @@ func awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromCertificate(r } } -type awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing struct { -} - -func (*awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing) ID() string { - return "OperationDeserializer" -} - -func (m *awsRestjson1_deserializeOpDisassociateWirelessGatewayFromThing) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( - out middleware.DeserializeOutput, metadata middleware.Metadata, err error, -) { - out, metadata, err = next.HandleDeserialize(ctx, in) - if err != nil { - return out, metadata, err +func awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(v **GetWirelessDeviceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) } - - response, ok := out.RawResponse.(*smithyhttp.Response) - if !ok { - return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + if value == nil { + return nil } - if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromThing(response, &metadata) + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) } - output := &DisassociateWirelessGatewayFromThingOutput{} - out.Result = output - - return out, metadata, err -} -func awsRestjson1_deserializeOpErrorDisassociateWirelessGatewayFromThing(response *smithyhttp.Response, metadata *middleware.Metadata) error { - var errorBuffer bytes.Buffer - if _, err := io.Copy(&errorBuffer, response.Body); err != nil { - return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + var sv *GetWirelessDeviceOutput + if *v == nil { + sv = &GetWirelessDeviceOutput{} + } else { + sv = *v } - errorBody := bytes.NewReader(errorBuffer.Bytes()) - errorCode := "UnknownError" - errorMessage := errorCode + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } - code := response.Header.Get("X-Amzn-ErrorType") - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) - } + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Description to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) + case "DestinationName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) + } + sv.DestinationName = ptr.String(jtv) + } - body := io.TeeReader(errorBody, ringBuffer) - decoder := json.NewDecoder(body) - decoder.UseNumber() - code, message, err := restjson.GetErrorInfo(decoder) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return err - } + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } - errorBody.Seek(0, io.SeekStart) - if len(code) != 0 { - errorCode = restjson.SanitizeErrorCode(code) - } - if len(message) != 0 { - errorMessage = message - } + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANDevice(&sv.LoRaWAN, value); err != nil { + return err + } - switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } - case strings.EqualFold("ConflictException", errorCode): - return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkDevice(&sv.Sidewalk, value); err != nil { + return err + } - case strings.EqualFold("InternalServerException", errorCode): - return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case "ThingArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ThingArn to be of type string, got %T instead", value) + } + sv.ThingArn = ptr.String(jtv) + } - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case "ThingName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ThingName to be of type string, got %T instead", value) + } + sv.ThingName = ptr.String(jtv) + } - case strings.EqualFold("ThrottlingException", errorCode): - return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + case "Type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessDeviceType to be of type string, got %T instead", value) + } + sv.Type = types.WirelessDeviceType(jtv) + } - case strings.EqualFold("ValidationException", errorCode): - return awsRestjson1_deserializeErrorValidationException(response, errorBody) + default: + _, _ = key, value - default: - genericError := &smithy.GenericAPIError{ - Code: errorCode, - Message: errorMessage, } - return genericError - } + *v = sv + return nil } -type awsRestjson1_deserializeOpGetDestination struct { +type awsRestjson1_deserializeOpGetWirelessDeviceStatistics struct { } -func (*awsRestjson1_deserializeOpGetDestination) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessDeviceStatistics) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessDeviceStatistics) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -2846,9 +6346,9 @@ func (m *awsRestjson1_deserializeOpGetDestination) HandleDeserialize(ctx context } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetDestination(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response, &metadata) } - output := &GetDestinationOutput{} + output := &GetWirelessDeviceStatisticsOutput{} out.Result = output var buff [1024]byte @@ -2869,7 +6369,7 @@ func (m *awsRestjson1_deserializeOpGetDestination) HandleDeserialize(ctx context return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetDestinationOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -2882,7 +6382,7 @@ func (m *awsRestjson1_deserializeOpGetDestination) HandleDeserialize(ctx context return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -2948,7 +6448,7 @@ func awsRestjson1_deserializeOpErrorGetDestination(response *smithyhttp.Response } } -func awsRestjson1_deserializeOpDocumentGetDestinationOutput(v **GetDestinationOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(v **GetWirelessDeviceStatisticsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -2961,67 +6461,41 @@ func awsRestjson1_deserializeOpDocumentGetDestinationOutput(v **GetDestinationOu return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetDestinationOutput + var sv *GetWirelessDeviceStatisticsOutput if *v == nil { - sv = &GetDestinationOutput{} + sv = &GetWirelessDeviceStatisticsOutput{} } else { sv = *v } for key, value := range shape { - switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DestinationArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "Description": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected Description to be of type string, got %T instead", value) - } - sv.Description = ptr.String(jtv) - } - - case "Expression": + switch key { + case "LastUplinkReceivedAt": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected Expression to be of type string, got %T instead", value) + return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) } - sv.Expression = ptr.String(jtv) + sv.LastUplinkReceivedAt = ptr.String(jtv) } - case "ExpressionType": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ExpressionType to be of type string, got %T instead", value) - } - sv.ExpressionType = types.ExpressionType(jtv) + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANDeviceMetadata(&sv.LoRaWAN, value); err != nil { + return err } - case "Name": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) - } - sv.Name = ptr.String(jtv) + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkDeviceMetadata(&sv.Sidewalk, value); err != nil { + return err } - case "RoleArn": + case "WirelessDeviceId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected RoleArn to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) } - sv.RoleArn = ptr.String(jtv) + sv.WirelessDeviceId = ptr.String(jtv) } default: @@ -3033,14 +6507,14 @@ func awsRestjson1_deserializeOpDocumentGetDestinationOutput(v **GetDestinationOu return nil } -type awsRestjson1_deserializeOpGetDeviceProfile struct { +type awsRestjson1_deserializeOpGetWirelessGateway struct { } -func (*awsRestjson1_deserializeOpGetDeviceProfile) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGateway) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetDeviceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3054,9 +6528,9 @@ func (m *awsRestjson1_deserializeOpGetDeviceProfile) HandleDeserialize(ctx conte } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetDeviceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGateway(response, &metadata) } - output := &GetDeviceProfileOutput{} + output := &GetWirelessGatewayOutput{} out.Result = output var buff [1024]byte @@ -3077,7 +6551,7 @@ func (m *awsRestjson1_deserializeOpGetDeviceProfile) HandleDeserialize(ctx conte return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3090,7 +6564,7 @@ func (m *awsRestjson1_deserializeOpGetDeviceProfile) HandleDeserialize(ctx conte return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetDeviceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -3156,7 +6630,7 @@ func awsRestjson1_deserializeOpErrorGetDeviceProfile(response *smithyhttp.Respon } } -func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfileOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayOutput(v **GetWirelessGatewayOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -3169,9 +6643,9 @@ func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfi return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetDeviceProfileOutput + var sv *GetWirelessGatewayOutput if *v == nil { - sv = &GetDeviceProfileOutput{} + sv = &GetWirelessGatewayOutput{} } else { sv = *v } @@ -3182,22 +6656,31 @@ func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfi if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected DeviceProfileArn to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayArn to be of type string, got %T instead", value) } sv.Arn = ptr.String(jtv) } + case "Description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Description to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + case "Id": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected DeviceProfileId to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) } sv.Id = ptr.String(jtv) } case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANDeviceProfile(&sv.LoRaWAN, value); err != nil { + if err := awsRestjson1_deserializeDocumentLoRaWANGateway(&sv.LoRaWAN, value); err != nil { return err } @@ -3205,11 +6688,29 @@ func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfi if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected DeviceProfileName to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayName to be of type string, got %T instead", value) } sv.Name = ptr.String(jtv) } + case "ThingArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ThingArn to be of type string, got %T instead", value) + } + sv.ThingArn = ptr.String(jtv) + } + + case "ThingName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ThingName to be of type string, got %T instead", value) + } + sv.ThingName = ptr.String(jtv) + } + default: _, _ = key, value @@ -3219,14 +6720,14 @@ func awsRestjson1_deserializeOpDocumentGetDeviceProfileOutput(v **GetDeviceProfi return nil } -type awsRestjson1_deserializeOpGetLogLevelsByResourceTypes struct { +type awsRestjson1_deserializeOpGetWirelessGatewayCertificate struct { } -func (*awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGatewayCertificate) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGatewayCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3240,9 +6741,9 @@ func (m *awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) HandleDeserializ } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetLogLevelsByResourceTypes(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response, &metadata) } - output := &GetLogLevelsByResourceTypesOutput{} + output := &GetWirelessGatewayCertificateOutput{} out.Result = output var buff [1024]byte @@ -3263,7 +6764,7 @@ func (m *awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) HandleDeserializ return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3276,7 +6777,7 @@ func (m *awsRestjson1_deserializeOpGetLogLevelsByResourceTypes) HandleDeserializ return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetLogLevelsByResourceTypes(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -3342,7 +6843,7 @@ func awsRestjson1_deserializeOpErrorGetLogLevelsByResourceTypes(response *smithy } } -func awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(v **GetLogLevelsByResourceTypesOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(v **GetWirelessGatewayCertificateOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -3355,32 +6856,31 @@ func awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(v **Get return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetLogLevelsByResourceTypesOutput + var sv *GetWirelessGatewayCertificateOutput if *v == nil { - sv = &GetLogLevelsByResourceTypesOutput{} + sv = &GetWirelessGatewayCertificateOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "DefaultLogLevel": + case "IotCertificateId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected LogLevel to be of type string, got %T instead", value) + return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) } - sv.DefaultLogLevel = types.LogLevel(jtv) - } - - case "WirelessDeviceLogOptions": - if err := awsRestjson1_deserializeDocumentWirelessDeviceLogOptionList(&sv.WirelessDeviceLogOptions, value); err != nil { - return err + sv.IotCertificateId = ptr.String(jtv) } - case "WirelessGatewayLogOptions": - if err := awsRestjson1_deserializeDocumentWirelessGatewayLogOptionList(&sv.WirelessGatewayLogOptions, value); err != nil { - return err + case "LoRaWANNetworkServerCertificateId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) + } + sv.LoRaWANNetworkServerCertificateId = ptr.String(jtv) } default: @@ -3392,14 +6892,14 @@ func awsRestjson1_deserializeOpDocumentGetLogLevelsByResourceTypesOutput(v **Get return nil } -type awsRestjson1_deserializeOpGetPartnerAccount struct { +type awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation struct { } -func (*awsRestjson1_deserializeOpGetPartnerAccount) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetPartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3413,9 +6913,9 @@ func (m *awsRestjson1_deserializeOpGetPartnerAccount) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetPartnerAccount(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayFirmwareInformation(response, &metadata) } - output := &GetPartnerAccountOutput{} + output := &GetWirelessGatewayFirmwareInformationOutput{} out.Result = output var buff [1024]byte @@ -3436,7 +6936,7 @@ func (m *awsRestjson1_deserializeOpGetPartnerAccount) HandleDeserialize(ctx cont return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3449,7 +6949,7 @@ func (m *awsRestjson1_deserializeOpGetPartnerAccount) HandleDeserialize(ctx cont return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetPartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGatewayFirmwareInformation(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -3490,6 +6990,9 @@ func awsRestjson1_deserializeOpErrorGetPartnerAccount(response *smithyhttp.Respo } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -3512,7 +7015,7 @@ func awsRestjson1_deserializeOpErrorGetPartnerAccount(response *smithyhttp.Respo } } -func awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(v **GetPartnerAccountOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutput(v **GetWirelessGatewayFirmwareInformationOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -3525,26 +7028,17 @@ func awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(v **GetPartnerAcc return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetPartnerAccountOutput + var sv *GetWirelessGatewayFirmwareInformationOutput if *v == nil { - sv = &GetPartnerAccountOutput{} + sv = &GetWirelessGatewayFirmwareInformationOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "AccountLinked": - if value != nil { - jtv, ok := value.(bool) - if !ok { - return fmt.Errorf("expected AccountLinked to be of type *bool, got %T instead", value) - } - sv.AccountLinked = jtv - } - - case "Sidewalk": - if err := awsRestjson1_deserializeDocumentSidewalkAccountInfoWithFingerprint(&sv.Sidewalk, value); err != nil { + case "LoRaWAN": + if err := awsRestjson1_deserializeDocumentLoRaWANGatewayCurrentVersion(&sv.LoRaWAN, value); err != nil { return err } @@ -3557,14 +7051,14 @@ func awsRestjson1_deserializeOpDocumentGetPartnerAccountOutput(v **GetPartnerAcc return nil } -type awsRestjson1_deserializeOpGetResourceLogLevel struct { +type awsRestjson1_deserializeOpGetWirelessGatewayStatistics struct { } -func (*awsRestjson1_deserializeOpGetResourceLogLevel) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGatewayStatistics) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGatewayStatistics) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3578,9 +7072,9 @@ func (m *awsRestjson1_deserializeOpGetResourceLogLevel) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetResourceLogLevel(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response, &metadata) } - output := &GetResourceLogLevelOutput{} + output := &GetWirelessGatewayStatisticsOutput{} out.Result = output var buff [1024]byte @@ -3601,7 +7095,7 @@ func (m *awsRestjson1_deserializeOpGetResourceLogLevel) HandleDeserialize(ctx co return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3614,7 +7108,7 @@ func (m *awsRestjson1_deserializeOpGetResourceLogLevel) HandleDeserialize(ctx co return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -3680,7 +7174,7 @@ func awsRestjson1_deserializeOpErrorGetResourceLogLevel(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(v **GetResourceLogLevelOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(v **GetWirelessGatewayStatisticsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -3693,22 +7187,40 @@ func awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(v **GetResource return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetResourceLogLevelOutput + var sv *GetWirelessGatewayStatisticsOutput if *v == nil { - sv = &GetResourceLogLevelOutput{} + sv = &GetWirelessGatewayStatisticsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "LogLevel": + case "ConnectionStatus": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected LogLevel to be of type string, got %T instead", value) + return fmt.Errorf("expected ConnectionStatus to be of type string, got %T instead", value) } - sv.LogLevel = types.LogLevel(jtv) + sv.ConnectionStatus = types.ConnectionStatus(jtv) + } + + case "LastUplinkReceivedAt": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) + } + sv.LastUplinkReceivedAt = ptr.String(jtv) + } + + case "WirelessGatewayId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) + } + sv.WirelessGatewayId = ptr.String(jtv) } default: @@ -3720,14 +7232,14 @@ func awsRestjson1_deserializeOpDocumentGetResourceLogLevelOutput(v **GetResource return nil } -type awsRestjson1_deserializeOpGetServiceEndpoint struct { +type awsRestjson1_deserializeOpGetWirelessGatewayTask struct { } -func (*awsRestjson1_deserializeOpGetServiceEndpoint) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGatewayTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetServiceEndpoint) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3741,9 +7253,9 @@ func (m *awsRestjson1_deserializeOpGetServiceEndpoint) HandleDeserialize(ctx con } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetServiceEndpoint(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response, &metadata) } - output := &GetServiceEndpointOutput{} + output := &GetWirelessGatewayTaskOutput{} out.Result = output var buff [1024]byte @@ -3764,7 +7276,7 @@ func (m *awsRestjson1_deserializeOpGetServiceEndpoint) HandleDeserialize(ctx con return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3777,7 +7289,7 @@ func (m *awsRestjson1_deserializeOpGetServiceEndpoint) HandleDeserialize(ctx con return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetServiceEndpoint(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -3824,6 +7336,9 @@ func awsRestjson1_deserializeOpErrorGetServiceEndpoint(response *smithyhttp.Resp case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -3840,7 +7355,7 @@ func awsRestjson1_deserializeOpErrorGetServiceEndpoint(response *smithyhttp.Resp } } -func awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(v **GetServiceEndpointOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(v **GetWirelessGatewayTaskOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -3853,40 +7368,58 @@ func awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(v **GetServiceEn return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetServiceEndpointOutput + var sv *GetWirelessGatewayTaskOutput if *v == nil { - sv = &GetServiceEndpointOutput{} + sv = &GetWirelessGatewayTaskOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "ServerTrust": + case "LastUplinkReceivedAt": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected CertificatePEM to be of type string, got %T instead", value) + return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) } - sv.ServerTrust = ptr.String(jtv) + sv.LastUplinkReceivedAt = ptr.String(jtv) } - case "ServiceEndpoint": + case "Status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected WirelessGatewayTaskStatus to be of type string, got %T instead", value) + } + sv.Status = types.WirelessGatewayTaskStatus(jtv) + } + + case "TaskCreatedAt": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) + } + sv.TaskCreatedAt = ptr.String(jtv) + } + + case "WirelessGatewayId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected EndPoint to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) } - sv.ServiceEndpoint = ptr.String(jtv) + sv.WirelessGatewayId = ptr.String(jtv) } - case "ServiceType": + case "WirelessGatewayTaskDefinitionId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayServiceType to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) } - sv.ServiceType = types.WirelessGatewayServiceType(jtv) + sv.WirelessGatewayTaskDefinitionId = ptr.String(jtv) } default: @@ -3898,14 +7431,14 @@ func awsRestjson1_deserializeOpDocumentGetServiceEndpointOutput(v **GetServiceEn return nil } -type awsRestjson1_deserializeOpGetServiceProfile struct { +type awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition struct { } -func (*awsRestjson1_deserializeOpGetServiceProfile) ID() string { +func (*awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetServiceProfile) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -3919,9 +7452,9 @@ func (m *awsRestjson1_deserializeOpGetServiceProfile) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetServiceProfile(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response, &metadata) } - output := &GetServiceProfileOutput{} + output := &GetWirelessGatewayTaskDefinitionOutput{} out.Result = output var buff [1024]byte @@ -3942,7 +7475,7 @@ func (m *awsRestjson1_deserializeOpGetServiceProfile) HandleDeserialize(ctx cont return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -3955,7 +7488,7 @@ func (m *awsRestjson1_deserializeOpGetServiceProfile) HandleDeserialize(ctx cont return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetServiceProfile(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -4021,7 +7554,7 @@ func awsRestjson1_deserializeOpErrorGetServiceProfile(response *smithyhttp.Respo } } -func awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(v **GetServiceProfileOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(v **GetWirelessGatewayTaskDefinitionOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -4034,9 +7567,9 @@ func awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(v **GetServicePro return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetServiceProfileOutput + var sv *GetWirelessGatewayTaskDefinitionOutput if *v == nil { - sv = &GetServiceProfileOutput{} + sv = &GetWirelessGatewayTaskDefinitionOutput{} } else { sv = *v } @@ -4047,34 +7580,34 @@ func awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(v **GetServicePro if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected ServiceProfileArn to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayTaskDefinitionArn to be of type string, got %T instead", value) } sv.Arn = ptr.String(jtv) } - case "Id": + case "AutoCreateTasks": if value != nil { - jtv, ok := value.(string) + jtv, ok := value.(bool) if !ok { - return fmt.Errorf("expected ServiceProfileId to be of type string, got %T instead", value) + return fmt.Errorf("expected AutoCreateTasks to be of type *bool, got %T instead", value) } - sv.Id = ptr.String(jtv) - } - - case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANGetServiceProfileInfo(&sv.LoRaWAN, value); err != nil { - return err + sv.AutoCreateTasks = jtv } case "Name": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected ServiceProfileName to be of type string, got %T instead", value) + return fmt.Errorf("expected WirelessGatewayTaskName to be of type string, got %T instead", value) } sv.Name = ptr.String(jtv) } + case "Update": + if err := awsRestjson1_deserializeDocumentUpdateWirelessGatewayTaskCreate(&sv.Update, value); err != nil { + return err + } + default: _, _ = key, value @@ -4084,14 +7617,14 @@ func awsRestjson1_deserializeOpDocumentGetServiceProfileOutput(v **GetServicePro return nil } -type awsRestjson1_deserializeOpGetWirelessDevice struct { +type awsRestjson1_deserializeOpListDestinations struct { } -func (*awsRestjson1_deserializeOpGetWirelessDevice) ID() string { +func (*awsRestjson1_deserializeOpListDestinations) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListDestinations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -4105,9 +7638,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessDevice) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessDevice(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListDestinations(response, &metadata) } - output := &GetWirelessDeviceOutput{} + output := &ListDestinationsOutput{} out.Result = output var buff [1024]byte @@ -4128,7 +7661,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessDevice) HandleDeserialize(ctx cont return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListDestinationsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -4141,7 +7674,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessDevice) HandleDeserialize(ctx cont return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListDestinations(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -4188,9 +7721,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessDevice(response *smithyhttp.Respo case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -4207,7 +7737,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessDevice(response *smithyhttp.Respo } } -func awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(v **GetWirelessDeviceOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListDestinationsOutput(v **ListDestinationsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -4220,95 +7750,27 @@ func awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(v **GetWirelessDe return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessDeviceOutput + var sv *ListDestinationsOutput if *v == nil { - sv = &GetWirelessDeviceOutput{} + sv = &ListDestinationsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessDeviceArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "Description": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected Description to be of type string, got %T instead", value) - } - sv.Description = ptr.String(jtv) - } - - case "DestinationName": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DestinationName to be of type string, got %T instead", value) - } - sv.DestinationName = ptr.String(jtv) - } - - case "Id": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) - } - sv.Id = ptr.String(jtv) - } - - case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANDevice(&sv.LoRaWAN, value); err != nil { - return err - } - - case "Name": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessDeviceName to be of type string, got %T instead", value) - } - sv.Name = ptr.String(jtv) - } - - case "Sidewalk": - if err := awsRestjson1_deserializeDocumentSidewalkDevice(&sv.Sidewalk, value); err != nil { + case "DestinationList": + if err := awsRestjson1_deserializeDocumentDestinationList(&sv.DestinationList, value); err != nil { return err } - case "ThingArn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ThingArn to be of type string, got %T instead", value) - } - sv.ThingArn = ptr.String(jtv) - } - - case "ThingName": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ThingName to be of type string, got %T instead", value) - } - sv.ThingName = ptr.String(jtv) - } - - case "Type": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessDeviceType to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.Type = types.WirelessDeviceType(jtv) + sv.NextToken = ptr.String(jtv) } default: @@ -4320,14 +7782,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessDeviceOutput(v **GetWirelessDe return nil } -type awsRestjson1_deserializeOpGetWirelessDeviceStatistics struct { +type awsRestjson1_deserializeOpListDeviceProfiles struct { } -func (*awsRestjson1_deserializeOpGetWirelessDeviceStatistics) ID() string { +func (*awsRestjson1_deserializeOpListDeviceProfiles) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessDeviceStatistics) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListDeviceProfiles) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -4341,9 +7803,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessDeviceStatistics) HandleDeserializ } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListDeviceProfiles(response, &metadata) } - output := &GetWirelessDeviceStatisticsOutput{} + output := &ListDeviceProfilesOutput{} out.Result = output var buff [1024]byte @@ -4364,7 +7826,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessDeviceStatistics) HandleDeserializ return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -4377,7 +7839,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessDeviceStatistics) HandleDeserializ return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListDeviceProfiles(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -4424,9 +7886,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response *smithy case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -4443,7 +7902,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessDeviceStatistics(response *smithy } } -func awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(v **GetWirelessDeviceStatisticsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(v **ListDeviceProfilesOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -4456,41 +7915,27 @@ func awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(v **Get return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessDeviceStatisticsOutput + var sv *ListDeviceProfilesOutput if *v == nil { - sv = &GetWirelessDeviceStatisticsOutput{} + sv = &ListDeviceProfilesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "LastUplinkReceivedAt": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) - } - sv.LastUplinkReceivedAt = ptr.String(jtv) - } - - case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANDeviceMetadata(&sv.LoRaWAN, value); err != nil { - return err - } - - case "Sidewalk": - if err := awsRestjson1_deserializeDocumentSidewalkDeviceMetadata(&sv.Sidewalk, value); err != nil { + case "DeviceProfileList": + if err := awsRestjson1_deserializeDocumentDeviceProfileList(&sv.DeviceProfileList, value); err != nil { return err } - case "WirelessDeviceId": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessDeviceId to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.WirelessDeviceId = ptr.String(jtv) + sv.NextToken = ptr.String(jtv) } default: @@ -4502,14 +7947,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessDeviceStatisticsOutput(v **Get return nil } -type awsRestjson1_deserializeOpGetWirelessGateway struct { +type awsRestjson1_deserializeOpListFuotaTasks struct { } -func (*awsRestjson1_deserializeOpGetWirelessGateway) ID() string { +func (*awsRestjson1_deserializeOpListFuotaTasks) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGateway) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListFuotaTasks) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -4523,9 +7968,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGateway) HandleDeserialize(ctx con } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGateway(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListFuotaTasks(response, &metadata) } - output := &GetWirelessGatewayOutput{} + output := &ListFuotaTasksOutput{} out.Result = output var buff [1024]byte @@ -4546,7 +7991,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGateway) HandleDeserialize(ctx con return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListFuotaTasksOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -4559,7 +8004,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGateway) HandleDeserialize(ctx con return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGateway(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListFuotaTasks(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -4606,9 +8051,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessGateway(response *smithyhttp.Resp case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -4625,85 +8067,40 @@ func awsRestjson1_deserializeOpErrorGetWirelessGateway(response *smithyhttp.Resp } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayOutput(v **GetWirelessGatewayOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListFuotaTasksOutput(v **ListFuotaTasksOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *GetWirelessGatewayOutput - if *v == nil { - sv = &GetWirelessGatewayOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "Description": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected Description to be of type string, got %T instead", value) - } - sv.Description = ptr.String(jtv) - } - - case "Id": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) - } - sv.Id = ptr.String(jtv) - } + if value == nil { + return nil + } - case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANGateway(&sv.LoRaWAN, value); err != nil { - return err - } + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } - case "Name": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayName to be of type string, got %T instead", value) - } - sv.Name = ptr.String(jtv) - } + var sv *ListFuotaTasksOutput + if *v == nil { + sv = &ListFuotaTasksOutput{} + } else { + sv = *v + } - case "ThingArn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ThingArn to be of type string, got %T instead", value) - } - sv.ThingArn = ptr.String(jtv) + for key, value := range shape { + switch key { + case "FuotaTaskList": + if err := awsRestjson1_deserializeDocumentFuotaTaskList(&sv.FuotaTaskList, value); err != nil { + return err } - case "ThingName": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected ThingName to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.ThingName = ptr.String(jtv) + sv.NextToken = ptr.String(jtv) } default: @@ -4715,14 +8112,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayOutput(v **GetWirelessG return nil } -type awsRestjson1_deserializeOpGetWirelessGatewayCertificate struct { +type awsRestjson1_deserializeOpListMulticastGroups struct { } -func (*awsRestjson1_deserializeOpGetWirelessGatewayCertificate) ID() string { +func (*awsRestjson1_deserializeOpListMulticastGroups) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGatewayCertificate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListMulticastGroups) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -4736,9 +8133,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayCertificate) HandleDeserial } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListMulticastGroups(response, &metadata) } - output := &GetWirelessGatewayCertificateOutput{} + output := &ListMulticastGroupsOutput{} out.Result = output var buff [1024]byte @@ -4759,7 +8156,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayCertificate) HandleDeserial return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListMulticastGroupsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -4772,7 +8169,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayCertificate) HandleDeserial return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListMulticastGroups(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -4819,9 +8216,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response *smit case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -4838,7 +8232,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayCertificate(response *smit } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(v **GetWirelessGatewayCertificateOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListMulticastGroupsOutput(v **ListMulticastGroupsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -4851,31 +8245,27 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(v **G return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessGatewayCertificateOutput + var sv *ListMulticastGroupsOutput if *v == nil { - sv = &GetWirelessGatewayCertificateOutput{} + sv = &ListMulticastGroupsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "IotCertificateId": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) - } - sv.IotCertificateId = ptr.String(jtv) + case "MulticastGroupList": + if err := awsRestjson1_deserializeDocumentMulticastGroupList(&sv.MulticastGroupList, value); err != nil { + return err } - case "LoRaWANNetworkServerCertificateId": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected IotCertificateId to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.LoRaWANNetworkServerCertificateId = ptr.String(jtv) + sv.NextToken = ptr.String(jtv) } default: @@ -4887,14 +8277,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayCertificateOutput(v **G return nil } -type awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation struct { +type awsRestjson1_deserializeOpListMulticastGroupsByFuotaTask struct { } -func (*awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) ID() string { +func (*awsRestjson1_deserializeOpListMulticastGroupsByFuotaTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListMulticastGroupsByFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -4908,9 +8298,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) Handle } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayFirmwareInformation(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListMulticastGroupsByFuotaTask(response, &metadata) } - output := &GetWirelessGatewayFirmwareInformationOutput{} + output := &ListMulticastGroupsByFuotaTaskOutput{} out.Result = output var buff [1024]byte @@ -4931,7 +8321,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) Handle return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListMulticastGroupsByFuotaTaskOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -4944,7 +8334,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayFirmwareInformation) Handle return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGatewayFirmwareInformation(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListMulticastGroupsByFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5010,7 +8400,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayFirmwareInformation(respon } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutput(v **GetWirelessGatewayFirmwareInformationOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListMulticastGroupsByFuotaTaskOutput(v **ListMulticastGroupsByFuotaTaskOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5023,20 +8413,29 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutp return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessGatewayFirmwareInformationOutput + var sv *ListMulticastGroupsByFuotaTaskOutput if *v == nil { - sv = &GetWirelessGatewayFirmwareInformationOutput{} + sv = &ListMulticastGroupsByFuotaTaskOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "LoRaWAN": - if err := awsRestjson1_deserializeDocumentLoRaWANGatewayCurrentVersion(&sv.LoRaWAN, value); err != nil { + case "MulticastGroupList": + if err := awsRestjson1_deserializeDocumentMulticastGroupListByFuotaTask(&sv.MulticastGroupList, value); err != nil { return err } + case "NextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + default: _, _ = key, value @@ -5046,14 +8445,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayFirmwareInformationOutp return nil } -type awsRestjson1_deserializeOpGetWirelessGatewayStatistics struct { +type awsRestjson1_deserializeOpListPartnerAccounts struct { } -func (*awsRestjson1_deserializeOpGetWirelessGatewayStatistics) ID() string { +func (*awsRestjson1_deserializeOpListPartnerAccounts) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGatewayStatistics) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListPartnerAccounts) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5067,9 +8466,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayStatistics) HandleDeseriali } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListPartnerAccounts(response, &metadata) } - output := &GetWirelessGatewayStatisticsOutput{} + output := &ListPartnerAccountsOutput{} out.Result = output var buff [1024]byte @@ -5090,7 +8489,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayStatistics) HandleDeseriali return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5103,7 +8502,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayStatistics) HandleDeseriali return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListPartnerAccounts(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5144,9 +8543,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response *smith } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -5169,7 +8565,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayStatistics(response *smith } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(v **GetWirelessGatewayStatisticsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(v **ListPartnerAccountsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5182,40 +8578,27 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(v **Ge return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessGatewayStatisticsOutput + var sv *ListPartnerAccountsOutput if *v == nil { - sv = &GetWirelessGatewayStatisticsOutput{} + sv = &ListPartnerAccountsOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "ConnectionStatus": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ConnectionStatus to be of type string, got %T instead", value) - } - sv.ConnectionStatus = types.ConnectionStatus(jtv) - } - - case "LastUplinkReceivedAt": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.LastUplinkReceivedAt = ptr.String(jtv) + sv.NextToken = ptr.String(jtv) } - case "WirelessGatewayId": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) - } - sv.WirelessGatewayId = ptr.String(jtv) + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkAccountList(&sv.Sidewalk, value); err != nil { + return err } default: @@ -5227,14 +8610,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayStatisticsOutput(v **Ge return nil } -type awsRestjson1_deserializeOpGetWirelessGatewayTask struct { +type awsRestjson1_deserializeOpListServiceProfiles struct { } -func (*awsRestjson1_deserializeOpGetWirelessGatewayTask) ID() string { +func (*awsRestjson1_deserializeOpListServiceProfiles) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGatewayTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListServiceProfiles) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5248,9 +8631,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTask) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListServiceProfiles(response, &metadata) } - output := &GetWirelessGatewayTaskOutput{} + output := &ListServiceProfilesOutput{} out.Result = output var buff [1024]byte @@ -5271,7 +8654,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTask) HandleDeserialize(ctx return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListServiceProfilesOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5284,7 +8667,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTask) HandleDeserialize(ctx return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListServiceProfiles(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5331,9 +8714,6 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response *smithyhttp. case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -5350,7 +8730,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayTask(response *smithyhttp. } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(v **GetWirelessGatewayTaskOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListServiceProfilesOutput(v **ListServiceProfilesOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5363,58 +8743,27 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(v **GetWirel return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessGatewayTaskOutput + var sv *ListServiceProfilesOutput if *v == nil { - sv = &GetWirelessGatewayTaskOutput{} + sv = &ListServiceProfilesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "LastUplinkReceivedAt": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) - } - sv.LastUplinkReceivedAt = ptr.String(jtv) - } - - case "Status": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayTaskStatus to be of type string, got %T instead", value) - } - sv.Status = types.WirelessGatewayTaskStatus(jtv) - } - - case "TaskCreatedAt": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected ISODateTimeString to be of type string, got %T instead", value) - } - sv.TaskCreatedAt = ptr.String(jtv) - } - - case "WirelessGatewayId": + case "NextToken": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected WirelessGatewayId to be of type string, got %T instead", value) + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) } - sv.WirelessGatewayId = ptr.String(jtv) + sv.NextToken = ptr.String(jtv) } - case "WirelessGatewayTaskDefinitionId": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayTaskDefinitionId to be of type string, got %T instead", value) - } - sv.WirelessGatewayTaskDefinitionId = ptr.String(jtv) + case "ServiceProfileList": + if err := awsRestjson1_deserializeDocumentServiceProfileList(&sv.ServiceProfileList, value); err != nil { + return err } default: @@ -5426,14 +8775,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskOutput(v **GetWirel return nil } -type awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition struct { +type awsRestjson1_deserializeOpListTagsForResource struct { } -func (*awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) ID() string { +func (*awsRestjson1_deserializeOpListTagsForResource) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListTagsForResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5447,9 +8796,9 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) HandleDeser } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListTagsForResource(response, &metadata) } - output := &GetWirelessGatewayTaskDefinitionOutput{} + output := &ListTagsForResourceOutput{} out.Result = output var buff [1024]byte @@ -5470,7 +8819,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) HandleDeser return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5483,7 +8832,7 @@ func (m *awsRestjson1_deserializeOpGetWirelessGatewayTaskDefinition) HandleDeser return out, metadata, err } -func awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListTagsForResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5524,8 +8873,8 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response *s } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -5549,7 +8898,7 @@ func awsRestjson1_deserializeOpErrorGetWirelessGatewayTaskDefinition(response *s } } -func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(v **GetWirelessGatewayTaskDefinitionOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsForResourceOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5562,44 +8911,17 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(v return fmt.Errorf("unexpected JSON type %v", value) } - var sv *GetWirelessGatewayTaskDefinitionOutput + var sv *ListTagsForResourceOutput if *v == nil { - sv = &GetWirelessGatewayTaskDefinitionOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "Arn": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayTaskDefinitionArn to be of type string, got %T instead", value) - } - sv.Arn = ptr.String(jtv) - } - - case "AutoCreateTasks": - if value != nil { - jtv, ok := value.(bool) - if !ok { - return fmt.Errorf("expected AutoCreateTasks to be of type *bool, got %T instead", value) - } - sv.AutoCreateTasks = jtv - } - - case "Name": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected WirelessGatewayTaskName to be of type string, got %T instead", value) - } - sv.Name = ptr.String(jtv) - } + sv = &ListTagsForResourceOutput{} + } else { + sv = *v + } - case "Update": - if err := awsRestjson1_deserializeDocumentUpdateWirelessGatewayTaskCreate(&sv.Update, value); err != nil { + for key, value := range shape { + switch key { + case "Tags": + if err := awsRestjson1_deserializeDocumentTagList(&sv.Tags, value); err != nil { return err } @@ -5612,14 +8934,14 @@ func awsRestjson1_deserializeOpDocumentGetWirelessGatewayTaskDefinitionOutput(v return nil } -type awsRestjson1_deserializeOpListDestinations struct { +type awsRestjson1_deserializeOpListWirelessDevices struct { } -func (*awsRestjson1_deserializeOpListDestinations) ID() string { +func (*awsRestjson1_deserializeOpListWirelessDevices) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListDestinations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListWirelessDevices) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5633,9 +8955,9 @@ func (m *awsRestjson1_deserializeOpListDestinations) HandleDeserialize(ctx conte } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListDestinations(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListWirelessDevices(response, &metadata) } - output := &ListDestinationsOutput{} + output := &ListWirelessDevicesOutput{} out.Result = output var buff [1024]byte @@ -5656,7 +8978,7 @@ func (m *awsRestjson1_deserializeOpListDestinations) HandleDeserialize(ctx conte return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListDestinationsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5669,7 +8991,7 @@ func (m *awsRestjson1_deserializeOpListDestinations) HandleDeserialize(ctx conte return out, metadata, err } -func awsRestjson1_deserializeOpErrorListDestinations(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListWirelessDevices(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5732,7 +9054,7 @@ func awsRestjson1_deserializeOpErrorListDestinations(response *smithyhttp.Respon } } -func awsRestjson1_deserializeOpDocumentListDestinationsOutput(v **ListDestinationsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(v **ListWirelessDevicesOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5745,20 +9067,15 @@ func awsRestjson1_deserializeOpDocumentListDestinationsOutput(v **ListDestinatio return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListDestinationsOutput + var sv *ListWirelessDevicesOutput if *v == nil { - sv = &ListDestinationsOutput{} + sv = &ListWirelessDevicesOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "DestinationList": - if err := awsRestjson1_deserializeDocumentDestinationList(&sv.DestinationList, value); err != nil { - return err - } - case "NextToken": if value != nil { jtv, ok := value.(string) @@ -5768,6 +9085,11 @@ func awsRestjson1_deserializeOpDocumentListDestinationsOutput(v **ListDestinatio sv.NextToken = ptr.String(jtv) } + case "WirelessDeviceList": + if err := awsRestjson1_deserializeDocumentWirelessDeviceStatisticsList(&sv.WirelessDeviceList, value); err != nil { + return err + } + default: _, _ = key, value @@ -5777,14 +9099,14 @@ func awsRestjson1_deserializeOpDocumentListDestinationsOutput(v **ListDestinatio return nil } -type awsRestjson1_deserializeOpListDeviceProfiles struct { +type awsRestjson1_deserializeOpListWirelessGateways struct { } -func (*awsRestjson1_deserializeOpListDeviceProfiles) ID() string { +func (*awsRestjson1_deserializeOpListWirelessGateways) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListDeviceProfiles) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListWirelessGateways) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5798,9 +9120,9 @@ func (m *awsRestjson1_deserializeOpListDeviceProfiles) HandleDeserialize(ctx con } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListDeviceProfiles(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListWirelessGateways(response, &metadata) } - output := &ListDeviceProfilesOutput{} + output := &ListWirelessGatewaysOutput{} out.Result = output var buff [1024]byte @@ -5821,7 +9143,7 @@ func (m *awsRestjson1_deserializeOpListDeviceProfiles) HandleDeserialize(ctx con return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5834,7 +9156,7 @@ func (m *awsRestjson1_deserializeOpListDeviceProfiles) HandleDeserialize(ctx con return out, metadata, err } -func awsRestjson1_deserializeOpErrorListDeviceProfiles(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListWirelessGateways(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -5897,7 +9219,7 @@ func awsRestjson1_deserializeOpErrorListDeviceProfiles(response *smithyhttp.Resp } } -func awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(v **ListDeviceProfilesOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(v **ListWirelessGatewaysOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -5910,20 +9232,15 @@ func awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(v **ListDevicePr return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListDeviceProfilesOutput + var sv *ListWirelessGatewaysOutput if *v == nil { - sv = &ListDeviceProfilesOutput{} + sv = &ListWirelessGatewaysOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "DeviceProfileList": - if err := awsRestjson1_deserializeDocumentDeviceProfileList(&sv.DeviceProfileList, value); err != nil { - return err - } - case "NextToken": if value != nil { jtv, ok := value.(string) @@ -5933,6 +9250,11 @@ func awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(v **ListDevicePr sv.NextToken = ptr.String(jtv) } + case "WirelessGatewayList": + if err := awsRestjson1_deserializeDocumentWirelessGatewayStatisticsList(&sv.WirelessGatewayList, value); err != nil { + return err + } + default: _, _ = key, value @@ -5942,14 +9264,14 @@ func awsRestjson1_deserializeOpDocumentListDeviceProfilesOutput(v **ListDevicePr return nil } -type awsRestjson1_deserializeOpListPartnerAccounts struct { +type awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions struct { } -func (*awsRestjson1_deserializeOpListPartnerAccounts) ID() string { +func (*awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListPartnerAccounts) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -5963,9 +9285,9 @@ func (m *awsRestjson1_deserializeOpListPartnerAccounts) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListPartnerAccounts(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response, &metadata) } - output := &ListPartnerAccountsOutput{} + output := &ListWirelessGatewayTaskDefinitionsOutput{} out.Result = output var buff [1024]byte @@ -5986,7 +9308,7 @@ func (m *awsRestjson1_deserializeOpListPartnerAccounts) HandleDeserialize(ctx co return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentListWirelessGatewayTaskDefinitionsOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -5999,7 +9321,7 @@ func (m *awsRestjson1_deserializeOpListPartnerAccounts) HandleDeserialize(ctx co return out, metadata, err } -func awsRestjson1_deserializeOpErrorListPartnerAccounts(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6040,12 +9362,12 @@ func awsRestjson1_deserializeOpErrorListPartnerAccounts(response *smithyhttp.Res } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -6062,7 +9384,7 @@ func awsRestjson1_deserializeOpErrorListPartnerAccounts(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(v **ListPartnerAccountsOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentListWirelessGatewayTaskDefinitionsOutput(v **ListWirelessGatewayTaskDefinitionsOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -6075,9 +9397,9 @@ func awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(v **ListPartner return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListPartnerAccountsOutput + var sv *ListWirelessGatewayTaskDefinitionsOutput if *v == nil { - sv = &ListPartnerAccountsOutput{} + sv = &ListWirelessGatewayTaskDefinitionsOutput{} } else { sv = *v } @@ -6093,8 +9415,8 @@ func awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(v **ListPartner sv.NextToken = ptr.String(jtv) } - case "Sidewalk": - if err := awsRestjson1_deserializeDocumentSidewalkAccountList(&sv.Sidewalk, value); err != nil { + case "TaskDefinitions": + if err := awsRestjson1_deserializeDocumentWirelessGatewayTaskDefinitionList(&sv.TaskDefinitions, value); err != nil { return err } @@ -6107,14 +9429,14 @@ func awsRestjson1_deserializeOpDocumentListPartnerAccountsOutput(v **ListPartner return nil } -type awsRestjson1_deserializeOpListServiceProfiles struct { +type awsRestjson1_deserializeOpPutResourceLogLevel struct { } -func (*awsRestjson1_deserializeOpListServiceProfiles) ID() string { +func (*awsRestjson1_deserializeOpPutResourceLogLevel) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListServiceProfiles) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpPutResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6128,43 +9450,110 @@ func (m *awsRestjson1_deserializeOpListServiceProfiles) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListServiceProfiles(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorPutResourceLogLevel(response, &metadata) } - output := &ListServiceProfilesOutput{} + output := &PutResourceLogLevelOutput{} out.Result = output + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorPutResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + var buff [1024]byte ringBuffer := smithyio.NewRingBuffer(buff[:]) - body := io.TeeReader(response.Body, ringBuffer) - + body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) err = &smithy.DeserializationError{ Err: fmt.Errorf("failed to decode response body, %w", err), Snapshot: snapshot.Bytes(), } - return out, metadata, err + return err } - err = awsRestjson1_deserializeOpDocumentListServiceProfilesOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, } + return genericError + + } +} + +type awsRestjson1_deserializeOpResetAllResourceLogLevels struct { +} + +func (*awsRestjson1_deserializeOpResetAllResourceLogLevels) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpResetAllResourceLogLevels) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response, &metadata) } + output := &ResetAllResourceLogLevelsOutput{} + out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorListServiceProfiles(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6211,6 +9600,9 @@ func awsRestjson1_deserializeOpErrorListServiceProfiles(response *smithyhttp.Res case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -6227,59 +9619,14 @@ func awsRestjson1_deserializeOpErrorListServiceProfiles(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentListServiceProfilesOutput(v **ListServiceProfilesOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *ListServiceProfilesOutput - if *v == nil { - sv = &ListServiceProfilesOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "NextToken": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) - } - sv.NextToken = ptr.String(jtv) - } - - case "ServiceProfileList": - if err := awsRestjson1_deserializeDocumentServiceProfileList(&sv.ServiceProfileList, value); err != nil { - return err - } - - default: - _, _ = key, value - - } - } - *v = sv - return nil -} - -type awsRestjson1_deserializeOpListTagsForResource struct { +type awsRestjson1_deserializeOpResetResourceLogLevel struct { } -func (*awsRestjson1_deserializeOpListTagsForResource) ID() string { +func (*awsRestjson1_deserializeOpResetResourceLogLevel) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListTagsForResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpResetResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6293,43 +9640,15 @@ func (m *awsRestjson1_deserializeOpListTagsForResource) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListTagsForResource(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorResetResourceLogLevel(response, &metadata) } - output := &ListTagsForResourceOutput{} + output := &ResetResourceLogLevelOutput{} out.Result = output - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) - - body := io.TeeReader(response.Body, ringBuffer) - - decoder := json.NewDecoder(body) - decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return out, metadata, err - } - - err = awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), - } - } - return out, metadata, err } -func awsRestjson1_deserializeOpErrorListTagsForResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorResetResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6370,8 +9689,8 @@ func awsRestjson1_deserializeOpErrorListTagsForResource(response *smithyhttp.Res } switch { - case strings.EqualFold("ConflictException", errorCode): - return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -6395,50 +9714,14 @@ func awsRestjson1_deserializeOpErrorListTagsForResource(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsForResourceOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *ListTagsForResourceOutput - if *v == nil { - sv = &ListTagsForResourceOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "Tags": - if err := awsRestjson1_deserializeDocumentTagList(&sv.Tags, value); err != nil { - return err - } - - default: - _, _ = key, value - - } - } - *v = sv - return nil -} - -type awsRestjson1_deserializeOpListWirelessDevices struct { +type awsRestjson1_deserializeOpSendDataToMulticastGroup struct { } -func (*awsRestjson1_deserializeOpListWirelessDevices) ID() string { +func (*awsRestjson1_deserializeOpSendDataToMulticastGroup) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListWirelessDevices) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpSendDataToMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6452,9 +9735,9 @@ func (m *awsRestjson1_deserializeOpListWirelessDevices) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListWirelessDevices(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorSendDataToMulticastGroup(response, &metadata) } - output := &ListWirelessDevicesOutput{} + output := &SendDataToMulticastGroupOutput{} out.Result = output var buff [1024]byte @@ -6475,7 +9758,7 @@ func (m *awsRestjson1_deserializeOpListWirelessDevices) HandleDeserialize(ctx co return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentSendDataToMulticastGroupOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -6488,7 +9771,7 @@ func (m *awsRestjson1_deserializeOpListWirelessDevices) HandleDeserialize(ctx co return out, metadata, err } -func awsRestjson1_deserializeOpErrorListWirelessDevices(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorSendDataToMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6532,9 +9815,15 @@ func awsRestjson1_deserializeOpErrorListWirelessDevices(response *smithyhttp.Res case strings.EqualFold("AccessDeniedException", errorCode): return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -6551,7 +9840,7 @@ func awsRestjson1_deserializeOpErrorListWirelessDevices(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(v **ListWirelessDevicesOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentSendDataToMulticastGroupOutput(v **SendDataToMulticastGroupOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -6564,27 +9853,22 @@ func awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(v **ListWireles return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListWirelessDevicesOutput + var sv *SendDataToMulticastGroupOutput if *v == nil { - sv = &ListWirelessDevicesOutput{} + sv = &SendDataToMulticastGroupOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "NextToken": + case "MessageId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + return fmt.Errorf("expected MulticastGroupMessageId to be of type string, got %T instead", value) } - sv.NextToken = ptr.String(jtv) - } - - case "WirelessDeviceList": - if err := awsRestjson1_deserializeDocumentWirelessDeviceStatisticsList(&sv.WirelessDeviceList, value); err != nil { - return err + sv.MessageId = ptr.String(jtv) } default: @@ -6596,14 +9880,14 @@ func awsRestjson1_deserializeOpDocumentListWirelessDevicesOutput(v **ListWireles return nil } -type awsRestjson1_deserializeOpListWirelessGateways struct { +type awsRestjson1_deserializeOpSendDataToWirelessDevice struct { } -func (*awsRestjson1_deserializeOpListWirelessGateways) ID() string { +func (*awsRestjson1_deserializeOpSendDataToWirelessDevice) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListWirelessGateways) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpSendDataToWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6617,9 +9901,9 @@ func (m *awsRestjson1_deserializeOpListWirelessGateways) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListWirelessGateways(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorSendDataToWirelessDevice(response, &metadata) } - output := &ListWirelessGatewaysOutput{} + output := &SendDataToWirelessDeviceOutput{} out.Result = output var buff [1024]byte @@ -6640,7 +9924,7 @@ func (m *awsRestjson1_deserializeOpListWirelessGateways) HandleDeserialize(ctx c return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -6653,7 +9937,7 @@ func (m *awsRestjson1_deserializeOpListWirelessGateways) HandleDeserialize(ctx c return out, metadata, err } -func awsRestjson1_deserializeOpErrorListWirelessGateways(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorSendDataToWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6694,12 +9978,12 @@ func awsRestjson1_deserializeOpErrorListWirelessGateways(response *smithyhttp.Re } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -6716,7 +10000,7 @@ func awsRestjson1_deserializeOpErrorListWirelessGateways(response *smithyhttp.Re } } -func awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(v **ListWirelessGatewaysOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(v **SendDataToWirelessDeviceOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -6729,27 +10013,22 @@ func awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(v **ListWirele return fmt.Errorf("unexpected JSON type %v", value) } - var sv *ListWirelessGatewaysOutput + var sv *SendDataToWirelessDeviceOutput if *v == nil { - sv = &ListWirelessGatewaysOutput{} + sv = &SendDataToWirelessDeviceOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "NextToken": + case "MessageId": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + return fmt.Errorf("expected MessageId to be of type string, got %T instead", value) } - sv.NextToken = ptr.String(jtv) - } - - case "WirelessGatewayList": - if err := awsRestjson1_deserializeDocumentWirelessGatewayStatisticsList(&sv.WirelessGatewayList, value); err != nil { - return err + sv.MessageId = ptr.String(jtv) } default: @@ -6761,14 +10040,14 @@ func awsRestjson1_deserializeOpDocumentListWirelessGatewaysOutput(v **ListWirele return nil } -type awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions struct { +type awsRestjson1_deserializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup struct { } -func (*awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions) ID() string { +func (*awsRestjson1_deserializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6782,43 +10061,15 @@ func (m *awsRestjson1_deserializeOpListWirelessGatewayTaskDefinitions) HandleDes } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorStartBulkAssociateWirelessDeviceWithMulticastGroup(response, &metadata) } - output := &ListWirelessGatewayTaskDefinitionsOutput{} + output := &StartBulkAssociateWirelessDeviceWithMulticastGroupOutput{} out.Result = output - var buff [1024]byte - ringBuffer := smithyio.NewRingBuffer(buff[:]) - - body := io.TeeReader(response.Body, ringBuffer) - - decoder := json.NewDecoder(body) - decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - err = &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body, %w", err), - Snapshot: snapshot.Bytes(), - } - return out, metadata, err - } - - err = awsRestjson1_deserializeOpDocumentListWirelessGatewayTaskDefinitionsOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), - } - } - return out, metadata, err } -func awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorStartBulkAssociateWirelessDeviceWithMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6865,6 +10116,9 @@ func awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -6881,59 +10135,109 @@ func awsRestjson1_deserializeOpErrorListWirelessGatewayTaskDefinitions(response } } -func awsRestjson1_deserializeOpDocumentListWirelessGatewayTaskDefinitionsOutput(v **ListWirelessGatewayTaskDefinitionsOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil +type awsRestjson1_deserializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup struct { +} + +func (*awsRestjson1_deserializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err } - shape, ok := value.(map[string]interface{}) + response, ok := out.RawResponse.(*smithyhttp.Response) if !ok { - return fmt.Errorf("unexpected JSON type %v", value) + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} } - var sv *ListWirelessGatewayTaskDefinitionsOutput - if *v == nil { - sv = &ListWirelessGatewayTaskDefinitionsOutput{} - } else { - sv = *v + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorStartBulkDisassociateWirelessDeviceFromMulticastGroup(response, &metadata) } + output := &StartBulkDisassociateWirelessDeviceFromMulticastGroupOutput{} + out.Result = output - for key, value := range shape { - switch key { - case "NextToken": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) - } - sv.NextToken = ptr.String(jtv) - } + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorStartBulkDisassociateWirelessDeviceFromMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - case "TaskDefinitions": - if err := awsRestjson1_deserializeDocumentWirelessGatewayTaskDefinitionList(&sv.TaskDefinitions, value); err != nil { - return err - } + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) - default: - _, _ = key, value + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, } + return genericError + } - *v = sv - return nil } -type awsRestjson1_deserializeOpPutResourceLogLevel struct { +type awsRestjson1_deserializeOpStartFuotaTask struct { } -func (*awsRestjson1_deserializeOpPutResourceLogLevel) ID() string { +func (*awsRestjson1_deserializeOpStartFuotaTask) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpPutResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpStartFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -6947,15 +10251,15 @@ func (m *awsRestjson1_deserializeOpPutResourceLogLevel) HandleDeserialize(ctx co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorPutResourceLogLevel(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorStartFuotaTask(response, &metadata) } - output := &PutResourceLogLevelOutput{} + output := &StartFuotaTaskOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorPutResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorStartFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -6999,6 +10303,9 @@ func awsRestjson1_deserializeOpErrorPutResourceLogLevel(response *smithyhttp.Res case strings.EqualFold("AccessDeniedException", errorCode): return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7021,14 +10328,14 @@ func awsRestjson1_deserializeOpErrorPutResourceLogLevel(response *smithyhttp.Res } } -type awsRestjson1_deserializeOpResetAllResourceLogLevels struct { +type awsRestjson1_deserializeOpStartMulticastGroupSession struct { } -func (*awsRestjson1_deserializeOpResetAllResourceLogLevels) ID() string { +func (*awsRestjson1_deserializeOpStartMulticastGroupSession) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpResetAllResourceLogLevels) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpStartMulticastGroupSession) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7042,15 +10349,15 @@ func (m *awsRestjson1_deserializeOpResetAllResourceLogLevels) HandleDeserialize( } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorStartMulticastGroupSession(response, &metadata) } - output := &ResetAllResourceLogLevelsOutput{} + output := &StartMulticastGroupSessionOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorStartMulticastGroupSession(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7094,6 +10401,9 @@ func awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response *smithyht case strings.EqualFold("AccessDeniedException", errorCode): return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7116,14 +10426,14 @@ func awsRestjson1_deserializeOpErrorResetAllResourceLogLevels(response *smithyht } } -type awsRestjson1_deserializeOpResetResourceLogLevel struct { +type awsRestjson1_deserializeOpTagResource struct { } -func (*awsRestjson1_deserializeOpResetResourceLogLevel) ID() string { +func (*awsRestjson1_deserializeOpTagResource) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpResetResourceLogLevel) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpTagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7137,15 +10447,15 @@ func (m *awsRestjson1_deserializeOpResetResourceLogLevel) HandleDeserialize(ctx } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorResetResourceLogLevel(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorTagResource(response, &metadata) } - output := &ResetResourceLogLevelOutput{} + output := &TagResourceOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorResetResourceLogLevel(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorTagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7186,8 +10496,8 @@ func awsRestjson1_deserializeOpErrorResetResourceLogLevel(response *smithyhttp.R } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7198,6 +10508,9 @@ func awsRestjson1_deserializeOpErrorResetResourceLogLevel(response *smithyhttp.R case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + case strings.EqualFold("TooManyTagsException", errorCode): + return awsRestjson1_deserializeErrorTooManyTagsException(response, errorBody) + case strings.EqualFold("ValidationException", errorCode): return awsRestjson1_deserializeErrorValidationException(response, errorBody) @@ -7211,14 +10524,14 @@ func awsRestjson1_deserializeOpErrorResetResourceLogLevel(response *smithyhttp.R } } -type awsRestjson1_deserializeOpSendDataToWirelessDevice struct { +type awsRestjson1_deserializeOpTestWirelessDevice struct { } -func (*awsRestjson1_deserializeOpSendDataToWirelessDevice) ID() string { +func (*awsRestjson1_deserializeOpTestWirelessDevice) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpSendDataToWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpTestWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7232,9 +10545,9 @@ func (m *awsRestjson1_deserializeOpSendDataToWirelessDevice) HandleDeserialize(c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorSendDataToWirelessDevice(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorTestWirelessDevice(response, &metadata) } - output := &SendDataToWirelessDeviceOutput{} + output := &TestWirelessDeviceOutput{} out.Result = output var buff [1024]byte @@ -7255,7 +10568,7 @@ func (m *awsRestjson1_deserializeOpSendDataToWirelessDevice) HandleDeserialize(c return out, metadata, err } - err = awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(&output, shape) + err = awsRestjson1_deserializeOpDocumentTestWirelessDeviceOutput(&output, shape) if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) @@ -7268,7 +10581,7 @@ func (m *awsRestjson1_deserializeOpSendDataToWirelessDevice) HandleDeserialize(c return out, metadata, err } -func awsRestjson1_deserializeOpErrorSendDataToWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorTestWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7331,7 +10644,7 @@ func awsRestjson1_deserializeOpErrorSendDataToWirelessDevice(response *smithyhtt } } -func awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(v **SendDataToWirelessDeviceOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentTestWirelessDeviceOutput(v **TestWirelessDeviceOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -7344,22 +10657,22 @@ func awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(v **SendDa return fmt.Errorf("unexpected JSON type %v", value) } - var sv *SendDataToWirelessDeviceOutput + var sv *TestWirelessDeviceOutput if *v == nil { - sv = &SendDataToWirelessDeviceOutput{} + sv = &TestWirelessDeviceOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "MessageId": + case "Result": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected MessageId to be of type string, got %T instead", value) + return fmt.Errorf("expected Result to be of type string, got %T instead", value) } - sv.MessageId = ptr.String(jtv) + sv.Result = ptr.String(jtv) } default: @@ -7371,14 +10684,14 @@ func awsRestjson1_deserializeOpDocumentSendDataToWirelessDeviceOutput(v **SendDa return nil } -type awsRestjson1_deserializeOpTagResource struct { +type awsRestjson1_deserializeOpUntagResource struct { } -func (*awsRestjson1_deserializeOpTagResource) ID() string { +func (*awsRestjson1_deserializeOpUntagResource) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpTagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUntagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7392,15 +10705,15 @@ func (m *awsRestjson1_deserializeOpTagResource) HandleDeserialize(ctx context.Co } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorTagResource(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUntagResource(response, &metadata) } - output := &TagResourceOutput{} + output := &UntagResourceOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorTagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUntagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7453,9 +10766,6 @@ func awsRestjson1_deserializeOpErrorTagResource(response *smithyhttp.Response, m case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) - case strings.EqualFold("TooManyTagsException", errorCode): - return awsRestjson1_deserializeErrorTooManyTagsException(response, errorBody) - case strings.EqualFold("ValidationException", errorCode): return awsRestjson1_deserializeErrorValidationException(response, errorBody) @@ -7469,14 +10779,14 @@ func awsRestjson1_deserializeOpErrorTagResource(response *smithyhttp.Response, m } } -type awsRestjson1_deserializeOpTestWirelessDevice struct { +type awsRestjson1_deserializeOpUpdateDestination struct { } -func (*awsRestjson1_deserializeOpTestWirelessDevice) ID() string { +func (*awsRestjson1_deserializeOpUpdateDestination) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpTestWirelessDevice) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7490,43 +10800,110 @@ func (m *awsRestjson1_deserializeOpTestWirelessDevice) HandleDeserialize(ctx con } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorTestWirelessDevice(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateDestination(response, &metadata) } - output := &TestWirelessDeviceOutput{} + output := &UpdateDestinationOutput{} out.Result = output + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + var buff [1024]byte ringBuffer := smithyio.NewRingBuffer(buff[:]) - body := io.TeeReader(response.Body, ringBuffer) - + body := io.TeeReader(errorBody, ringBuffer) decoder := json.NewDecoder(body) decoder.UseNumber() - var shape interface{} - if err := decoder.Decode(&shape); err != nil && err != io.EOF { + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { var snapshot bytes.Buffer io.Copy(&snapshot, ringBuffer) err = &smithy.DeserializationError{ Err: fmt.Errorf("failed to decode response body, %w", err), Snapshot: snapshot.Bytes(), } - return out, metadata, err + return err } - err = awsRestjson1_deserializeOpDocumentTestWirelessDeviceOutput(&output, shape) - if err != nil { - var snapshot bytes.Buffer - io.Copy(&snapshot, ringBuffer) - return out, metadata, &smithy.DeserializationError{ - Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), - Snapshot: snapshot.Bytes(), + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, } + return genericError + + } +} + +type awsRestjson1_deserializeOpUpdateFuotaTask struct { +} + +func (*awsRestjson1_deserializeOpUpdateFuotaTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateFuotaTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUpdateFuotaTask(response, &metadata) } + output := &UpdateFuotaTaskOutput{} + out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorTestWirelessDevice(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateFuotaTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7567,6 +10944,12 @@ func awsRestjson1_deserializeOpErrorTestWirelessDevice(response *smithyhttp.Resp } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7589,54 +10972,14 @@ func awsRestjson1_deserializeOpErrorTestWirelessDevice(response *smithyhttp.Resp } } -func awsRestjson1_deserializeOpDocumentTestWirelessDeviceOutput(v **TestWirelessDeviceOutput, value interface{}) error { - if v == nil { - return fmt.Errorf("unexpected nil of type %T", v) - } - if value == nil { - return nil - } - - shape, ok := value.(map[string]interface{}) - if !ok { - return fmt.Errorf("unexpected JSON type %v", value) - } - - var sv *TestWirelessDeviceOutput - if *v == nil { - sv = &TestWirelessDeviceOutput{} - } else { - sv = *v - } - - for key, value := range shape { - switch key { - case "Result": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected Result to be of type string, got %T instead", value) - } - sv.Result = ptr.String(jtv) - } - - default: - _, _ = key, value - - } - } - *v = sv - return nil -} - -type awsRestjson1_deserializeOpUntagResource struct { +type awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes struct { } -func (*awsRestjson1_deserializeOpUntagResource) ID() string { +func (*awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUntagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7650,15 +10993,15 @@ func (m *awsRestjson1_deserializeOpUntagResource) HandleDeserialize(ctx context. } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUntagResource(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response, &metadata) } - output := &UntagResourceOutput{} + output := &UpdateLogLevelsByResourceTypesOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorUntagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7699,6 +11042,9 @@ func awsRestjson1_deserializeOpErrorUntagResource(response *smithyhttp.Response, } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): return awsRestjson1_deserializeErrorConflictException(response, errorBody) @@ -7724,14 +11070,14 @@ func awsRestjson1_deserializeOpErrorUntagResource(response *smithyhttp.Response, } } -type awsRestjson1_deserializeOpUpdateDestination struct { +type awsRestjson1_deserializeOpUpdateMulticastGroup struct { } -func (*awsRestjson1_deserializeOpUpdateDestination) ID() string { +func (*awsRestjson1_deserializeOpUpdateMulticastGroup) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateDestination) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateMulticastGroup) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7745,15 +11091,15 @@ func (m *awsRestjson1_deserializeOpUpdateDestination) HandleDeserialize(ctx cont } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateDestination(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateMulticastGroup(response, &metadata) } - output := &UpdateDestinationOutput{} + output := &UpdateMulticastGroupOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateDestination(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateMulticastGroup(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7797,6 +11143,9 @@ func awsRestjson1_deserializeOpErrorUpdateDestination(response *smithyhttp.Respo case strings.EqualFold("AccessDeniedException", errorCode): return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7819,14 +11168,14 @@ func awsRestjson1_deserializeOpErrorUpdateDestination(response *smithyhttp.Respo } } -type awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes struct { +type awsRestjson1_deserializeOpUpdatePartnerAccount struct { } -func (*awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes) ID() string { +func (*awsRestjson1_deserializeOpUpdatePartnerAccount) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdatePartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7840,15 +11189,15 @@ func (m *awsRestjson1_deserializeOpUpdateLogLevelsByResourceTypes) HandleDeseria } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdatePartnerAccount(response, &metadata) } - output := &UpdateLogLevelsByResourceTypesOutput{} + output := &UpdatePartnerAccountOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdatePartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7889,12 +11238,6 @@ func awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response *smi } switch { - case strings.EqualFold("AccessDeniedException", errorCode): - return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) - - case strings.EqualFold("ConflictException", errorCode): - return awsRestjson1_deserializeErrorConflictException(response, errorBody) - case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -7917,14 +11260,14 @@ func awsRestjson1_deserializeOpErrorUpdateLogLevelsByResourceTypes(response *smi } } -type awsRestjson1_deserializeOpUpdatePartnerAccount struct { +type awsRestjson1_deserializeOpUpdateResourceEventConfiguration struct { } -func (*awsRestjson1_deserializeOpUpdatePartnerAccount) ID() string { +func (*awsRestjson1_deserializeOpUpdateResourceEventConfiguration) ID() string { return "OperationDeserializer" } -func (m *awsRestjson1_deserializeOpUpdatePartnerAccount) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( +func (m *awsRestjson1_deserializeOpUpdateResourceEventConfiguration) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( out middleware.DeserializeOutput, metadata middleware.Metadata, err error, ) { out, metadata, err = next.HandleDeserialize(ctx, in) @@ -7938,15 +11281,15 @@ func (m *awsRestjson1_deserializeOpUpdatePartnerAccount) HandleDeserialize(ctx c } if response.StatusCode < 200 || response.StatusCode >= 300 { - return out, metadata, awsRestjson1_deserializeOpErrorUpdatePartnerAccount(response, &metadata) + return out, metadata, awsRestjson1_deserializeOpErrorUpdateResourceEventConfiguration(response, &metadata) } - output := &UpdatePartnerAccountOutput{} + output := &UpdateResourceEventConfigurationOutput{} out.Result = output return out, metadata, err } -func awsRestjson1_deserializeOpErrorUpdatePartnerAccount(response *smithyhttp.Response, metadata *middleware.Metadata) error { +func awsRestjson1_deserializeOpErrorUpdateResourceEventConfiguration(response *smithyhttp.Response, metadata *middleware.Metadata) error { var errorBuffer bytes.Buffer if _, err := io.Copy(&errorBuffer, response.Body); err != nil { return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} @@ -7987,6 +11330,12 @@ func awsRestjson1_deserializeOpErrorUpdatePartnerAccount(response *smithyhttp.Re } switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + case strings.EqualFold("InternalServerException", errorCode): return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) @@ -8933,6 +12282,42 @@ func awsRestjson1_deserializeDocumentDeviceProfileList(v *[]types.DeviceProfile, return nil } +func awsRestjson1_deserializeDocumentDeviceRegistrationStateEventConfiguration(v **types.DeviceRegistrationStateEventConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeviceRegistrationStateEventConfiguration + if *v == nil { + sv = &types.DeviceRegistrationStateEventConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkEventNotificationConfigurations(&sv.Sidewalk, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentFactoryPresetFreqsList(v *[]int32, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -8973,6 +12358,168 @@ func awsRestjson1_deserializeDocumentFactoryPresetFreqsList(v *[]int32, value in return nil } +func awsRestjson1_deserializeDocumentFPorts(v **types.FPorts, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FPorts + if *v == nil { + sv = &types.FPorts{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ClockSync": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected FPort to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ClockSync = ptr.Int32(int32(i64)) + } + + case "Fuota": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected FPort to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Fuota = ptr.Int32(int32(i64)) + } + + case "Multicast": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected FPort to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Multicast = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentFuotaTask(v **types.FuotaTask, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FuotaTask + if *v == nil { + sv = &types.FuotaTask{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaTaskName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentFuotaTaskList(v *[]types.FuotaTask, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.FuotaTask + if *v == nil { + cv = []types.FuotaTask{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.FuotaTask + destAddr := &col + if err := awsRestjson1_deserializeDocumentFuotaTask(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentInternalServerException(v **types.InternalServerException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -9131,6 +12678,11 @@ func awsRestjson1_deserializeDocumentLoRaWANDevice(v **types.LoRaWANDevice, valu sv.DeviceProfileId = ptr.String(jtv) } + case "FPorts": + if err := awsRestjson1_deserializeDocumentFPorts(&sv.FPorts, value); err != nil { + return err + } + case "OtaaV1_0_x": if err := awsRestjson1_deserializeDocumentOtaaV1_0_x(&sv.OtaaV1_0_x, value); err != nil { return err @@ -9467,22 +13019,75 @@ func awsRestjson1_deserializeDocumentLoRaWANDeviceProfile(v **types.LoRaWANDevic sv.SupportsClassB = jtv } - case "SupportsClassC": + case "SupportsClassC": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected SupportsClassC to be of type *bool, got %T instead", value) + } + sv.SupportsClassC = jtv + } + + case "SupportsJoin": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected SupportsJoin to be of type *bool, got %T instead", value) + } + sv.SupportsJoin = ptr.Bool(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLoRaWANFuotaTaskGetInfo(v **types.LoRaWANFuotaTaskGetInfo, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoRaWANFuotaTaskGetInfo + if *v == nil { + sv = &types.LoRaWANFuotaTaskGetInfo{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "RfRegion": if value != nil { - jtv, ok := value.(bool) + jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected SupportsClassC to be of type *bool, got %T instead", value) + return fmt.Errorf("expected RfRegion to be of type string, got %T instead", value) } - sv.SupportsClassC = jtv + sv.RfRegion = ptr.String(jtv) } - case "SupportsJoin": + case "StartTime": if value != nil { - jtv, ok := value.(bool) + jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected SupportsJoin to be of type *bool, got %T instead", value) + return fmt.Errorf("expected StartTime to be of type string, got %T instead", value) } - sv.SupportsJoin = ptr.Bool(jtv) + t, err := smithytime.ParseDateTime(jtv) + if err != nil { + return err + } + sv.StartTime = ptr.Time(t) } default: @@ -9988,39 +13593,300 @@ func awsRestjson1_deserializeDocumentLoRaWANGetServiceProfileInfo(v **types.LoRa sv.TargetPer = int32(i64) } - case "UlBucketSize": - if value != nil { - jtv, ok := value.(json.Number) - if !ok { - return fmt.Errorf("expected UlBucketSize to be json.Number, got %T instead", value) - } - i64, err := jtv.Int64() - if err != nil { - return err - } - sv.UlBucketSize = ptr.Int32(int32(i64)) + case "UlBucketSize": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected UlBucketSize to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.UlBucketSize = ptr.Int32(int32(i64)) + } + + case "UlRate": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected UlRate to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.UlRate = ptr.Int32(int32(i64)) + } + + case "UlRatePolicy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UlRatePolicy to be of type string, got %T instead", value) + } + sv.UlRatePolicy = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLoRaWANListDevice(v **types.LoRaWANListDevice, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoRaWANListDevice + if *v == nil { + sv = &types.LoRaWANListDevice{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DevEui": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DevEui to be of type string, got %T instead", value) + } + sv.DevEui = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLoRaWANMulticastGet(v **types.LoRaWANMulticastGet, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoRaWANMulticastGet + if *v == nil { + sv = &types.LoRaWANMulticastGet{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DlClass": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DlClass to be of type string, got %T instead", value) + } + sv.DlClass = types.DlClass(jtv) + } + + case "NumberOfDevicesInGroup": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected NumberOfDevicesInGroup to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.NumberOfDevicesInGroup = ptr.Int32(int32(i64)) + } + + case "NumberOfDevicesRequested": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected NumberOfDevicesRequested to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.NumberOfDevicesRequested = ptr.Int32(int32(i64)) + } + + case "RfRegion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SupportedRfRegion to be of type string, got %T instead", value) + } + sv.RfRegion = types.SupportedRfRegion(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLoRaWANMulticastSession(v **types.LoRaWANMulticastSession, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoRaWANMulticastSession + if *v == nil { + sv = &types.LoRaWANMulticastSession{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DlDr": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected DlDr to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.DlDr = ptr.Int32(int32(i64)) + } + + case "DlFreq": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected DlFreq to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.DlFreq = ptr.Int32(int32(i64)) + } + + case "SessionStartTime": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SessionStartTimeTimestamp to be of type string, got %T instead", value) + } + t, err := smithytime.ParseDateTime(jtv) + if err != nil { + return err + } + sv.SessionStartTime = ptr.Time(t) + } + + case "SessionTimeout": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected SessionTimeout to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SessionTimeout = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskCreate(v **types.LoRaWANUpdateGatewayTaskCreate, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoRaWANUpdateGatewayTaskCreate + if *v == nil { + sv = &types.LoRaWANUpdateGatewayTaskCreate{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "CurrentVersion": + if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.CurrentVersion, value); err != nil { + return err } - case "UlRate": + case "SigKeyCrc": if value != nil { jtv, ok := value.(json.Number) if !ok { - return fmt.Errorf("expected UlRate to be json.Number, got %T instead", value) + return fmt.Errorf("expected Crc to be json.Number, got %T instead", value) } i64, err := jtv.Int64() if err != nil { return err } - sv.UlRate = ptr.Int32(int32(i64)) + sv.SigKeyCrc = ptr.Int64(i64) } - case "UlRatePolicy": + case "UpdateSignature": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected UlRatePolicy to be of type string, got %T instead", value) + return fmt.Errorf("expected UpdateSignature to be of type string, got %T instead", value) } - sv.UlRatePolicy = ptr.String(jtv) + sv.UpdateSignature = ptr.String(jtv) + } + + case "UpdateVersion": + if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.UpdateVersion, value); err != nil { + return err } default: @@ -10032,7 +13898,7 @@ func awsRestjson1_deserializeDocumentLoRaWANGetServiceProfileInfo(v **types.LoRa return nil } -func awsRestjson1_deserializeDocumentLoRaWANListDevice(v **types.LoRaWANListDevice, value interface{}) error { +func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskEntry(v **types.LoRaWANUpdateGatewayTaskEntry, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -10045,22 +13911,23 @@ func awsRestjson1_deserializeDocumentLoRaWANListDevice(v **types.LoRaWANListDevi return fmt.Errorf("unexpected JSON type %v", value) } - var sv *types.LoRaWANListDevice + var sv *types.LoRaWANUpdateGatewayTaskEntry if *v == nil { - sv = &types.LoRaWANListDevice{} + sv = &types.LoRaWANUpdateGatewayTaskEntry{} } else { sv = *v } for key, value := range shape { switch key { - case "DevEui": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected DevEui to be of type string, got %T instead", value) - } - sv.DevEui = ptr.String(jtv) + case "CurrentVersion": + if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.CurrentVersion, value); err != nil { + return err + } + + case "UpdateVersion": + if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.UpdateVersion, value); err != nil { + return err } default: @@ -10072,7 +13939,7 @@ func awsRestjson1_deserializeDocumentLoRaWANListDevice(v **types.LoRaWANListDevi return nil } -func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskCreate(v **types.LoRaWANUpdateGatewayTaskCreate, value interface{}) error { +func awsRestjson1_deserializeDocumentMulticastGroup(v **types.MulticastGroup, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -10085,45 +13952,40 @@ func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskCreate(v **types.Lo return fmt.Errorf("unexpected JSON type %v", value) } - var sv *types.LoRaWANUpdateGatewayTaskCreate + var sv *types.MulticastGroup if *v == nil { - sv = &types.LoRaWANUpdateGatewayTaskCreate{} + sv = &types.MulticastGroup{} } else { sv = *v } for key, value := range shape { switch key { - case "CurrentVersion": - if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.CurrentVersion, value); err != nil { - return err - } - - case "SigKeyCrc": + case "Arn": if value != nil { - jtv, ok := value.(json.Number) + jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected Crc to be json.Number, got %T instead", value) - } - i64, err := jtv.Int64() - if err != nil { - return err + return fmt.Errorf("expected MulticastGroupArn to be of type string, got %T instead", value) } - sv.SigKeyCrc = ptr.Int64(i64) + sv.Arn = ptr.String(jtv) } - case "UpdateSignature": + case "Id": if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected UpdateSignature to be of type string, got %T instead", value) + return fmt.Errorf("expected MulticastGroupId to be of type string, got %T instead", value) } - sv.UpdateSignature = ptr.String(jtv) + sv.Id = ptr.String(jtv) } - case "UpdateVersion": - if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.UpdateVersion, value); err != nil { - return err + case "Name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) } default: @@ -10135,7 +13997,7 @@ func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskCreate(v **types.Lo return nil } -func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskEntry(v **types.LoRaWANUpdateGatewayTaskEntry, value interface{}) error { +func awsRestjson1_deserializeDocumentMulticastGroupByFuotaTask(v **types.MulticastGroupByFuotaTask, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -10148,23 +14010,22 @@ func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskEntry(v **types.LoR return fmt.Errorf("unexpected JSON type %v", value) } - var sv *types.LoRaWANUpdateGatewayTaskEntry + var sv *types.MulticastGroupByFuotaTask if *v == nil { - sv = &types.LoRaWANUpdateGatewayTaskEntry{} + sv = &types.MulticastGroupByFuotaTask{} } else { sv = *v } for key, value := range shape { switch key { - case "CurrentVersion": - if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.CurrentVersion, value); err != nil { - return err - } - - case "UpdateVersion": - if err := awsRestjson1_deserializeDocumentLoRaWANGatewayVersion(&sv.UpdateVersion, value); err != nil { - return err + case "Id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastGroupId to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) } default: @@ -10176,6 +14037,74 @@ func awsRestjson1_deserializeDocumentLoRaWANUpdateGatewayTaskEntry(v **types.LoR return nil } +func awsRestjson1_deserializeDocumentMulticastGroupList(v *[]types.MulticastGroup, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.MulticastGroup + if *v == nil { + cv = []types.MulticastGroup{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.MulticastGroup + destAddr := &col + if err := awsRestjson1_deserializeDocumentMulticastGroup(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentMulticastGroupListByFuotaTask(v *[]types.MulticastGroupByFuotaTask, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.MulticastGroupByFuotaTask + if *v == nil { + cv = []types.MulticastGroupByFuotaTask{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.MulticastGroupByFuotaTask + destAddr := &col + if err := awsRestjson1_deserializeDocumentMulticastGroupByFuotaTask(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentNetIdFilters(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -10252,6 +14181,15 @@ func awsRestjson1_deserializeDocumentOtaaV1_0_x(v **types.OtaaV1_0_x, value inte sv.AppKey = ptr.String(jtv) } + case "GenAppKey": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected GenAppKey to be of type string, got %T instead", value) + } + sv.GenAppKey = ptr.String(jtv) + } + default: _, _ = key, value @@ -10319,6 +14257,42 @@ func awsRestjson1_deserializeDocumentOtaaV1_1(v **types.OtaaV1_1, value interfac return nil } +func awsRestjson1_deserializeDocumentProximityEventConfiguration(v **types.ProximityEventConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ProximityEventConfiguration + if *v == nil { + sv = &types.ProximityEventConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Sidewalk": + if err := awsRestjson1_deserializeDocumentSidewalkEventNotificationConfigurations(&sv.Sidewalk, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentResourceNotFoundException(v **types.ResourceNotFoundException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -10860,6 +14834,46 @@ func awsRestjson1_deserializeDocumentSidewalkDeviceMetadata(v **types.SidewalkDe return nil } +func awsRestjson1_deserializeDocumentSidewalkEventNotificationConfigurations(v **types.SidewalkEventNotificationConfigurations, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SidewalkEventNotificationConfigurations + if *v == nil { + sv = &types.SidewalkEventNotificationConfigurations{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AmazonIdEventTopic": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EventNotificationTopicStatus to be of type string, got %T instead", value) + } + sv.AmazonIdEventTopic = types.EventNotificationTopicStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentSidewalkListDevice(v **types.SidewalkListDevice, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -11494,6 +15508,15 @@ func awsRestjson1_deserializeDocumentWirelessDeviceStatistics(v **types.Wireless sv.DestinationName = ptr.String(jtv) } + case "FuotaDeviceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FuotaDeviceStatus to be of type string, got %T instead", value) + } + sv.FuotaDeviceStatus = types.FuotaDeviceStatus(jtv) + } + case "Id": if value != nil { jtv, ok := value.(string) @@ -11517,6 +15540,28 @@ func awsRestjson1_deserializeDocumentWirelessDeviceStatistics(v **types.Wireless return err } + case "McGroupId": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected McGroupId to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.McGroupId = ptr.Int32(int32(i64)) + } + + case "MulticastDeviceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected MulticastDeviceStatus to be of type string, got %T instead", value) + } + sv.MulticastDeviceStatus = ptr.String(jtv) + } + case "Name": if value != nil { jtv, ok := value.(string) diff --git a/service/iotwireless/generated.json b/service/iotwireless/generated.json index 55f7dc228f3..3904a307e68 100644 --- a/service/iotwireless/generated.json +++ b/service/iotwireless/generated.json @@ -8,11 +8,17 @@ "files": [ "api_client.go", "api_op_AssociateAwsAccountWithPartnerAccount.go", + "api_op_AssociateMulticastGroupWithFuotaTask.go", + "api_op_AssociateWirelessDeviceWithFuotaTask.go", + "api_op_AssociateWirelessDeviceWithMulticastGroup.go", "api_op_AssociateWirelessDeviceWithThing.go", "api_op_AssociateWirelessGatewayWithCertificate.go", "api_op_AssociateWirelessGatewayWithThing.go", + "api_op_CancelMulticastGroupSession.go", "api_op_CreateDestination.go", "api_op_CreateDeviceProfile.go", + "api_op_CreateFuotaTask.go", + "api_op_CreateMulticastGroup.go", "api_op_CreateServiceProfile.go", "api_op_CreateWirelessDevice.go", "api_op_CreateWirelessGateway.go", @@ -20,19 +26,28 @@ "api_op_CreateWirelessGatewayTaskDefinition.go", "api_op_DeleteDestination.go", "api_op_DeleteDeviceProfile.go", + "api_op_DeleteFuotaTask.go", + "api_op_DeleteMulticastGroup.go", "api_op_DeleteServiceProfile.go", "api_op_DeleteWirelessDevice.go", "api_op_DeleteWirelessGateway.go", "api_op_DeleteWirelessGatewayTask.go", "api_op_DeleteWirelessGatewayTaskDefinition.go", "api_op_DisassociateAwsAccountFromPartnerAccount.go", + "api_op_DisassociateMulticastGroupFromFuotaTask.go", + "api_op_DisassociateWirelessDeviceFromFuotaTask.go", + "api_op_DisassociateWirelessDeviceFromMulticastGroup.go", "api_op_DisassociateWirelessDeviceFromThing.go", "api_op_DisassociateWirelessGatewayFromCertificate.go", "api_op_DisassociateWirelessGatewayFromThing.go", "api_op_GetDestination.go", "api_op_GetDeviceProfile.go", + "api_op_GetFuotaTask.go", "api_op_GetLogLevelsByResourceTypes.go", + "api_op_GetMulticastGroup.go", + "api_op_GetMulticastGroupSession.go", "api_op_GetPartnerAccount.go", + "api_op_GetResourceEventConfiguration.go", "api_op_GetResourceLogLevel.go", "api_op_GetServiceEndpoint.go", "api_op_GetServiceProfile.go", @@ -46,6 +61,9 @@ "api_op_GetWirelessGatewayTaskDefinition.go", "api_op_ListDestinations.go", "api_op_ListDeviceProfiles.go", + "api_op_ListFuotaTasks.go", + "api_op_ListMulticastGroups.go", + "api_op_ListMulticastGroupsByFuotaTask.go", "api_op_ListPartnerAccounts.go", "api_op_ListServiceProfiles.go", "api_op_ListTagsForResource.go", @@ -55,13 +73,21 @@ "api_op_PutResourceLogLevel.go", "api_op_ResetAllResourceLogLevels.go", "api_op_ResetResourceLogLevel.go", + "api_op_SendDataToMulticastGroup.go", "api_op_SendDataToWirelessDevice.go", + "api_op_StartBulkAssociateWirelessDeviceWithMulticastGroup.go", + "api_op_StartBulkDisassociateWirelessDeviceFromMulticastGroup.go", + "api_op_StartFuotaTask.go", + "api_op_StartMulticastGroupSession.go", "api_op_TagResource.go", "api_op_TestWirelessDevice.go", "api_op_UntagResource.go", "api_op_UpdateDestination.go", + "api_op_UpdateFuotaTask.go", "api_op_UpdateLogLevelsByResourceTypes.go", + "api_op_UpdateMulticastGroup.go", "api_op_UpdatePartnerAccount.go", + "api_op_UpdateResourceEventConfiguration.go", "api_op_UpdateWirelessDevice.go", "api_op_UpdateWirelessGateway.go", "deserializers.go", diff --git a/service/iotwireless/serializers.go b/service/iotwireless/serializers.go index eb8845ae321..ebd669f11f5 100644 --- a/service/iotwireless/serializers.go +++ b/service/iotwireless/serializers.go @@ -11,6 +11,7 @@ import ( "github.com/aws/smithy-go/encoding/httpbinding" smithyjson "github.com/aws/smithy-go/encoding/json" "github.com/aws/smithy-go/middleware" + smithytime "github.com/aws/smithy-go/time" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -96,14 +97,14 @@ func awsRestjson1_serializeOpDocumentAssociateAwsAccountWithPartnerAccountInput( return nil } -type awsRestjson1_serializeOpAssociateWirelessDeviceWithThing struct { +type awsRestjson1_serializeOpAssociateMulticastGroupWithFuotaTask struct { } -func (*awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) ID() string { +func (*awsRestjson1_serializeOpAssociateMulticastGroupWithFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateMulticastGroupWithFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -111,13 +112,13 @@ func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) HandleSeriali return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*AssociateWirelessDeviceWithThingInput) + input, ok := in.Parameters.(*AssociateMulticastGroupWithFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/thing") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}/multicast-group") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "PUT" @@ -126,14 +127,14 @@ func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) HandleSeriali return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithThingInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsAssociateMulticastGroupWithFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithThingInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateMulticastGroupWithFuotaTaskInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -148,7 +149,7 @@ func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) HandleSeriali return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithThingInput(v *AssociateWirelessDeviceWithThingInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateMulticastGroupWithFuotaTaskInput(v *AssociateMulticastGroupWithFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -165,26 +166,26 @@ func awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithThingInput(v return nil } -func awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithThingInput(v *AssociateWirelessDeviceWithThingInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentAssociateMulticastGroupWithFuotaTaskInput(v *AssociateMulticastGroupWithFuotaTaskInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.ThingArn != nil { - ok := object.Key("ThingArn") - ok.String(*v.ThingArn) + if v.MulticastGroupId != nil { + ok := object.Key("MulticastGroupId") + ok.String(*v.MulticastGroupId) } return nil } -type awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate struct { +type awsRestjson1_serializeOpAssociateWirelessDeviceWithFuotaTask struct { } -func (*awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) ID() string { +func (*awsRestjson1_serializeOpAssociateWirelessDeviceWithFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -192,13 +193,13 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) Handle return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*AssociateWirelessGatewayWithCertificateInput) + input, ok := in.Parameters.(*AssociateWirelessDeviceWithFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}/wireless-device") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "PUT" @@ -207,14 +208,14 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) Handle return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithCertificateInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithCertificateInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithFuotaTaskInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -229,7 +230,7 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) Handle return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithCertificateInput(v *AssociateWirelessGatewayWithCertificateInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithFuotaTaskInput(v *AssociateWirelessDeviceWithFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -246,26 +247,26 @@ func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithCertificate return nil } -func awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithCertificateInput(v *AssociateWirelessGatewayWithCertificateInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithFuotaTaskInput(v *AssociateWirelessDeviceWithFuotaTaskInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.IotCertificateId != nil { - ok := object.Key("IotCertificateId") - ok.String(*v.IotCertificateId) + if v.WirelessDeviceId != nil { + ok := object.Key("WirelessDeviceId") + ok.String(*v.WirelessDeviceId) } return nil } -type awsRestjson1_serializeOpAssociateWirelessGatewayWithThing struct { +type awsRestjson1_serializeOpAssociateWirelessDeviceWithMulticastGroup struct { } -func (*awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) ID() string { +func (*awsRestjson1_serializeOpAssociateWirelessDeviceWithMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -273,13 +274,13 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) HandleSerial return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*AssociateWirelessGatewayWithThingInput) + input, ok := in.Parameters.(*AssociateWirelessDeviceWithMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/thing") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/wireless-device") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "PUT" @@ -288,14 +289,14 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) HandleSerial return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithThingInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithMulticastGroupInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithThingInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithMulticastGroupInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -310,7 +311,7 @@ func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) HandleSerial return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithThingInput(v *AssociateWirelessGatewayWithThingInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithMulticastGroupInput(v *AssociateWirelessDeviceWithMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -327,26 +328,26 @@ func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithThingInput( return nil } -func awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithThingInput(v *AssociateWirelessGatewayWithThingInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithMulticastGroupInput(v *AssociateWirelessDeviceWithMulticastGroupInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.ThingArn != nil { - ok := object.Key("ThingArn") - ok.String(*v.ThingArn) + if v.WirelessDeviceId != nil { + ok := object.Key("WirelessDeviceId") + ok.String(*v.WirelessDeviceId) } return nil } -type awsRestjson1_serializeOpCreateDestination struct { +type awsRestjson1_serializeOpAssociateWirelessDeviceWithThing struct { } -func (*awsRestjson1_serializeOpCreateDestination) ID() string { +func (*awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateWirelessDeviceWithThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -354,25 +355,29 @@ func (m *awsRestjson1_serializeOpCreateDestination) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateDestinationInput) + input, ok := in.Parameters.(*AssociateWirelessDeviceWithThingInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/destinations") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/thing") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PUT" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithThingInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateDestinationInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithThingInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -387,66 +392,43 @@ func (m *awsRestjson1_serializeOpCreateDestination) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateDestinationInput(v *CreateDestinationInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateWirelessDeviceWithThingInput(v *AssociateWirelessDeviceWithThingInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + return nil } -func awsRestjson1_serializeOpDocumentCreateDestinationInput(v *CreateDestinationInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentAssociateWirelessDeviceWithThingInput(v *AssociateWirelessDeviceWithThingInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.ClientRequestToken != nil { - ok := object.Key("ClientRequestToken") - ok.String(*v.ClientRequestToken) - } - - if v.Description != nil { - ok := object.Key("Description") - ok.String(*v.Description) - } - - if v.Expression != nil { - ok := object.Key("Expression") - ok.String(*v.Expression) - } - - if len(v.ExpressionType) > 0 { - ok := object.Key("ExpressionType") - ok.String(string(v.ExpressionType)) - } - - if v.Name != nil { - ok := object.Key("Name") - ok.String(*v.Name) - } - - if v.RoleArn != nil { - ok := object.Key("RoleArn") - ok.String(*v.RoleArn) - } - - if v.Tags != nil { - ok := object.Key("Tags") - if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { - return err - } + if v.ThingArn != nil { + ok := object.Key("ThingArn") + ok.String(*v.ThingArn) } return nil } -type awsRestjson1_serializeOpCreateDeviceProfile struct { +type awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate struct { } -func (*awsRestjson1_serializeOpCreateDeviceProfile) ID() string { +func (*awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -454,25 +436,29 @@ func (m *awsRestjson1_serializeOpCreateDeviceProfile) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateDeviceProfileInput) + input, ok := in.Parameters.(*AssociateWirelessGatewayWithCertificateInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/device-profiles") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PUT" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithCertificateInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateDeviceProfileInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithCertificateInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -487,53 +473,43 @@ func (m *awsRestjson1_serializeOpCreateDeviceProfile) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateDeviceProfileInput(v *CreateDeviceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithCertificateInput(v *AssociateWirelessGatewayWithCertificateInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - return nil -} - -func awsRestjson1_serializeOpDocumentCreateDeviceProfileInput(v *CreateDeviceProfileInput, value smithyjson.Value) error { - object := value.Object() - defer object.Close() - - if v.ClientRequestToken != nil { - ok := object.Key("ClientRequestToken") - ok.String(*v.ClientRequestToken) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - - if v.LoRaWAN != nil { - ok := object.Key("LoRaWAN") - if err := awsRestjson1_serializeDocumentLoRaWANDeviceProfile(v.LoRaWAN, ok); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if v.Name != nil { - ok := object.Key("Name") - ok.String(*v.Name) - } + return nil +} - if v.Tags != nil { - ok := object.Key("Tags") - if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { - return err - } +func awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithCertificateInput(v *AssociateWirelessGatewayWithCertificateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.IotCertificateId != nil { + ok := object.Key("IotCertificateId") + ok.String(*v.IotCertificateId) } return nil } -type awsRestjson1_serializeOpCreateServiceProfile struct { +type awsRestjson1_serializeOpAssociateWirelessGatewayWithThing struct { } -func (*awsRestjson1_serializeOpCreateServiceProfile) ID() string { +func (*awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpAssociateWirelessGatewayWithThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -541,25 +517,29 @@ func (m *awsRestjson1_serializeOpCreateServiceProfile) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateServiceProfileInput) + input, ok := in.Parameters.(*AssociateWirelessGatewayWithThingInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/service-profiles") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/thing") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PUT" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithThingInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateServiceProfileInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithThingInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -574,53 +554,43 @@ func (m *awsRestjson1_serializeOpCreateServiceProfile) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateServiceProfileInput(v *CreateServiceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsAssociateWirelessGatewayWithThingInput(v *AssociateWirelessGatewayWithThingInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - return nil -} - -func awsRestjson1_serializeOpDocumentCreateServiceProfileInput(v *CreateServiceProfileInput, value smithyjson.Value) error { - object := value.Object() - defer object.Close() - - if v.ClientRequestToken != nil { - ok := object.Key("ClientRequestToken") - ok.String(*v.ClientRequestToken) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - - if v.LoRaWAN != nil { - ok := object.Key("LoRaWAN") - if err := awsRestjson1_serializeDocumentLoRaWANServiceProfile(v.LoRaWAN, ok); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if v.Name != nil { - ok := object.Key("Name") - ok.String(*v.Name) - } + return nil +} - if v.Tags != nil { - ok := object.Key("Tags") - if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { - return err - } +func awsRestjson1_serializeOpDocumentAssociateWirelessGatewayWithThingInput(v *AssociateWirelessGatewayWithThingInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ThingArn != nil { + ok := object.Key("ThingArn") + ok.String(*v.ThingArn) } return nil } -type awsRestjson1_serializeOpCreateWirelessDevice struct { +type awsRestjson1_serializeOpCancelMulticastGroupSession struct { } -func (*awsRestjson1_serializeOpCreateWirelessDevice) ID() string { +func (*awsRestjson1_serializeOpCancelMulticastGroupSession) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCancelMulticastGroupSession) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -628,29 +598,22 @@ func (m *awsRestjson1_serializeOpCreateWirelessDevice) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateWirelessDeviceInput) + input, ok := in.Parameters.(*CancelMulticastGroupSessionInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/session") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - restEncoder.SetHeader("Content-Type").String("application/json") - - jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(input, jsonEncoder.Value); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} - } - - if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsCancelMulticastGroupSessionInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -661,38 +624,101 @@ func (m *awsRestjson1_serializeOpCreateWirelessDevice) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateWirelessDeviceInput(v *CreateWirelessDeviceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCancelMulticastGroupSessionInput(v *CancelMulticastGroupSessionInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + return nil } -func awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(v *CreateWirelessDeviceInput, value smithyjson.Value) error { - object := value.Object() - defer object.Close() +type awsRestjson1_serializeOpCreateDestination struct { +} - if v.ClientRequestToken != nil { - ok := object.Key("ClientRequestToken") - ok.String(*v.ClientRequestToken) - } +func (*awsRestjson1_serializeOpCreateDestination) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateDestinationInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/destinations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateDestinationInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateDestinationInput(v *CreateDestinationInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateDestinationInput(v *CreateDestinationInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } if v.Description != nil { ok := object.Key("Description") ok.String(*v.Description) } - if v.DestinationName != nil { - ok := object.Key("DestinationName") - ok.String(*v.DestinationName) + if v.Expression != nil { + ok := object.Key("Expression") + ok.String(*v.Expression) } - if v.LoRaWAN != nil { - ok := object.Key("LoRaWAN") - if err := awsRestjson1_serializeDocumentLoRaWANDevice(v.LoRaWAN, ok); err != nil { - return err - } + if len(v.ExpressionType) > 0 { + ok := object.Key("ExpressionType") + ok.String(string(v.ExpressionType)) } if v.Name != nil { @@ -700,6 +726,11 @@ func awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(v *CreateWireless ok.String(*v.Name) } + if v.RoleArn != nil { + ok := object.Key("RoleArn") + ok.String(*v.RoleArn) + } + if v.Tags != nil { ok := object.Key("Tags") if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { @@ -707,22 +738,17 @@ func awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(v *CreateWireless } } - if len(v.Type) > 0 { - ok := object.Key("Type") - ok.String(string(v.Type)) - } - return nil } -type awsRestjson1_serializeOpCreateWirelessGateway struct { +type awsRestjson1_serializeOpCreateDeviceProfile struct { } -func (*awsRestjson1_serializeOpCreateWirelessGateway) ID() string { +func (*awsRestjson1_serializeOpCreateDeviceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -730,13 +756,13 @@ func (m *awsRestjson1_serializeOpCreateWirelessGateway) HandleSerialize(ctx cont return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateWirelessGatewayInput) + input, ok := in.Parameters.(*CreateDeviceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways") + opPath, opQuery := httpbinding.SplitURI("/device-profiles") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" @@ -748,7 +774,7 @@ func (m *awsRestjson1_serializeOpCreateWirelessGateway) HandleSerialize(ctx cont restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentCreateDeviceProfileInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -763,7 +789,7 @@ func (m *awsRestjson1_serializeOpCreateWirelessGateway) HandleSerialize(ctx cont return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayInput(v *CreateWirelessGatewayInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateDeviceProfileInput(v *CreateDeviceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -771,7 +797,7 @@ func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayInput(v *CreateWir return nil } -func awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(v *CreateWirelessGatewayInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentCreateDeviceProfileInput(v *CreateDeviceProfileInput, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -780,14 +806,9 @@ func awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(v *CreateWireles ok.String(*v.ClientRequestToken) } - if v.Description != nil { - ok := object.Key("Description") - ok.String(*v.Description) - } - if v.LoRaWAN != nil { ok := object.Key("LoRaWAN") - if err := awsRestjson1_serializeDocumentLoRaWANGateway(v.LoRaWAN, ok); err != nil { + if err := awsRestjson1_serializeDocumentLoRaWANDeviceProfile(v.LoRaWAN, ok); err != nil { return err } } @@ -807,14 +828,14 @@ func awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(v *CreateWireles return nil } -type awsRestjson1_serializeOpCreateWirelessGatewayTask struct { +type awsRestjson1_serializeOpCreateFuotaTask struct { } -func (*awsRestjson1_serializeOpCreateWirelessGatewayTask) ID() string { +func (*awsRestjson1_serializeOpCreateFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -822,13 +843,13 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTask) HandleSerialize(ctx return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateWirelessGatewayTaskInput) + input, ok := in.Parameters.(*CreateFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" @@ -837,14 +858,10 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTask) HandleSerialize(ctx return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskInput(input, restEncoder); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} - } - restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentCreateFuotaTaskInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -859,43 +876,68 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTask) HandleSerialize(ctx return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskInput(v *CreateWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateFuotaTaskInput(v *CreateFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} - } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { - return err - } - } - return nil } -func awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskInput(v *CreateWirelessGatewayTaskInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentCreateFuotaTaskInput(v *CreateFuotaTaskInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.WirelessGatewayTaskDefinitionId != nil { - ok := object.Key("WirelessGatewayTaskDefinitionId") - ok.String(*v.WirelessGatewayTaskDefinitionId) + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } + + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.FirmwareUpdateImage != nil { + ok := object.Key("FirmwareUpdateImage") + ok.String(*v.FirmwareUpdateImage) + } + + if v.FirmwareUpdateRole != nil { + ok := object.Key("FirmwareUpdateRole") + ok.String(*v.FirmwareUpdateRole) + } + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANFuotaTask(v.LoRaWAN, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition struct { +type awsRestjson1_serializeOpCreateMulticastGroup struct { } -func (*awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) ID() string { +func (*awsRestjson1_serializeOpCreateMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -903,13 +945,13 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) HandleSeri return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*CreateWirelessGatewayTaskDefinitionInput) + input, ok := in.Parameters.(*CreateMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "POST" @@ -921,7 +963,7 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) HandleSeri restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskDefinitionInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentCreateMulticastGroupInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -936,7 +978,7 @@ func (m *awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) HandleSeri return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateMulticastGroupInput(v *CreateMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -944,20 +986,27 @@ func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskDefinitionInpu return nil } -func awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentCreateMulticastGroupInput(v *CreateMulticastGroupInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - { - ok := object.Key("AutoCreateTasks") - ok.Boolean(v.AutoCreateTasks) - } - if v.ClientRequestToken != nil { ok := object.Key("ClientRequestToken") ok.String(*v.ClientRequestToken) } + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANMulticast(v.LoRaWAN, ok); err != nil { + return err + } + } + if v.Name != nil { ok := object.Key("Name") ok.String(*v.Name) @@ -970,24 +1019,17 @@ func awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskDefinitionInput(v } } - if v.Update != nil { - ok := object.Key("Update") - if err := awsRestjson1_serializeDocumentUpdateWirelessGatewayTaskCreate(v.Update, ok); err != nil { - return err - } - } - return nil } -type awsRestjson1_serializeOpDeleteDestination struct { +type awsRestjson1_serializeOpCreateServiceProfile struct { } -func (*awsRestjson1_serializeOpDeleteDestination) ID() string { +func (*awsRestjson1_serializeOpCreateServiceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -995,22 +1037,29 @@ func (m *awsRestjson1_serializeOpDeleteDestination) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteDestinationInput) + input, ok := in.Parameters.(*CreateServiceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") + opPath, opQuery := httpbinding.SplitURI("/service-profiles") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteDestinationInput(input, restEncoder); err != nil { + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateServiceProfileInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1021,16 +1070,38 @@ func (m *awsRestjson1_serializeOpDeleteDestination) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteDestinationInput(v *DeleteDestinationInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateServiceProfileInput(v *CreateServiceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Name == nil || len(*v.Name) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} + return nil +} + +func awsRestjson1_serializeOpDocumentCreateServiceProfileInput(v *CreateServiceProfileInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANServiceProfile(v.LoRaWAN, ok); err != nil { + return err + } } + if v.Name != nil { - if err := encoder.SetURI("Name").String(*v.Name); err != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { return err } } @@ -1038,14 +1109,14 @@ func awsRestjson1_serializeOpHttpBindingsDeleteDestinationInput(v *DeleteDestina return nil } -type awsRestjson1_serializeOpDeleteDeviceProfile struct { +type awsRestjson1_serializeOpCreateWirelessDevice struct { } -func (*awsRestjson1_serializeOpDeleteDeviceProfile) ID() string { +func (*awsRestjson1_serializeOpCreateWirelessDevice) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1053,24 +1124,31 @@ func (m *awsRestjson1_serializeOpDeleteDeviceProfile) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteDeviceProfileInput) + input, ok := in.Parameters.(*CreateWirelessDeviceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/device-profiles/{Id}") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteDeviceProfileInput(input, restEncoder); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} - } + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } if request.Request, err = restEncoder.Encode(request.Request); err != nil { return out, metadata, &smithy.SerializationError{Err: err} @@ -1079,31 +1157,68 @@ func (m *awsRestjson1_serializeOpDeleteDeviceProfile) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteDeviceProfileInput(v *DeleteDeviceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateWirelessDeviceInput(v *CreateWirelessDeviceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + return nil +} + +func awsRestjson1_serializeOpDocumentCreateWirelessDeviceInput(v *CreateWirelessDeviceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.DestinationName != nil { + ok := object.Key("DestinationName") + ok.String(*v.DestinationName) + } + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANDevice(v.LoRaWAN, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { return err } } + if len(v.Type) > 0 { + ok := object.Key("Type") + ok.String(string(v.Type)) + } + return nil } -type awsRestjson1_serializeOpDeleteServiceProfile struct { +type awsRestjson1_serializeOpCreateWirelessGateway struct { } -func (*awsRestjson1_serializeOpDeleteServiceProfile) ID() string { +func (*awsRestjson1_serializeOpCreateWirelessGateway) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1111,22 +1226,29 @@ func (m *awsRestjson1_serializeOpDeleteServiceProfile) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteServiceProfileInput) + input, ok := in.Parameters.(*CreateWirelessGatewayInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/service-profiles/{Id}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteServiceProfileInput(input, restEncoder); err != nil { + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1137,16 +1259,43 @@ func (m *awsRestjson1_serializeOpDeleteServiceProfile) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteServiceProfileInput(v *DeleteServiceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayInput(v *CreateWirelessGatewayInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + return nil +} + +func awsRestjson1_serializeOpDocumentCreateWirelessGatewayInput(v *CreateWirelessGatewayInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) + } + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANGateway(v.LoRaWAN, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { return err } } @@ -1154,14 +1303,14 @@ func awsRestjson1_serializeOpHttpBindingsDeleteServiceProfileInput(v *DeleteServ return nil } -type awsRestjson1_serializeOpDeleteWirelessDevice struct { +type awsRestjson1_serializeOpCreateWirelessGatewayTask struct { } -func (*awsRestjson1_serializeOpDeleteWirelessDevice) ID() string { +func (*awsRestjson1_serializeOpCreateWirelessGatewayTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1169,22 +1318,33 @@ func (m *awsRestjson1_serializeOpDeleteWirelessDevice) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteWirelessDeviceInput) + input, ok := in.Parameters.(*CreateWirelessGatewayTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessDeviceInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1195,7 +1355,7 @@ func (m *awsRestjson1_serializeOpDeleteWirelessDevice) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteWirelessDeviceInput(v *DeleteWirelessDeviceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskInput(v *CreateWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1212,14 +1372,26 @@ func awsRestjson1_serializeOpHttpBindingsDeleteWirelessDeviceInput(v *DeleteWire return nil } -type awsRestjson1_serializeOpDeleteWirelessGateway struct { +func awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskInput(v *CreateWirelessGatewayTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.WirelessGatewayTaskDefinitionId != nil { + ok := object.Key("WirelessGatewayTaskDefinitionId") + ok.String(*v.WirelessGatewayTaskDefinitionId) + } + + return nil } -func (*awsRestjson1_serializeOpDeleteWirelessGateway) ID() string { +type awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition struct { +} + +func (*awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpCreateWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1227,22 +1399,29 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGateway) HandleSerialize(ctx cont return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteWirelessGatewayInput) + input, ok := in.Parameters.(*CreateWirelessGatewayTaskDefinitionInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayInput(input, restEncoder); err != nil { + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskDefinitionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1253,16 +1432,43 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGateway) HandleSerialize(ctx cont return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayInput(v *DeleteWirelessGatewayInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + return nil +} + +func awsRestjson1_serializeOpDocumentCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("AutoCreateTasks") + ok.Boolean(v.AutoCreateTasks) } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + + if v.ClientRequestToken != nil { + ok := object.Key("ClientRequestToken") + ok.String(*v.ClientRequestToken) + } + + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + return err + } + } + + if v.Update != nil { + ok := object.Key("Update") + if err := awsRestjson1_serializeDocumentUpdateWirelessGatewayTaskCreate(v.Update, ok); err != nil { return err } } @@ -1270,14 +1476,14 @@ func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayInput(v *DeleteWir return nil } -type awsRestjson1_serializeOpDeleteWirelessGatewayTask struct { +type awsRestjson1_serializeOpDeleteDestination struct { } -func (*awsRestjson1_serializeOpDeleteWirelessGatewayTask) ID() string { +func (*awsRestjson1_serializeOpDeleteDestination) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1285,13 +1491,13 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTask) HandleSerialize(ctx return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteWirelessGatewayTaskInput) + input, ok := in.Parameters.(*DeleteDestinationInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") + opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1300,7 +1506,7 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTask) HandleSerialize(ctx return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteDestinationInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1311,16 +1517,16 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTask) HandleSerialize(ctx return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskInput(v *DeleteWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteDestinationInput(v *DeleteDestinationInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + if v.Name == nil || len(*v.Name) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + if v.Name != nil { + if err := encoder.SetURI("Name").String(*v.Name); err != nil { return err } } @@ -1328,14 +1534,14 @@ func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskInput(v *Delet return nil } -type awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition struct { +type awsRestjson1_serializeOpDeleteDeviceProfile struct { } -func (*awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) ID() string { +func (*awsRestjson1_serializeOpDeleteDeviceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1343,13 +1549,13 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) HandleSeri return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DeleteWirelessGatewayTaskDefinitionInput) + input, ok := in.Parameters.(*DeleteDeviceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions/{Id}") + opPath, opQuery := httpbinding.SplitURI("/device-profiles/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1358,7 +1564,7 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) HandleSeri return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskDefinitionInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteDeviceProfileInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1369,7 +1575,7 @@ func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) HandleSeri return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskDefinitionInput(v *DeleteWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteDeviceProfileInput(v *DeleteDeviceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1386,14 +1592,14 @@ func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskDefinitionInpu return nil } -type awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount struct { +type awsRestjson1_serializeOpDeleteFuotaTask struct { } -func (*awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) ID() string { +func (*awsRestjson1_serializeOpDeleteFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1401,13 +1607,13 @@ func (m *awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) Handl return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DisassociateAwsAccountFromPartnerAccountInput) + input, ok := in.Parameters.(*DeleteFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/partner-accounts/{PartnerAccountId}") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1416,7 +1622,7 @@ func (m *awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) Handl return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDisassociateAwsAccountFromPartnerAccountInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1427,35 +1633,31 @@ func (m *awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) Handl return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDisassociateAwsAccountFromPartnerAccountInput(v *DisassociateAwsAccountFromPartnerAccountInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteFuotaTaskInput(v *DeleteFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.PartnerAccountId == nil || len(*v.PartnerAccountId) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member PartnerAccountId must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.PartnerAccountId != nil { - if err := encoder.SetURI("PartnerAccountId").String(*v.PartnerAccountId); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if len(v.PartnerType) > 0 { - encoder.SetQuery("partnerType").String(string(v.PartnerType)) - } - return nil } -type awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing struct { +type awsRestjson1_serializeOpDeleteMulticastGroup struct { } -func (*awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) ID() string { +func (*awsRestjson1_serializeOpDeleteMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1463,13 +1665,13 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) HandleSeri return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DisassociateWirelessDeviceFromThingInput) + input, ok := in.Parameters.(*DeleteMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/thing") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1478,7 +1680,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) HandleSeri return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromThingInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteMulticastGroupInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1489,7 +1691,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) HandleSeri return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromThingInput(v *DisassociateWirelessDeviceFromThingInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteMulticastGroupInput(v *DeleteMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1506,14 +1708,14 @@ func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromThingInpu return nil } -type awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate struct { +type awsRestjson1_serializeOpDeleteServiceProfile struct { } -func (*awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) ID() string { +func (*awsRestjson1_serializeOpDeleteServiceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1521,13 +1723,13 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) Han return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DisassociateWirelessGatewayFromCertificateInput) + input, ok := in.Parameters.(*DeleteServiceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") + opPath, opQuery := httpbinding.SplitURI("/service-profiles/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1536,7 +1738,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) Han return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromCertificateInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteServiceProfileInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1547,7 +1749,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) Han return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromCertificateInput(v *DisassociateWirelessGatewayFromCertificateInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteServiceProfileInput(v *DeleteServiceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1564,14 +1766,14 @@ func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromCertific return nil } -type awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing struct { +type awsRestjson1_serializeOpDeleteWirelessDevice struct { } -func (*awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) ID() string { +func (*awsRestjson1_serializeOpDeleteWirelessDevice) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1579,13 +1781,13 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) HandleSer return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*DisassociateWirelessGatewayFromThingInput) + input, ok := in.Parameters.(*DeleteWirelessDeviceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/thing") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -1594,7 +1796,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) HandleSer return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromThingInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessDeviceInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1605,7 +1807,7 @@ func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) HandleSer return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromThingInput(v *DisassociateWirelessGatewayFromThingInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteWirelessDeviceInput(v *DeleteWirelessDeviceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1622,14 +1824,14 @@ func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromThingInp return nil } -type awsRestjson1_serializeOpGetDestination struct { +type awsRestjson1_serializeOpDeleteWirelessGateway struct { } -func (*awsRestjson1_serializeOpGetDestination) ID() string { +func (*awsRestjson1_serializeOpDeleteWirelessGateway) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1637,22 +1839,22 @@ func (m *awsRestjson1_serializeOpGetDestination) HandleSerialize(ctx context.Con return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetDestinationInput) + input, ok := in.Parameters.(*DeleteWirelessGatewayInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetDestinationInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1663,16 +1865,16 @@ func (m *awsRestjson1_serializeOpGetDestination) HandleSerialize(ctx context.Con return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetDestinationInput(v *GetDestinationInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayInput(v *DeleteWirelessGatewayInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Name == nil || len(*v.Name) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.Name != nil { - if err := encoder.SetURI("Name").String(*v.Name); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } @@ -1680,14 +1882,14 @@ func awsRestjson1_serializeOpHttpBindingsGetDestinationInput(v *GetDestinationIn return nil } -type awsRestjson1_serializeOpGetDeviceProfile struct { +type awsRestjson1_serializeOpDeleteWirelessGatewayTask struct { } -func (*awsRestjson1_serializeOpGetDeviceProfile) ID() string { +func (*awsRestjson1_serializeOpDeleteWirelessGatewayTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1695,22 +1897,22 @@ func (m *awsRestjson1_serializeOpGetDeviceProfile) HandleSerialize(ctx context.C return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetDeviceProfileInput) + input, ok := in.Parameters.(*DeleteWirelessGatewayTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/device-profiles/{Id}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetDeviceProfileInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1721,7 +1923,7 @@ func (m *awsRestjson1_serializeOpGetDeviceProfile) HandleSerialize(ctx context.C return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetDeviceProfileInput(v *GetDeviceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskInput(v *DeleteWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1738,14 +1940,14 @@ func awsRestjson1_serializeOpHttpBindingsGetDeviceProfileInput(v *GetDeviceProfi return nil } -type awsRestjson1_serializeOpGetLogLevelsByResourceTypes struct { +type awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition struct { } -func (*awsRestjson1_serializeOpGetLogLevelsByResourceTypes) ID() string { +func (*awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetLogLevelsByResourceTypes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDeleteWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1753,21 +1955,25 @@ func (m *awsRestjson1_serializeOpGetLogLevelsByResourceTypes) HandleSerialize(ct return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetLogLevelsByResourceTypesInput) + input, ok := in.Parameters.(*DeleteWirelessGatewayTaskDefinitionInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskDefinitionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + if request.Request, err = restEncoder.Encode(request.Request); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1775,22 +1981,31 @@ func (m *awsRestjson1_serializeOpGetLogLevelsByResourceTypes) HandleSerialize(ct return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetLogLevelsByResourceTypesInput(v *GetLogLevelsByResourceTypesInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDeleteWirelessGatewayTaskDefinitionInput(v *DeleteWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + return nil } -type awsRestjson1_serializeOpGetPartnerAccount struct { +type awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount struct { } -func (*awsRestjson1_serializeOpGetPartnerAccount) ID() string { +func (*awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetPartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateAwsAccountFromPartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1798,7 +2013,7 @@ func (m *awsRestjson1_serializeOpGetPartnerAccount) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetPartnerAccountInput) + input, ok := in.Parameters.(*DisassociateAwsAccountFromPartnerAccountInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} @@ -1807,13 +2022,13 @@ func (m *awsRestjson1_serializeOpGetPartnerAccount) HandleSerialize(ctx context. opPath, opQuery := httpbinding.SplitURI("/partner-accounts/{PartnerAccountId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetPartnerAccountInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateAwsAccountFromPartnerAccountInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1824,7 +2039,7 @@ func (m *awsRestjson1_serializeOpGetPartnerAccount) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetPartnerAccountInput(v *GetPartnerAccountInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateAwsAccountFromPartnerAccountInput(v *DisassociateAwsAccountFromPartnerAccountInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -1845,14 +2060,14 @@ func awsRestjson1_serializeOpHttpBindingsGetPartnerAccountInput(v *GetPartnerAcc return nil } -type awsRestjson1_serializeOpGetResourceLogLevel struct { +type awsRestjson1_serializeOpDisassociateMulticastGroupFromFuotaTask struct { } -func (*awsRestjson1_serializeOpGetResourceLogLevel) ID() string { +func (*awsRestjson1_serializeOpDisassociateMulticastGroupFromFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateMulticastGroupFromFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1860,22 +2075,22 @@ func (m *awsRestjson1_serializeOpGetResourceLogLevel) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetResourceLogLevelInput) + input, ok := in.Parameters.(*DisassociateMulticastGroupFromFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}/multicast-groups/{MulticastGroupId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetResourceLogLevelInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateMulticastGroupFromFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1886,35 +2101,40 @@ func (m *awsRestjson1_serializeOpGetResourceLogLevel) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetResourceLogLevelInput(v *GetResourceLogLevelInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateMulticastGroupFromFuotaTaskInput(v *DisassociateMulticastGroupFromFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.ResourceIdentifier != nil { - if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if v.ResourceType != nil { - encoder.SetQuery("resourceType").String(*v.ResourceType) + if v.MulticastGroupId == nil || len(*v.MulticastGroupId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member MulticastGroupId must not be empty")} + } + if v.MulticastGroupId != nil { + if err := encoder.SetURI("MulticastGroupId").String(*v.MulticastGroupId); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpGetServiceEndpoint struct { +type awsRestjson1_serializeOpDisassociateWirelessDeviceFromFuotaTask struct { } -func (*awsRestjson1_serializeOpGetServiceEndpoint) ID() string { +func (*awsRestjson1_serializeOpDisassociateWirelessDeviceFromFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetServiceEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1922,22 +2142,22 @@ func (m *awsRestjson1_serializeOpGetServiceEndpoint) HandleSerialize(ctx context return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetServiceEndpointInput) + input, ok := in.Parameters.(*DisassociateWirelessDeviceFromFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/service-endpoint") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}/wireless-devices/{WirelessDeviceId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetServiceEndpointInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -1948,26 +2168,40 @@ func (m *awsRestjson1_serializeOpGetServiceEndpoint) HandleSerialize(ctx context return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetServiceEndpointInput(v *GetServiceEndpointInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromFuotaTaskInput(v *DisassociateWirelessDeviceFromFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if len(v.ServiceType) > 0 { - encoder.SetQuery("serviceType").String(string(v.ServiceType)) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + if v.WirelessDeviceId == nil || len(*v.WirelessDeviceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessDeviceId must not be empty")} + } + if v.WirelessDeviceId != nil { + if err := encoder.SetURI("WirelessDeviceId").String(*v.WirelessDeviceId); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpGetServiceProfile struct { +type awsRestjson1_serializeOpDisassociateWirelessDeviceFromMulticastGroup struct { } -func (*awsRestjson1_serializeOpGetServiceProfile) ID() string { +func (*awsRestjson1_serializeOpDisassociateWirelessDeviceFromMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -1975,22 +2209,22 @@ func (m *awsRestjson1_serializeOpGetServiceProfile) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetServiceProfileInput) + input, ok := in.Parameters.(*DisassociateWirelessDeviceFromMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/service-profiles/{Id}") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/wireless-devices/{WirelessDeviceId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetServiceProfileInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromMulticastGroupInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2001,7 +2235,7 @@ func (m *awsRestjson1_serializeOpGetServiceProfile) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetServiceProfileInput(v *GetServiceProfileInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromMulticastGroupInput(v *DisassociateWirelessDeviceFromMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -2015,17 +2249,26 @@ func awsRestjson1_serializeOpHttpBindingsGetServiceProfileInput(v *GetServicePro } } + if v.WirelessDeviceId == nil || len(*v.WirelessDeviceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessDeviceId must not be empty")} + } + if v.WirelessDeviceId != nil { + if err := encoder.SetURI("WirelessDeviceId").String(*v.WirelessDeviceId); err != nil { + return err + } + } + return nil } -type awsRestjson1_serializeOpGetWirelessDevice struct { +type awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing struct { } -func (*awsRestjson1_serializeOpGetWirelessDevice) ID() string { +func (*awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateWirelessDeviceFromThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2033,22 +2276,22 @@ func (m *awsRestjson1_serializeOpGetWirelessDevice) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessDeviceInput) + input, ok := in.Parameters.(*DisassociateWirelessDeviceFromThingInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Identifier}") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/thing") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromThingInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2059,35 +2302,31 @@ func (m *awsRestjson1_serializeOpGetWirelessDevice) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceInput(v *GetWirelessDeviceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessDeviceFromThingInput(v *DisassociateWirelessDeviceFromThingInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Identifier == nil || len(*v.Identifier) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.Identifier != nil { - if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if len(v.IdentifierType) > 0 { - encoder.SetQuery("identifierType").String(string(v.IdentifierType)) - } - return nil } -type awsRestjson1_serializeOpGetWirelessDeviceStatistics struct { +type awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate struct { } -func (*awsRestjson1_serializeOpGetWirelessDeviceStatistics) ID() string { +func (*awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessDeviceStatistics) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2095,22 +2334,22 @@ func (m *awsRestjson1_serializeOpGetWirelessDeviceStatistics) HandleSerialize(ct return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessDeviceStatisticsInput) + input, ok := in.Parameters.(*DisassociateWirelessGatewayFromCertificateInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{WirelessDeviceId}/statistics") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceStatisticsInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromCertificateInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2121,16 +2360,16 @@ func (m *awsRestjson1_serializeOpGetWirelessDeviceStatistics) HandleSerialize(ct return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceStatisticsInput(v *GetWirelessDeviceStatisticsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromCertificateInput(v *DisassociateWirelessGatewayFromCertificateInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.WirelessDeviceId == nil || len(*v.WirelessDeviceId) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessDeviceId must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.WirelessDeviceId != nil { - if err := encoder.SetURI("WirelessDeviceId").String(*v.WirelessDeviceId); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } @@ -2138,14 +2377,14 @@ func awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceStatisticsInput(v *Get return nil } -type awsRestjson1_serializeOpGetWirelessGateway struct { +type awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing struct { } -func (*awsRestjson1_serializeOpGetWirelessGateway) ID() string { +func (*awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpDisassociateWirelessGatewayFromThing) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2153,22 +2392,22 @@ func (m *awsRestjson1_serializeOpGetWirelessGateway) HandleSerialize(ctx context return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayInput) + input, ok := in.Parameters.(*DisassociateWirelessGatewayFromThingInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Identifier}") + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/thing") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "GET" + request.Method = "DELETE" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromThingInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2179,35 +2418,31 @@ func (m *awsRestjson1_serializeOpGetWirelessGateway) HandleSerialize(ctx context return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayInput(v *GetWirelessGatewayInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsDisassociateWirelessGatewayFromThingInput(v *DisassociateWirelessGatewayFromThingInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Identifier == nil || len(*v.Identifier) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.Identifier != nil { - if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } - if len(v.IdentifierType) > 0 { - encoder.SetQuery("identifierType").String(string(v.IdentifierType)) - } - return nil } -type awsRestjson1_serializeOpGetWirelessGatewayCertificate struct { +type awsRestjson1_serializeOpGetDestination struct { } -func (*awsRestjson1_serializeOpGetWirelessGatewayCertificate) ID() string { +func (*awsRestjson1_serializeOpGetDestination) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGatewayCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2215,13 +2450,13 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayCertificate) HandleSerialize( return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayCertificateInput) + input, ok := in.Parameters.(*GetDestinationInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") + opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2230,7 +2465,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayCertificate) HandleSerialize( return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayCertificateInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetDestinationInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2241,16 +2476,16 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayCertificate) HandleSerialize( return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayCertificateInput(v *GetWirelessGatewayCertificateInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetDestinationInput(v *GetDestinationInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + if v.Name == nil || len(*v.Name) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + if v.Name != nil { + if err := encoder.SetURI("Name").String(*v.Name); err != nil { return err } } @@ -2258,14 +2493,14 @@ func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayCertificateInput(v *G return nil } -type awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation struct { +type awsRestjson1_serializeOpGetDeviceProfile struct { } -func (*awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) ID() string { +func (*awsRestjson1_serializeOpGetDeviceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetDeviceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2273,13 +2508,13 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) HandleSe return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayFirmwareInformationInput) + input, ok := in.Parameters.(*GetDeviceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/firmware-information") + opPath, opQuery := httpbinding.SplitURI("/device-profiles/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2288,7 +2523,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) HandleSe return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayFirmwareInformationInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetDeviceProfileInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2299,7 +2534,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) HandleSe return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayFirmwareInformationInput(v *GetWirelessGatewayFirmwareInformationInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetDeviceProfileInput(v *GetDeviceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -2316,14 +2551,14 @@ func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayFirmwareInformationIn return nil } -type awsRestjson1_serializeOpGetWirelessGatewayStatistics struct { +type awsRestjson1_serializeOpGetFuotaTask struct { } -func (*awsRestjson1_serializeOpGetWirelessGatewayStatistics) ID() string { +func (*awsRestjson1_serializeOpGetFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGatewayStatistics) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2331,13 +2566,13 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayStatistics) HandleSerialize(c return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayStatisticsInput) + input, ok := in.Parameters.(*GetFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{WirelessGatewayId}/statistics") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2346,7 +2581,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayStatistics) HandleSerialize(c return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayStatisticsInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2357,16 +2592,16 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayStatistics) HandleSerialize(c return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayStatisticsInput(v *GetWirelessGatewayStatisticsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetFuotaTaskInput(v *GetFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.WirelessGatewayId == nil || len(*v.WirelessGatewayId) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessGatewayId must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.WirelessGatewayId != nil { - if err := encoder.SetURI("WirelessGatewayId").String(*v.WirelessGatewayId); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } @@ -2374,14 +2609,14 @@ func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayStatisticsInput(v *Ge return nil } -type awsRestjson1_serializeOpGetWirelessGatewayTask struct { +type awsRestjson1_serializeOpGetLogLevelsByResourceTypes struct { } -func (*awsRestjson1_serializeOpGetWirelessGatewayTask) ID() string { +func (*awsRestjson1_serializeOpGetLogLevelsByResourceTypes) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetLogLevelsByResourceTypes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2389,13 +2624,13 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTask) HandleSerialize(ctx con return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayTaskInput) + input, ok := in.Parameters.(*GetLogLevelsByResourceTypesInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") + opPath, opQuery := httpbinding.SplitURI("/log-levels") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2404,10 +2639,6 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTask) HandleSerialize(ctx con return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskInput(input, restEncoder); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} - } - if request.Request, err = restEncoder.Encode(request.Request); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2415,31 +2646,22 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTask) HandleSerialize(ctx con return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskInput(v *GetWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetLogLevelsByResourceTypesInput(v *GetLogLevelsByResourceTypesInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} - } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { - return err - } - } - return nil } -type awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition struct { +type awsRestjson1_serializeOpGetMulticastGroup struct { } -func (*awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) ID() string { +func (*awsRestjson1_serializeOpGetMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2447,13 +2669,13 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) HandleSeriali return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*GetWirelessGatewayTaskDefinitionInput) + input, ok := in.Parameters.(*GetMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions/{Id}") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2462,7 +2684,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) HandleSeriali return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskDefinitionInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetMulticastGroupInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2473,7 +2695,7 @@ func (m *awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) HandleSeriali return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskDefinitionInput(v *GetWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetMulticastGroupInput(v *GetMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } @@ -2490,14 +2712,14 @@ func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskDefinitionInput(v return nil } -type awsRestjson1_serializeOpListDestinations struct { +type awsRestjson1_serializeOpGetMulticastGroupSession struct { } -func (*awsRestjson1_serializeOpListDestinations) ID() string { +func (*awsRestjson1_serializeOpGetMulticastGroupSession) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListDestinations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetMulticastGroupSession) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2505,13 +2727,13 @@ func (m *awsRestjson1_serializeOpListDestinations) HandleSerialize(ctx context.C return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListDestinationsInput) + input, ok := in.Parameters.(*GetMulticastGroupSessionInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/destinations") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/session") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2520,7 +2742,7 @@ func (m *awsRestjson1_serializeOpListDestinations) HandleSerialize(ctx context.C return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListDestinationsInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetMulticastGroupSessionInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2531,30 +2753,31 @@ func (m *awsRestjson1_serializeOpListDestinations) HandleSerialize(ctx context.C return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListDestinationsInput(v *ListDestinationsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetMulticastGroupSessionInput(v *GetMulticastGroupSessionInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpListDeviceProfiles struct { +type awsRestjson1_serializeOpGetPartnerAccount struct { } -func (*awsRestjson1_serializeOpListDeviceProfiles) ID() string { +func (*awsRestjson1_serializeOpGetPartnerAccount) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListDeviceProfiles) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetPartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2562,13 +2785,13 @@ func (m *awsRestjson1_serializeOpListDeviceProfiles) HandleSerialize(ctx context return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListDeviceProfilesInput) + input, ok := in.Parameters.(*GetPartnerAccountInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/device-profiles") + opPath, opQuery := httpbinding.SplitURI("/partner-accounts/{PartnerAccountId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2577,7 +2800,7 @@ func (m *awsRestjson1_serializeOpListDeviceProfiles) HandleSerialize(ctx context return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListDeviceProfilesInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetPartnerAccountInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2588,30 +2811,35 @@ func (m *awsRestjson1_serializeOpListDeviceProfiles) HandleSerialize(ctx context return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListDeviceProfilesInput(v *ListDeviceProfilesInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetPartnerAccountInput(v *GetPartnerAccountInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.PartnerAccountId == nil || len(*v.PartnerAccountId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member PartnerAccountId must not be empty")} + } + if v.PartnerAccountId != nil { + if err := encoder.SetURI("PartnerAccountId").String(*v.PartnerAccountId); err != nil { + return err + } } - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + if len(v.PartnerType) > 0 { + encoder.SetQuery("partnerType").String(string(v.PartnerType)) } return nil } -type awsRestjson1_serializeOpListPartnerAccounts struct { +type awsRestjson1_serializeOpGetResourceEventConfiguration struct { } -func (*awsRestjson1_serializeOpListPartnerAccounts) ID() string { +func (*awsRestjson1_serializeOpGetResourceEventConfiguration) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListPartnerAccounts) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetResourceEventConfiguration) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2619,13 +2847,13 @@ func (m *awsRestjson1_serializeOpListPartnerAccounts) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListPartnerAccountsInput) + input, ok := in.Parameters.(*GetResourceEventConfigurationInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/partner-accounts") + opPath, opQuery := httpbinding.SplitURI("/event-configurations/{Identifier}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2634,7 +2862,7 @@ func (m *awsRestjson1_serializeOpListPartnerAccounts) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListPartnerAccountsInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetResourceEventConfigurationInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2645,30 +2873,39 @@ func (m *awsRestjson1_serializeOpListPartnerAccounts) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListPartnerAccountsInput(v *ListPartnerAccountsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetResourceEventConfigurationInput(v *GetResourceEventConfigurationInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.Identifier == nil || len(*v.Identifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} + } + if v.Identifier != nil { + if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { + return err + } } - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + if len(v.IdentifierType) > 0 { + encoder.SetQuery("identifierType").String(string(v.IdentifierType)) + } + + if len(v.PartnerType) > 0 { + encoder.SetQuery("partnerType").String(string(v.PartnerType)) } return nil } -type awsRestjson1_serializeOpListServiceProfiles struct { +type awsRestjson1_serializeOpGetResourceLogLevel struct { } -func (*awsRestjson1_serializeOpListServiceProfiles) ID() string { +func (*awsRestjson1_serializeOpGetResourceLogLevel) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListServiceProfiles) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2676,13 +2913,13 @@ func (m *awsRestjson1_serializeOpListServiceProfiles) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListServiceProfilesInput) + input, ok := in.Parameters.(*GetResourceLogLevelInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/service-profiles") + opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2691,7 +2928,7 @@ func (m *awsRestjson1_serializeOpListServiceProfiles) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListServiceProfilesInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetResourceLogLevelInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2702,30 +2939,35 @@ func (m *awsRestjson1_serializeOpListServiceProfiles) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListServiceProfilesInput(v *ListServiceProfilesInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetResourceLogLevelInput(v *GetResourceLogLevelInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} + } + if v.ResourceIdentifier != nil { + if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { + return err + } } - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + if v.ResourceType != nil { + encoder.SetQuery("resourceType").String(*v.ResourceType) } return nil } -type awsRestjson1_serializeOpListTagsForResource struct { +type awsRestjson1_serializeOpGetServiceEndpoint struct { } -func (*awsRestjson1_serializeOpListTagsForResource) ID() string { +func (*awsRestjson1_serializeOpGetServiceEndpoint) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetServiceEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2733,13 +2975,13 @@ func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListTagsForResourceInput) + input, ok := in.Parameters.(*GetServiceEndpointInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/tags") + opPath, opQuery := httpbinding.SplitURI("/service-endpoint") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2748,7 +2990,7 @@ func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetServiceEndpointInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2759,26 +3001,26 @@ func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(v *ListTagsForResourceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetServiceEndpointInput(v *GetServiceEndpointInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.ResourceArn != nil { - encoder.SetQuery("resourceArn").String(*v.ResourceArn) + if len(v.ServiceType) > 0 { + encoder.SetQuery("serviceType").String(string(v.ServiceType)) } return nil } -type awsRestjson1_serializeOpListWirelessDevices struct { +type awsRestjson1_serializeOpGetServiceProfile struct { } -func (*awsRestjson1_serializeOpListWirelessDevices) ID() string { +func (*awsRestjson1_serializeOpGetServiceProfile) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListWirelessDevices) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetServiceProfile) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2786,13 +3028,13 @@ func (m *awsRestjson1_serializeOpListWirelessDevices) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListWirelessDevicesInput) + input, ok := in.Parameters.(*GetServiceProfileInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices") + opPath, opQuery := httpbinding.SplitURI("/service-profiles/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2801,7 +3043,7 @@ func (m *awsRestjson1_serializeOpListWirelessDevices) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListWirelessDevicesInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetServiceProfileInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2812,46 +3054,31 @@ func (m *awsRestjson1_serializeOpListWirelessDevices) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListWirelessDevicesInput(v *ListWirelessDevicesInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetServiceProfileInput(v *GetServiceProfileInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.DestinationName != nil { - encoder.SetQuery("destinationName").String(*v.DestinationName) - } - - if v.DeviceProfileId != nil { - encoder.SetQuery("deviceProfileId").String(*v.DeviceProfileId) - } - - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) - } - - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) - } - - if v.ServiceProfileId != nil { - encoder.SetQuery("serviceProfileId").String(*v.ServiceProfileId) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - - if len(v.WirelessDeviceType) > 0 { - encoder.SetQuery("wirelessDeviceType").String(string(v.WirelessDeviceType)) + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpListWirelessGateways struct { +type awsRestjson1_serializeOpGetWirelessDevice struct { } -func (*awsRestjson1_serializeOpListWirelessGateways) ID() string { +func (*awsRestjson1_serializeOpGetWirelessDevice) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListWirelessGateways) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2859,13 +3086,13 @@ func (m *awsRestjson1_serializeOpListWirelessGateways) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListWirelessGatewaysInput) + input, ok := in.Parameters.(*GetWirelessDeviceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateways") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Identifier}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2874,7 +3101,7 @@ func (m *awsRestjson1_serializeOpListWirelessGateways) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListWirelessGatewaysInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2885,30 +3112,35 @@ func (m *awsRestjson1_serializeOpListWirelessGateways) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListWirelessGatewaysInput(v *ListWirelessGatewaysInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceInput(v *GetWirelessDeviceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.Identifier == nil || len(*v.Identifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} + } + if v.Identifier != nil { + if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { + return err + } } - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + if len(v.IdentifierType) > 0 { + encoder.SetQuery("identifierType").String(string(v.IdentifierType)) } return nil } -type awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions struct { +type awsRestjson1_serializeOpGetWirelessDeviceStatistics struct { } -func (*awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) ID() string { +func (*awsRestjson1_serializeOpGetWirelessDeviceStatistics) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetWirelessDeviceStatistics) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2916,13 +3148,13 @@ func (m *awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) HandleSeria return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ListWirelessGatewayTaskDefinitionsInput) + input, ok := in.Parameters.(*GetWirelessDeviceStatisticsInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{WirelessDeviceId}/statistics") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "GET" @@ -2931,7 +3163,7 @@ func (m *awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) HandleSeria return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsListWirelessGatewayTaskDefinitionsInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceStatisticsInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -2942,34 +3174,1758 @@ func (m *awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) HandleSeria return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsListWirelessGatewayTaskDefinitionsInput(v *ListWirelessGatewayTaskDefinitionsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsGetWirelessDeviceStatisticsInput(v *GetWirelessDeviceStatisticsInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.MaxResults != 0 { - encoder.SetQuery("maxResults").Integer(v.MaxResults) + if v.WirelessDeviceId == nil || len(*v.WirelessDeviceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessDeviceId must not be empty")} + } + if v.WirelessDeviceId != nil { + if err := encoder.SetURI("WirelessDeviceId").String(*v.WirelessDeviceId); err != nil { + return err + } } - if v.NextToken != nil { - encoder.SetQuery("nextToken").String(*v.NextToken) + return nil +} + +type awsRestjson1_serializeOpGetWirelessGateway struct { +} + +func (*awsRestjson1_serializeOpGetWirelessGateway) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetWirelessGateway) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - if len(v.TaskDefinitionType) > 0 { - encoder.SetQuery("taskDefinitionType").String(string(v.TaskDefinitionType)) + input, ok := in.Parameters.(*GetWirelessGatewayInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Identifier}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayInput(v *GetWirelessGatewayInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Identifier == nil || len(*v.Identifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} + } + if v.Identifier != nil { + if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { + return err + } + } + + if len(v.IdentifierType) > 0 { + encoder.SetQuery("identifierType").String(string(v.IdentifierType)) } return nil } -type awsRestjson1_serializeOpPutResourceLogLevel struct { +type awsRestjson1_serializeOpGetWirelessGatewayCertificate struct { } -func (*awsRestjson1_serializeOpPutResourceLogLevel) ID() string { +func (*awsRestjson1_serializeOpGetWirelessGatewayCertificate) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpPutResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpGetWirelessGatewayCertificate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetWirelessGatewayCertificateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/certificate") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayCertificateInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayCertificateInput(v *GetWirelessGatewayCertificateInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation struct { +} + +func (*awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetWirelessGatewayFirmwareInformation) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetWirelessGatewayFirmwareInformationInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/firmware-information") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayFirmwareInformationInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayFirmwareInformationInput(v *GetWirelessGatewayFirmwareInformationInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetWirelessGatewayStatistics struct { +} + +func (*awsRestjson1_serializeOpGetWirelessGatewayStatistics) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetWirelessGatewayStatistics) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetWirelessGatewayStatisticsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{WirelessGatewayId}/statistics") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayStatisticsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayStatisticsInput(v *GetWirelessGatewayStatisticsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.WirelessGatewayId == nil || len(*v.WirelessGatewayId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member WirelessGatewayId must not be empty")} + } + if v.WirelessGatewayId != nil { + if err := encoder.SetURI("WirelessGatewayId").String(*v.WirelessGatewayId); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetWirelessGatewayTask struct { +} + +func (*awsRestjson1_serializeOpGetWirelessGatewayTask) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetWirelessGatewayTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetWirelessGatewayTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways/{Id}/tasks") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskInput(v *GetWirelessGatewayTaskInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition struct { +} + +func (*awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpGetWirelessGatewayTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetWirelessGatewayTaskDefinitionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions/{Id}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskDefinitionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsGetWirelessGatewayTaskDefinitionInput(v *GetWirelessGatewayTaskDefinitionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpListDestinations struct { +} + +func (*awsRestjson1_serializeOpListDestinations) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListDestinations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListDestinationsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/destinations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListDestinationsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListDestinationsInput(v *ListDestinationsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListDeviceProfiles struct { +} + +func (*awsRestjson1_serializeOpListDeviceProfiles) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListDeviceProfiles) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListDeviceProfilesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/device-profiles") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListDeviceProfilesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListDeviceProfilesInput(v *ListDeviceProfilesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListFuotaTasks struct { +} + +func (*awsRestjson1_serializeOpListFuotaTasks) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListFuotaTasks) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListFuotaTasksInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListFuotaTasksInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListFuotaTasksInput(v *ListFuotaTasksInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListMulticastGroups struct { +} + +func (*awsRestjson1_serializeOpListMulticastGroups) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListMulticastGroups) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListMulticastGroupsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/multicast-groups") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListMulticastGroupsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListMulticastGroupsInput(v *ListMulticastGroupsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListMulticastGroupsByFuotaTask struct { +} + +func (*awsRestjson1_serializeOpListMulticastGroupsByFuotaTask) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListMulticastGroupsByFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListMulticastGroupsByFuotaTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}/multicast-groups") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListMulticastGroupsByFuotaTaskInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListMulticastGroupsByFuotaTaskInput(v *ListMulticastGroupsByFuotaTaskInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListPartnerAccounts struct { +} + +func (*awsRestjson1_serializeOpListPartnerAccounts) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListPartnerAccounts) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListPartnerAccountsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/partner-accounts") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListPartnerAccountsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListPartnerAccountsInput(v *ListPartnerAccountsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListServiceProfiles struct { +} + +func (*awsRestjson1_serializeOpListServiceProfiles) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListServiceProfiles) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListServiceProfilesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/service-profiles") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListServiceProfilesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListServiceProfilesInput(v *ListServiceProfilesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListTagsForResource struct { +} + +func (*awsRestjson1_serializeOpListTagsForResource) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTagsForResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/tags") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(v *ListTagsForResourceInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceArn != nil { + encoder.SetQuery("resourceArn").String(*v.ResourceArn) + } + + return nil +} + +type awsRestjson1_serializeOpListWirelessDevices struct { +} + +func (*awsRestjson1_serializeOpListWirelessDevices) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListWirelessDevices) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListWirelessDevicesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-devices") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListWirelessDevicesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListWirelessDevicesInput(v *ListWirelessDevicesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.DestinationName != nil { + encoder.SetQuery("destinationName").String(*v.DestinationName) + } + + if v.DeviceProfileId != nil { + encoder.SetQuery("deviceProfileId").String(*v.DeviceProfileId) + } + + if v.FuotaTaskId != nil { + encoder.SetQuery("fuotaTaskId").String(*v.FuotaTaskId) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.MulticastGroupId != nil { + encoder.SetQuery("multicastGroupId").String(*v.MulticastGroupId) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if v.ServiceProfileId != nil { + encoder.SetQuery("serviceProfileId").String(*v.ServiceProfileId) + } + + if len(v.WirelessDeviceType) > 0 { + encoder.SetQuery("wirelessDeviceType").String(string(v.WirelessDeviceType)) + } + + return nil +} + +type awsRestjson1_serializeOpListWirelessGateways struct { +} + +func (*awsRestjson1_serializeOpListWirelessGateways) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListWirelessGateways) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListWirelessGatewaysInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateways") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListWirelessGatewaysInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListWirelessGatewaysInput(v *ListWirelessGatewaysInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions struct { +} + +func (*awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListWirelessGatewayTaskDefinitions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListWirelessGatewayTaskDefinitionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-gateway-task-definitions") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListWirelessGatewayTaskDefinitionsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListWirelessGatewayTaskDefinitionsInput(v *ListWirelessGatewayTaskDefinitionsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != 0 { + encoder.SetQuery("maxResults").Integer(v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if len(v.TaskDefinitionType) > 0 { + encoder.SetQuery("taskDefinitionType").String(string(v.TaskDefinitionType)) + } + + return nil +} + +type awsRestjson1_serializeOpPutResourceLogLevel struct { +} + +func (*awsRestjson1_serializeOpPutResourceLogLevel) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpPutResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutResourceLogLevelInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "PUT" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsPutResourceLogLevelInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentPutResourceLogLevelInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsPutResourceLogLevelInput(v *PutResourceLogLevelInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} + } + if v.ResourceIdentifier != nil { + if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { + return err + } + } + + if v.ResourceType != nil { + encoder.SetQuery("resourceType").String(*v.ResourceType) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentPutResourceLogLevelInput(v *PutResourceLogLevelInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.LogLevel) > 0 { + ok := object.Key("LogLevel") + ok.String(string(v.LogLevel)) + } + + return nil +} + +type awsRestjson1_serializeOpResetAllResourceLogLevels struct { +} + +func (*awsRestjson1_serializeOpResetAllResourceLogLevels) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpResetAllResourceLogLevels) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ResetAllResourceLogLevelsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/log-levels") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsResetAllResourceLogLevelsInput(v *ResetAllResourceLogLevelsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +type awsRestjson1_serializeOpResetResourceLogLevel struct { +} + +func (*awsRestjson1_serializeOpResetResourceLogLevel) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpResetResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ResetResourceLogLevelInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsResetResourceLogLevelInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsResetResourceLogLevelInput(v *ResetResourceLogLevelInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} + } + if v.ResourceIdentifier != nil { + if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { + return err + } + } + + if v.ResourceType != nil { + encoder.SetQuery("resourceType").String(*v.ResourceType) + } + + return nil +} + +type awsRestjson1_serializeOpSendDataToMulticastGroup struct { +} + +func (*awsRestjson1_serializeOpSendDataToMulticastGroup) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpSendDataToMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*SendDataToMulticastGroupInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/data") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsSendDataToMulticastGroupInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentSendDataToMulticastGroupInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsSendDataToMulticastGroupInput(v *SendDataToMulticastGroupInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentSendDataToMulticastGroupInput(v *SendDataToMulticastGroupInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.PayloadData != nil { + ok := object.Key("PayloadData") + ok.String(*v.PayloadData) + } + + if v.WirelessMetadata != nil { + ok := object.Key("WirelessMetadata") + if err := awsRestjson1_serializeDocumentMulticastWirelessMetadata(v.WirelessMetadata, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpSendDataToWirelessDevice struct { +} + +func (*awsRestjson1_serializeOpSendDataToWirelessDevice) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpSendDataToWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*SendDataToWirelessDeviceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/data") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsSendDataToWirelessDeviceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentSendDataToWirelessDeviceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.PayloadData != nil { + ok := object.Key("PayloadData") + ok.String(*v.PayloadData) + } + + if v.TransmitMode != nil { + ok := object.Key("TransmitMode") + ok.Integer(*v.TransmitMode) + } + + if v.WirelessMetadata != nil { + ok := object.Key("WirelessMetadata") + if err := awsRestjson1_serializeDocumentWirelessMetadata(v.WirelessMetadata, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup struct { +} + +func (*awsRestjson1_serializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartBulkAssociateWirelessDeviceWithMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartBulkAssociateWirelessDeviceWithMulticastGroupInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/bulk") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "PATCH" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStartBulkAssociateWirelessDeviceWithMulticastGroupInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartBulkAssociateWirelessDeviceWithMulticastGroupInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartBulkAssociateWirelessDeviceWithMulticastGroupInput(v *StartBulkAssociateWirelessDeviceWithMulticastGroupInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartBulkAssociateWirelessDeviceWithMulticastGroupInput(v *StartBulkAssociateWirelessDeviceWithMulticastGroupInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.QueryString != nil { + ok := object.Key("QueryString") + ok.String(*v.QueryString) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup struct { +} + +func (*awsRestjson1_serializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartBulkDisassociateWirelessDeviceFromMulticastGroupInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/bulk") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(v *StartBulkDisassociateWirelessDeviceFromMulticastGroupInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(v *StartBulkDisassociateWirelessDeviceFromMulticastGroupInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.QueryString != nil { + ok := object.Key("QueryString") + ok.String(*v.QueryString) + } + + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpStartFuotaTask struct { +} + +func (*awsRestjson1_serializeOpStartFuotaTask) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartFuotaTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "PUT" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStartFuotaTaskInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartFuotaTaskInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartFuotaTaskInput(v *StartFuotaTaskInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartFuotaTaskInput(v *StartFuotaTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANStartFuotaTask(v.LoRaWAN, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpStartMulticastGroupSession struct { +} + +func (*awsRestjson1_serializeOpStartMulticastGroupSession) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartMulticastGroupSession) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartMulticastGroupSessionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}/session") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "PUT" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsStartMulticastGroupSessionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartMulticastGroupSessionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartMulticastGroupSessionInput(v *StartMulticastGroupSessionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartMulticastGroupSessionInput(v *StartMulticastGroupSessionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANMulticastSession(v.LoRaWAN, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpTagResource struct { +} + +func (*awsRestjson1_serializeOpTagResource) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpTagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -2977,29 +4933,29 @@ func (m *awsRestjson1_serializeOpPutResourceLogLevel) HandleSerialize(ctx contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*PutResourceLogLevelInput) + input, ok := in.Parameters.(*TagResourceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") + opPath, opQuery := httpbinding.SplitURI("/tags") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "PUT" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsPutResourceLogLevelInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsTagResourceInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentPutResourceLogLevelInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentTagResourceInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3014,47 +4970,40 @@ func (m *awsRestjson1_serializeOpPutResourceLogLevel) HandleSerialize(ctx contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsPutResourceLogLevelInput(v *PutResourceLogLevelInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsTagResourceInput(v *TagResourceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} - } - if v.ResourceIdentifier != nil { - if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { - return err - } - } - - if v.ResourceType != nil { - encoder.SetQuery("resourceType").String(*v.ResourceType) + if v.ResourceArn != nil { + encoder.SetQuery("resourceArn").String(*v.ResourceArn) } return nil } -func awsRestjson1_serializeOpDocumentPutResourceLogLevelInput(v *PutResourceLogLevelInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentTagResourceInput(v *TagResourceInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if len(v.LogLevel) > 0 { - ok := object.Key("LogLevel") - ok.String(string(v.LogLevel)) + if v.Tags != nil { + ok := object.Key("Tags") + if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + return err + } } return nil } -type awsRestjson1_serializeOpResetAllResourceLogLevels struct { +type awsRestjson1_serializeOpTestWirelessDevice struct { } -func (*awsRestjson1_serializeOpResetAllResourceLogLevels) ID() string { +func (*awsRestjson1_serializeOpTestWirelessDevice) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpResetAllResourceLogLevels) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpTestWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3062,21 +5011,25 @@ func (m *awsRestjson1_serializeOpResetAllResourceLogLevels) HandleSerialize(ctx return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ResetAllResourceLogLevelsInput) + input, ok := in.Parameters.(*TestWirelessDeviceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels") + opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/test") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsTestWirelessDeviceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + if request.Request, err = restEncoder.Encode(request.Request); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3084,22 +5037,31 @@ func (m *awsRestjson1_serializeOpResetAllResourceLogLevels) HandleSerialize(ctx return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsResetAllResourceLogLevelsInput(v *ResetAllResourceLogLevelsInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsTestWirelessDeviceInput(v *TestWirelessDeviceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + } + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { + return err + } + } + return nil } -type awsRestjson1_serializeOpResetResourceLogLevel struct { +type awsRestjson1_serializeOpUntagResource struct { } -func (*awsRestjson1_serializeOpResetResourceLogLevel) ID() string { +func (*awsRestjson1_serializeOpUntagResource) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpResetResourceLogLevel) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUntagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3107,13 +5069,13 @@ func (m *awsRestjson1_serializeOpResetResourceLogLevel) HandleSerialize(ctx cont return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*ResetResourceLogLevelInput) + input, ok := in.Parameters.(*UntagResourceInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels/{ResourceIdentifier}") + opPath, opQuery := httpbinding.SplitURI("/tags") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "DELETE" @@ -3122,7 +5084,7 @@ func (m *awsRestjson1_serializeOpResetResourceLogLevel) HandleSerialize(ctx cont return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsResetResourceLogLevelInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsUntagResourceInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3133,35 +5095,32 @@ func (m *awsRestjson1_serializeOpResetResourceLogLevel) HandleSerialize(ctx cont return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsResetResourceLogLevelInput(v *ResetResourceLogLevelInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUntagResourceInput(v *UntagResourceInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.ResourceIdentifier == nil || len(*v.ResourceIdentifier) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member ResourceIdentifier must not be empty")} - } - if v.ResourceIdentifier != nil { - if err := encoder.SetURI("ResourceIdentifier").String(*v.ResourceIdentifier); err != nil { - return err - } + if v.ResourceArn != nil { + encoder.SetQuery("resourceArn").String(*v.ResourceArn) } - if v.ResourceType != nil { - encoder.SetQuery("resourceType").String(*v.ResourceType) + if v.TagKeys != nil { + for i := range v.TagKeys { + encoder.AddQuery("tagKeys").String(v.TagKeys[i]) + } } return nil } -type awsRestjson1_serializeOpSendDataToWirelessDevice struct { +type awsRestjson1_serializeOpUpdateDestination struct { } -func (*awsRestjson1_serializeOpSendDataToWirelessDevice) ID() string { +func (*awsRestjson1_serializeOpUpdateDestination) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpSendDataToWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdateDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3169,29 +5128,29 @@ func (m *awsRestjson1_serializeOpSendDataToWirelessDevice) HandleSerialize(ctx c return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*SendDataToWirelessDeviceInput) + input, ok := in.Parameters.(*UpdateDestinationInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/data") + opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PATCH" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsSendDataToWirelessDeviceInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsUpdateDestinationInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentSendDataToWirelessDeviceInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentUpdateDestinationInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3206,16 +5165,16 @@ func (m *awsRestjson1_serializeOpSendDataToWirelessDevice) HandleSerialize(ctx c return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUpdateDestinationInput(v *UpdateDestinationInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} + if v.Name == nil || len(*v.Name) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + if v.Name != nil { + if err := encoder.SetURI("Name").String(*v.Name); err != nil { return err } } @@ -3223,38 +5182,41 @@ func awsRestjson1_serializeOpHttpBindingsSendDataToWirelessDeviceInput(v *SendDa return nil } -func awsRestjson1_serializeOpDocumentSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentUpdateDestinationInput(v *UpdateDestinationInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.PayloadData != nil { - ok := object.Key("PayloadData") - ok.String(*v.PayloadData) + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) } - if v.TransmitMode != nil { - ok := object.Key("TransmitMode") - ok.Integer(*v.TransmitMode) + if v.Expression != nil { + ok := object.Key("Expression") + ok.String(*v.Expression) } - if v.WirelessMetadata != nil { - ok := object.Key("WirelessMetadata") - if err := awsRestjson1_serializeDocumentWirelessMetadata(v.WirelessMetadata, ok); err != nil { - return err - } + if len(v.ExpressionType) > 0 { + ok := object.Key("ExpressionType") + ok.String(string(v.ExpressionType)) + } + + if v.RoleArn != nil { + ok := object.Key("RoleArn") + ok.String(*v.RoleArn) } return nil } -type awsRestjson1_serializeOpTagResource struct { +type awsRestjson1_serializeOpUpdateFuotaTask struct { } -func (*awsRestjson1_serializeOpTagResource) ID() string { +func (*awsRestjson1_serializeOpUpdateFuotaTask) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpTagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdateFuotaTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3262,29 +5224,29 @@ func (m *awsRestjson1_serializeOpTagResource) HandleSerialize(ctx context.Contex return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*TagResourceInput) + input, ok := in.Parameters.(*UpdateFuotaTaskInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/tags") + opPath, opQuery := httpbinding.SplitURI("/fuota-tasks/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PATCH" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsTagResourceInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsUpdateFuotaTaskInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentTagResourceInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentUpdateFuotaTaskInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3299,25 +5261,16 @@ func (m *awsRestjson1_serializeOpTagResource) HandleSerialize(ctx context.Contex return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsTagResourceInput(v *TagResourceInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUpdateFuotaTaskInput(v *UpdateFuotaTaskInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.ResourceArn != nil { - encoder.SetQuery("resourceArn").String(*v.ResourceArn) + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - - return nil -} - -func awsRestjson1_serializeOpDocumentTagResourceInput(v *TagResourceInput, value smithyjson.Value) error { - object := value.Object() - defer object.Close() - - if v.Tags != nil { - ok := object.Key("Tags") - if err := awsRestjson1_serializeDocumentTagList(v.Tags, ok); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } @@ -3325,72 +5278,48 @@ func awsRestjson1_serializeOpDocumentTagResourceInput(v *TagResourceInput, value return nil } -type awsRestjson1_serializeOpTestWirelessDevice struct { -} - -func (*awsRestjson1_serializeOpTestWirelessDevice) ID() string { - return "OperationSerializer" -} - -func (m *awsRestjson1_serializeOpTestWirelessDevice) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( - out middleware.SerializeOutput, metadata middleware.Metadata, err error, -) { - request, ok := in.Request.(*smithyhttp.Request) - if !ok { - return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} - } - - input, ok := in.Parameters.(*TestWirelessDeviceInput) - _ = input - if !ok { - return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} - } - - opPath, opQuery := httpbinding.SplitURI("/wireless-devices/{Id}/test") - request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) - request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" - restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) - if err != nil { - return out, metadata, &smithy.SerializationError{Err: err} - } +func awsRestjson1_serializeOpDocumentUpdateFuotaTaskInput(v *UpdateFuotaTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() - if err := awsRestjson1_serializeOpHttpBindingsTestWirelessDeviceInput(input, restEncoder); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} + if v.Description != nil { + ok := object.Key("Description") + ok.String(*v.Description) } - if request.Request, err = restEncoder.Encode(request.Request); err != nil { - return out, metadata, &smithy.SerializationError{Err: err} + if v.FirmwareUpdateImage != nil { + ok := object.Key("FirmwareUpdateImage") + ok.String(*v.FirmwareUpdateImage) } - in.Request = request - return next.HandleSerialize(ctx, in) -} -func awsRestjson1_serializeOpHttpBindingsTestWirelessDeviceInput(v *TestWirelessDeviceInput, encoder *httpbinding.Encoder) error { - if v == nil { - return fmt.Errorf("unsupported serialization of nil %T", v) + if v.FirmwareUpdateRole != nil { + ok := object.Key("FirmwareUpdateRole") + ok.String(*v.FirmwareUpdateRole) } - if v.Id == nil || len(*v.Id) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} - } - if v.Id != nil { - if err := encoder.SetURI("Id").String(*v.Id); err != nil { + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANFuotaTask(v.LoRaWAN, ok); err != nil { return err } } + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) + } + return nil } -type awsRestjson1_serializeOpUntagResource struct { +type awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes struct { } -func (*awsRestjson1_serializeOpUntagResource) ID() string { +func (*awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpUntagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3398,22 +5327,29 @@ func (m *awsRestjson1_serializeOpUntagResource) HandleSerialize(ctx context.Cont return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*UntagResourceInput) + input, ok := in.Parameters.(*UpdateLogLevelsByResourceTypesInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/tags") + opPath, opQuery := httpbinding.SplitURI("/log-levels") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "DELETE" + request.Method = "POST" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsUntagResourceInput(input, restEncoder); err != nil { + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateLogLevelsByResourceTypesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3424,32 +5360,48 @@ func (m *awsRestjson1_serializeOpUntagResource) HandleSerialize(ctx context.Cont return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsUntagResourceInput(v *UntagResourceInput, encoder *httpbinding.Encoder) error { - if v == nil { - return fmt.Errorf("unsupported serialization of nil %T", v) +func awsRestjson1_serializeOpHttpBindingsUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceTypesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceTypesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.DefaultLogLevel) > 0 { + ok := object.Key("DefaultLogLevel") + ok.String(string(v.DefaultLogLevel)) } - if v.ResourceArn != nil { - encoder.SetQuery("resourceArn").String(*v.ResourceArn) + if v.WirelessDeviceLogOptions != nil { + ok := object.Key("WirelessDeviceLogOptions") + if err := awsRestjson1_serializeDocumentWirelessDeviceLogOptionList(v.WirelessDeviceLogOptions, ok); err != nil { + return err + } } - if v.TagKeys != nil { - for i := range v.TagKeys { - encoder.AddQuery("tagKeys").String(v.TagKeys[i]) + if v.WirelessGatewayLogOptions != nil { + ok := object.Key("WirelessGatewayLogOptions") + if err := awsRestjson1_serializeDocumentWirelessGatewayLogOptionList(v.WirelessGatewayLogOptions, ok); err != nil { + return err } } return nil } -type awsRestjson1_serializeOpUpdateDestination struct { +type awsRestjson1_serializeOpUpdateMulticastGroup struct { } -func (*awsRestjson1_serializeOpUpdateDestination) ID() string { +func (*awsRestjson1_serializeOpUpdateMulticastGroup) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpUpdateDestination) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdateMulticastGroup) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3457,13 +5409,13 @@ func (m *awsRestjson1_serializeOpUpdateDestination) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*UpdateDestinationInput) + input, ok := in.Parameters.(*UpdateMulticastGroupInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/destinations/{Name}") + opPath, opQuery := httpbinding.SplitURI("/multicast-groups/{Id}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "PATCH" @@ -3472,14 +5424,14 @@ func (m *awsRestjson1_serializeOpUpdateDestination) HandleSerialize(ctx context. return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsUpdateDestinationInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsUpdateMulticastGroupInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentUpdateDestinationInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentUpdateMulticastGroupInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3494,16 +5446,16 @@ func (m *awsRestjson1_serializeOpUpdateDestination) HandleSerialize(ctx context. return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsUpdateDestinationInput(v *UpdateDestinationInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUpdateMulticastGroupInput(v *UpdateMulticastGroupInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.Name == nil || len(*v.Name) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member Name must not be empty")} + if v.Id == nil || len(*v.Id) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Id must not be empty")} } - if v.Name != nil { - if err := encoder.SetURI("Name").String(*v.Name); err != nil { + if v.Id != nil { + if err := encoder.SetURI("Id").String(*v.Id); err != nil { return err } } @@ -3511,7 +5463,7 @@ func awsRestjson1_serializeOpHttpBindingsUpdateDestinationInput(v *UpdateDestina return nil } -func awsRestjson1_serializeOpDocumentUpdateDestinationInput(v *UpdateDestinationInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentUpdateMulticastGroupInput(v *UpdateMulticastGroupInput, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -3520,32 +5472,29 @@ func awsRestjson1_serializeOpDocumentUpdateDestinationInput(v *UpdateDestination ok.String(*v.Description) } - if v.Expression != nil { - ok := object.Key("Expression") - ok.String(*v.Expression) - } - - if len(v.ExpressionType) > 0 { - ok := object.Key("ExpressionType") - ok.String(string(v.ExpressionType)) + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANMulticast(v.LoRaWAN, ok); err != nil { + return err + } } - if v.RoleArn != nil { - ok := object.Key("RoleArn") - ok.String(*v.RoleArn) + if v.Name != nil { + ok := object.Key("Name") + ok.String(*v.Name) } return nil } -type awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes struct { +type awsRestjson1_serializeOpUpdatePartnerAccount struct { } -func (*awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) ID() string { +func (*awsRestjson1_serializeOpUpdatePartnerAccount) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdatePartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3553,25 +5502,29 @@ func (m *awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) HandleSerialize return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*UpdateLogLevelsByResourceTypesInput) + input, ok := in.Parameters.(*UpdatePartnerAccountInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/log-levels") + opPath, opQuery := httpbinding.SplitURI("/partner-accounts/{PartnerAccountId}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) - request.Method = "POST" + request.Method = "PATCH" restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) if err != nil { return out, metadata, &smithy.SerializationError{Err: err} } + if err := awsRestjson1_serializeOpHttpBindingsUpdatePartnerAccountInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentUpdateLogLevelsByResourceTypesInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentUpdatePartnerAccountInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3586,33 +5539,34 @@ func (m *awsRestjson1_serializeOpUpdateLogLevelsByResourceTypes) HandleSerialize return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceTypesInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUpdatePartnerAccountInput(v *UpdatePartnerAccountInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } + if v.PartnerAccountId == nil || len(*v.PartnerAccountId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member PartnerAccountId must not be empty")} + } + if v.PartnerAccountId != nil { + if err := encoder.SetURI("PartnerAccountId").String(*v.PartnerAccountId); err != nil { + return err + } + } + + if len(v.PartnerType) > 0 { + encoder.SetQuery("partnerType").String(string(v.PartnerType)) + } + return nil } -func awsRestjson1_serializeOpDocumentUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceTypesInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentUpdatePartnerAccountInput(v *UpdatePartnerAccountInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if len(v.DefaultLogLevel) > 0 { - ok := object.Key("DefaultLogLevel") - ok.String(string(v.DefaultLogLevel)) - } - - if v.WirelessDeviceLogOptions != nil { - ok := object.Key("WirelessDeviceLogOptions") - if err := awsRestjson1_serializeDocumentWirelessDeviceLogOptionList(v.WirelessDeviceLogOptions, ok); err != nil { - return err - } - } - - if v.WirelessGatewayLogOptions != nil { - ok := object.Key("WirelessGatewayLogOptions") - if err := awsRestjson1_serializeDocumentWirelessGatewayLogOptionList(v.WirelessGatewayLogOptions, ok); err != nil { + if v.Sidewalk != nil { + ok := object.Key("Sidewalk") + if err := awsRestjson1_serializeDocumentSidewalkUpdateAccount(v.Sidewalk, ok); err != nil { return err } } @@ -3620,14 +5574,14 @@ func awsRestjson1_serializeOpDocumentUpdateLogLevelsByResourceTypesInput(v *Upda return nil } -type awsRestjson1_serializeOpUpdatePartnerAccount struct { +type awsRestjson1_serializeOpUpdateResourceEventConfiguration struct { } -func (*awsRestjson1_serializeOpUpdatePartnerAccount) ID() string { +func (*awsRestjson1_serializeOpUpdateResourceEventConfiguration) ID() string { return "OperationSerializer" } -func (m *awsRestjson1_serializeOpUpdatePartnerAccount) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( +func (m *awsRestjson1_serializeOpUpdateResourceEventConfiguration) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( out middleware.SerializeOutput, metadata middleware.Metadata, err error, ) { request, ok := in.Request.(*smithyhttp.Request) @@ -3635,13 +5589,13 @@ func (m *awsRestjson1_serializeOpUpdatePartnerAccount) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} } - input, ok := in.Parameters.(*UpdatePartnerAccountInput) + input, ok := in.Parameters.(*UpdateResourceEventConfigurationInput) _ = input if !ok { return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} } - opPath, opQuery := httpbinding.SplitURI("/partner-accounts/{PartnerAccountId}") + opPath, opQuery := httpbinding.SplitURI("/event-configurations/{Identifier}") request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) request.Method = "PATCH" @@ -3650,14 +5604,14 @@ func (m *awsRestjson1_serializeOpUpdatePartnerAccount) HandleSerialize(ctx conte return out, metadata, &smithy.SerializationError{Err: err} } - if err := awsRestjson1_serializeOpHttpBindingsUpdatePartnerAccountInput(input, restEncoder); err != nil { + if err := awsRestjson1_serializeOpHttpBindingsUpdateResourceEventConfigurationInput(input, restEncoder); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } restEncoder.SetHeader("Content-Type").String("application/json") jsonEncoder := smithyjson.NewEncoder() - if err := awsRestjson1_serializeOpDocumentUpdatePartnerAccountInput(input, jsonEncoder.Value); err != nil { + if err := awsRestjson1_serializeOpDocumentUpdateResourceEventConfigurationInput(input, jsonEncoder.Value); err != nil { return out, metadata, &smithy.SerializationError{Err: err} } @@ -3672,20 +5626,24 @@ func (m *awsRestjson1_serializeOpUpdatePartnerAccount) HandleSerialize(ctx conte return next.HandleSerialize(ctx, in) } -func awsRestjson1_serializeOpHttpBindingsUpdatePartnerAccountInput(v *UpdatePartnerAccountInput, encoder *httpbinding.Encoder) error { +func awsRestjson1_serializeOpHttpBindingsUpdateResourceEventConfigurationInput(v *UpdateResourceEventConfigurationInput, encoder *httpbinding.Encoder) error { if v == nil { return fmt.Errorf("unsupported serialization of nil %T", v) } - if v.PartnerAccountId == nil || len(*v.PartnerAccountId) == 0 { - return &smithy.SerializationError{Err: fmt.Errorf("input member PartnerAccountId must not be empty")} + if v.Identifier == nil || len(*v.Identifier) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member Identifier must not be empty")} } - if v.PartnerAccountId != nil { - if err := encoder.SetURI("PartnerAccountId").String(*v.PartnerAccountId); err != nil { + if v.Identifier != nil { + if err := encoder.SetURI("Identifier").String(*v.Identifier); err != nil { return err } } + if len(v.IdentifierType) > 0 { + encoder.SetQuery("identifierType").String(string(v.IdentifierType)) + } + if len(v.PartnerType) > 0 { encoder.SetQuery("partnerType").String(string(v.PartnerType)) } @@ -3693,13 +5651,20 @@ func awsRestjson1_serializeOpHttpBindingsUpdatePartnerAccountInput(v *UpdatePart return nil } -func awsRestjson1_serializeOpDocumentUpdatePartnerAccountInput(v *UpdatePartnerAccountInput, value smithyjson.Value) error { +func awsRestjson1_serializeOpDocumentUpdateResourceEventConfigurationInput(v *UpdateResourceEventConfigurationInput, value smithyjson.Value) error { object := value.Object() defer object.Close() - if v.Sidewalk != nil { - ok := object.Key("Sidewalk") - if err := awsRestjson1_serializeDocumentSidewalkUpdateAccount(v.Sidewalk, ok); err != nil { + if v.DeviceRegistrationState != nil { + ok := object.Key("DeviceRegistrationState") + if err := awsRestjson1_serializeDocumentDeviceRegistrationStateEventConfiguration(v.DeviceRegistrationState, ok); err != nil { + return err + } + } + + if v.Proximity != nil { + ok := object.Key("Proximity") + if err := awsRestjson1_serializeDocumentProximityEventConfiguration(v.Proximity, ok); err != nil { return err } } @@ -3943,6 +5908,20 @@ func awsRestjson1_serializeDocumentAbpV1_1(v *types.AbpV1_1, value smithyjson.Va return nil } +func awsRestjson1_serializeDocumentDeviceRegistrationStateEventConfiguration(v *types.DeviceRegistrationStateEventConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Sidewalk != nil { + ok := object.Key("Sidewalk") + if err := awsRestjson1_serializeDocumentSidewalkEventNotificationConfigurations(v.Sidewalk, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentFactoryPresetFreqsList(v []int32, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -3954,6 +5933,28 @@ func awsRestjson1_serializeDocumentFactoryPresetFreqsList(v []int32, value smith return nil } +func awsRestjson1_serializeDocumentFPorts(v *types.FPorts, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClockSync != nil { + ok := object.Key("ClockSync") + ok.Integer(*v.ClockSync) + } + + if v.Fuota != nil { + ok := object.Key("Fuota") + ok.Integer(*v.Fuota) + } + + if v.Multicast != nil { + ok := object.Key("Multicast") + ok.Integer(*v.Multicast) + } + + return nil +} + func awsRestjson1_serializeDocumentJoinEuiFilters(v [][]string, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -4009,6 +6010,13 @@ func awsRestjson1_serializeDocumentLoRaWANDevice(v *types.LoRaWANDevice, value s ok.String(*v.DeviceProfileId) } + if v.FPorts != nil { + ok := object.Key("FPorts") + if err := awsRestjson1_serializeDocumentFPorts(v.FPorts, ok); err != nil { + return err + } + } + if v.OtaaV1_0_x != nil { ok := object.Key("OtaaV1_0_x") if err := awsRestjson1_serializeDocumentOtaaV1_0_x(v.OtaaV1_0_x, ok); err != nil { @@ -4135,6 +6143,18 @@ func awsRestjson1_serializeDocumentLoRaWANDeviceProfile(v *types.LoRaWANDevicePr return nil } +func awsRestjson1_serializeDocumentLoRaWANFuotaTask(v *types.LoRaWANFuotaTask, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.RfRegion) > 0 { + ok := object.Key("RfRegion") + ok.String(string(v.RfRegion)) + } + + return nil +} + func awsRestjson1_serializeDocumentLoRaWANGateway(v *types.LoRaWANGateway, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -4195,6 +6215,62 @@ func awsRestjson1_serializeDocumentLoRaWANGatewayVersion(v *types.LoRaWANGateway return nil } +func awsRestjson1_serializeDocumentLoRaWANMulticast(v *types.LoRaWANMulticast, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.DlClass) > 0 { + ok := object.Key("DlClass") + ok.String(string(v.DlClass)) + } + + if len(v.RfRegion) > 0 { + ok := object.Key("RfRegion") + ok.String(string(v.RfRegion)) + } + + return nil +} + +func awsRestjson1_serializeDocumentLoRaWANMulticastMetadata(v *types.LoRaWANMulticastMetadata, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FPort != nil { + ok := object.Key("FPort") + ok.Integer(*v.FPort) + } + + return nil +} + +func awsRestjson1_serializeDocumentLoRaWANMulticastSession(v *types.LoRaWANMulticastSession, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DlDr != nil { + ok := object.Key("DlDr") + ok.Integer(*v.DlDr) + } + + if v.DlFreq != nil { + ok := object.Key("DlFreq") + ok.Integer(*v.DlFreq) + } + + if v.SessionStartTime != nil { + ok := object.Key("SessionStartTime") + ok.String(smithytime.FormatDateTime(*v.SessionStartTime)) + } + + if v.SessionTimeout != nil { + ok := object.Key("SessionTimeout") + ok.Integer(*v.SessionTimeout) + } + + return nil +} + func awsRestjson1_serializeDocumentLoRaWANSendDataToDevice(v *types.LoRaWANSendDataToDevice, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -4219,6 +6295,18 @@ func awsRestjson1_serializeDocumentLoRaWANServiceProfile(v *types.LoRaWANService return nil } +func awsRestjson1_serializeDocumentLoRaWANStartFuotaTask(v *types.LoRaWANStartFuotaTask, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.StartTime != nil { + ok := object.Key("StartTime") + ok.String(smithytime.FormatDateTime(*v.StartTime)) + } + + return nil +} + func awsRestjson1_serializeDocumentLoRaWANUpdateDevice(v *types.LoRaWANUpdateDevice, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -4267,6 +6355,20 @@ func awsRestjson1_serializeDocumentLoRaWANUpdateGatewayTaskCreate(v *types.LoRaW return nil } +func awsRestjson1_serializeDocumentMulticastWirelessMetadata(v *types.MulticastWirelessMetadata, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.LoRaWAN != nil { + ok := object.Key("LoRaWAN") + if err := awsRestjson1_serializeDocumentLoRaWANMulticastMetadata(v.LoRaWAN, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentNetIdFilters(v []string, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -4292,6 +6394,11 @@ func awsRestjson1_serializeDocumentOtaaV1_0_x(v *types.OtaaV1_0_x, value smithyj ok.String(*v.AppKey) } + if v.GenAppKey != nil { + ok := object.Key("GenAppKey") + ok.String(*v.GenAppKey) + } + return nil } @@ -4317,6 +6424,20 @@ func awsRestjson1_serializeDocumentOtaaV1_1(v *types.OtaaV1_1, value smithyjson. return nil } +func awsRestjson1_serializeDocumentProximityEventConfiguration(v *types.ProximityEventConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Sidewalk != nil { + ok := object.Key("Sidewalk") + if err := awsRestjson1_serializeDocumentSidewalkEventNotificationConfigurations(v.Sidewalk, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentSessionKeysAbpV1_0_x(v *types.SessionKeysAbpV1_0_x, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -4378,6 +6499,18 @@ func awsRestjson1_serializeDocumentSidewalkAccountInfo(v *types.SidewalkAccountI return nil } +func awsRestjson1_serializeDocumentSidewalkEventNotificationConfigurations(v *types.SidewalkEventNotificationConfigurations, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.AmazonIdEventTopic) > 0 { + ok := object.Key("AmazonIdEventTopic") + ok.String(string(v.AmazonIdEventTopic)) + } + + return nil +} + func awsRestjson1_serializeDocumentSidewalkSendDataToDevice(v *types.SidewalkSendDataToDevice, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/iotwireless/types/enums.go b/service/iotwireless/types/enums.go index 09636a67f16..5f09a54aa2e 100644 --- a/service/iotwireless/types/enums.go +++ b/service/iotwireless/types/enums.go @@ -62,6 +62,24 @@ func (DeviceState) Values() []DeviceState { } } +type DlClass string + +// Enum values for DlClass +const ( + DlClassClassB DlClass = "ClassB" + DlClassClassC DlClass = "ClassC" +) + +// Values returns all known values for DlClass. Note that this can be expanded in +// the future, and so it is only as up to date as the client. The ordering of this +// slice is not guaranteed to be stable across updates. +func (DlClass) Values() []DlClass { + return []DlClass{ + "ClassB", + "ClassC", + } +} + type Event string // Enum values for Event @@ -86,6 +104,40 @@ func (Event) Values() []Event { } } +type EventNotificationPartnerType string + +// Enum values for EventNotificationPartnerType +const ( + EventNotificationPartnerTypeSidewalk EventNotificationPartnerType = "Sidewalk" +) + +// Values returns all known values for EventNotificationPartnerType. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (EventNotificationPartnerType) Values() []EventNotificationPartnerType { + return []EventNotificationPartnerType{ + "Sidewalk", + } +} + +type EventNotificationTopicStatus string + +// Enum values for EventNotificationTopicStatus +const ( + EventNotificationTopicStatusEnabled EventNotificationTopicStatus = "Enabled" + EventNotificationTopicStatusDisabled EventNotificationTopicStatus = "Disabled" +) + +// Values returns all known values for EventNotificationTopicStatus. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (EventNotificationTopicStatus) Values() []EventNotificationTopicStatus { + return []EventNotificationTopicStatus{ + "Enabled", + "Disabled", + } +} + type ExpressionType string // Enum values for ExpressionType @@ -104,6 +156,82 @@ func (ExpressionType) Values() []ExpressionType { } } +type FuotaDeviceStatus string + +// Enum values for FuotaDeviceStatus +const ( + FuotaDeviceStatusInitial FuotaDeviceStatus = "Initial" + FuotaDeviceStatusPackageNotSupported FuotaDeviceStatus = "Package_Not_Supported" + FuotaDeviceStatusFragAlgoUnsupported FuotaDeviceStatus = "FragAlgo_unsupported" + FuotaDeviceStatusNotEnoughMemory FuotaDeviceStatus = "Not_enough_memory" + FuotaDeviceStatusFragIndexUnsupported FuotaDeviceStatus = "FragIndex_unsupported" + FuotaDeviceStatusWrongDescriptor FuotaDeviceStatus = "Wrong_descriptor" + FuotaDeviceStatusSessionCntReplay FuotaDeviceStatus = "SessionCnt_replay" + FuotaDeviceStatusMissingFrag FuotaDeviceStatus = "MissingFrag" + FuotaDeviceStatusMemoryError FuotaDeviceStatus = "MemoryError" + FuotaDeviceStatusMICError FuotaDeviceStatus = "MICError" + FuotaDeviceStatusSuccessful FuotaDeviceStatus = "Successful" +) + +// Values returns all known values for FuotaDeviceStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (FuotaDeviceStatus) Values() []FuotaDeviceStatus { + return []FuotaDeviceStatus{ + "Initial", + "Package_Not_Supported", + "FragAlgo_unsupported", + "Not_enough_memory", + "FragIndex_unsupported", + "Wrong_descriptor", + "SessionCnt_replay", + "MissingFrag", + "MemoryError", + "MICError", + "Successful", + } +} + +type FuotaTaskStatus string + +// Enum values for FuotaTaskStatus +const ( + FuotaTaskStatusPending FuotaTaskStatus = "Pending" + FuotaTaskStatusFuotaSessionWaiting FuotaTaskStatus = "FuotaSession_Waiting" + FuotaTaskStatusInFuotaSession FuotaTaskStatus = "In_FuotaSession" + FuotaTaskStatusFuotaDone FuotaTaskStatus = "FuotaDone" + FuotaTaskStatusDeleteWaiting FuotaTaskStatus = "Delete_Waiting" +) + +// Values returns all known values for FuotaTaskStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (FuotaTaskStatus) Values() []FuotaTaskStatus { + return []FuotaTaskStatus{ + "Pending", + "FuotaSession_Waiting", + "In_FuotaSession", + "FuotaDone", + "Delete_Waiting", + } +} + +type IdentifierType string + +// Enum values for IdentifierType +const ( + IdentifierTypePartnerAccountId IdentifierType = "PartnerAccountId" +) + +// Values returns all known values for IdentifierType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (IdentifierType) Values() []IdentifierType { + return []IdentifierType{ + "PartnerAccountId", + } +} + type LogLevel string // Enum values for LogLevel @@ -180,6 +308,28 @@ func (SigningAlg) Values() []SigningAlg { } } +type SupportedRfRegion string + +// Enum values for SupportedRfRegion +const ( + SupportedRfRegionEu868 SupportedRfRegion = "EU868" + SupportedRfRegionUs915 SupportedRfRegion = "US915" + SupportedRfRegionAu915 SupportedRfRegion = "AU915" + SupportedRfRegionAs9231 SupportedRfRegion = "AS923-1" +) + +// Values returns all known values for SupportedRfRegion. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (SupportedRfRegion) Values() []SupportedRfRegion { + return []SupportedRfRegion{ + "EU868", + "US915", + "AU915", + "AS923-1", + } +} + type WirelessDeviceEvent string // Enum values for WirelessDeviceEvent diff --git a/service/iotwireless/types/types.go b/service/iotwireless/types/types.go index 34ce5cd58da..3d6195d85df 100644 --- a/service/iotwireless/types/types.go +++ b/service/iotwireless/types/types.go @@ -4,6 +4,7 @@ package types import ( smithydocument "github.com/aws/smithy-go/document" + "time" ) // ABP device object for LoRaWAN specification v1.0.x @@ -85,6 +86,47 @@ type DeviceProfile struct { noSmithyDocumentSerde } +// Device registration state event configuration object for enabling and disabling +// relevant topics. +type DeviceRegistrationStateEventConfiguration struct { + + // Device registration state event configuration object for enabling or disabling + // Sidewalk related event topics. + Sidewalk *SidewalkEventNotificationConfigurations + + noSmithyDocumentSerde +} + +// List of FPort assigned for different LoRaWAN application packages to use +type FPorts struct { + + // The Fport value. + ClockSync *int32 + + // The Fport value. + Fuota *int32 + + // The Fport value. + Multicast *int32 + + noSmithyDocumentSerde +} + +// A FUOTA task. +type FuotaTask struct { + + // The arn of a FUOTA task. + Arn *string + + // The ID of a FUOTA task. + Id *string + + // The name of a FUOTA task. + Name *string + + noSmithyDocumentSerde +} + // LoRaWAN object for create functions. type LoRaWANDevice struct { @@ -100,6 +142,9 @@ type LoRaWANDevice struct { // The ID of the device profile for the new wireless device. DeviceProfileId *string + // List of FPort assigned for different LoRaWAN application packages to use + FPorts *FPorts + // OTAA device object for create APIs for v1.0.x OtaaV1_0_x *OtaaV1_0_x @@ -200,6 +245,27 @@ type LoRaWANDeviceProfile struct { noSmithyDocumentSerde } +// The LoRaWAN information used with a FUOTA task. +type LoRaWANFuotaTask struct { + + // Supported RfRegions + RfRegion SupportedRfRegion + + noSmithyDocumentSerde +} + +// The LoRaWAN information returned from getting a FUOTA task. +type LoRaWANFuotaTaskGetInfo struct { + + // The frequency band (RFRegion) value. + RfRegion *string + + // Start time of a FUOTA task. + StartTime *time.Time + + noSmithyDocumentSerde +} + // LoRaWANGateway object. type LoRaWANGateway struct { @@ -333,6 +399,64 @@ type LoRaWANListDevice struct { noSmithyDocumentSerde } +// The LoRaWAN information that is to be used with the multicast group. +type LoRaWANMulticast struct { + + // DlClass for LoRaWAM, valid values are ClassB and ClassC. + DlClass DlClass + + // Supported RfRegions + RfRegion SupportedRfRegion + + noSmithyDocumentSerde +} + +// The LoRaWAN information that is to be returned from getting multicast group +// information. +type LoRaWANMulticastGet struct { + + // DlClass for LoRaWAM, valid values are ClassB and ClassC. + DlClass DlClass + + // Number of devices that are associated to the multicast group. + NumberOfDevicesInGroup *int32 + + // Number of devices that are requested to be associated with the multicast group. + NumberOfDevicesRequested *int32 + + // Supported RfRegions + RfRegion SupportedRfRegion + + noSmithyDocumentSerde +} + +// The metadata information of the LoRaWAN multicast group. +type LoRaWANMulticastMetadata struct { + + // The Fport value. + FPort *int32 + + noSmithyDocumentSerde +} + +// The LoRaWAN information used with the multicast session. +type LoRaWANMulticastSession struct { + + // Downlink data rate. + DlDr *int32 + + // Downlink frequency. + DlFreq *int32 + + // Timestamp of when the multicast group session is to start. + SessionStartTime *time.Time + + // How long before a multicast group session is to timeout. + SessionTimeout *int32 + + noSmithyDocumentSerde +} + // LoRaWAN router info. type LoRaWANSendDataToDevice struct { @@ -351,6 +475,15 @@ type LoRaWANServiceProfile struct { noSmithyDocumentSerde } +// The LoRaWAN information used to start a FUOTA task. +type LoRaWANStartFuotaTask struct { + + // Start time of a FUOTA task. + StartTime *time.Time + + noSmithyDocumentSerde +} + // LoRaWAN object for update functions. type LoRaWANUpdateDevice struct { @@ -393,6 +526,39 @@ type LoRaWANUpdateGatewayTaskEntry struct { noSmithyDocumentSerde } +// A multicast group. +type MulticastGroup struct { + + // The arn of the multicast group. + Arn *string + + // The ID of the multicast group. + Id *string + + // The name of the multicast group. + Name *string + + noSmithyDocumentSerde +} + +// A multicast group that is associated with a FUOTA task. +type MulticastGroupByFuotaTask struct { + + // The ID of the multicast group. + Id *string + + noSmithyDocumentSerde +} + +// Wireless metadata that is to be sent to multicast group. +type MulticastWirelessMetadata struct { + + // The metadata information of the LoRaWAN multicast group. + LoRaWAN *LoRaWANMulticastMetadata + + noSmithyDocumentSerde +} + // OTAA device object for v1.0.x type OtaaV1_0_x struct { @@ -402,6 +568,9 @@ type OtaaV1_0_x struct { // The AppKey value. AppKey *string + // The GenAppKey value. + GenAppKey *string + noSmithyDocumentSerde } @@ -420,6 +589,16 @@ type OtaaV1_1 struct { noSmithyDocumentSerde } +// Proximity event configuration object for enabling and disabling relevant topics. +type ProximityEventConfiguration struct { + + // Proximity event configuration object for enabling or disabling Sidewalk related + // event topics. + Sidewalk *SidewalkEventNotificationConfigurations + + noSmithyDocumentSerde +} + // Information about a service profile. type ServiceProfile struct { @@ -528,6 +707,16 @@ type SidewalkDeviceMetadata struct { noSmithyDocumentSerde } +// SidewalkEventNotificationConfigurations object Event configuration object for +// Sidewalk related event topics. +type SidewalkEventNotificationConfigurations struct { + + // Enum to denote whether amazon id event topic is enabled or disabled. + AmazonIdEventTopic EventNotificationTopicStatus + + noSmithyDocumentSerde +} + // Sidewalk object used by list functions. type SidewalkListDevice struct { @@ -662,6 +851,9 @@ type WirelessDeviceStatistics struct { // The name of the destination to which the device is assigned. DestinationName *string + // The status of a wireless device in a FUOTA task. + FuotaDeviceStatus FuotaDeviceStatus + // The ID of the wireless device reporting the data. Id *string @@ -671,6 +863,12 @@ type WirelessDeviceStatistics struct { // LoRaWAN device info. LoRaWAN *LoRaWANListDevice + // Id of the multicast group. + McGroupId *int32 + + // The status of the wireless device in the multicast group. + MulticastDeviceStatus *string + // The name of the resource. Name *string diff --git a/service/iotwireless/validators.go b/service/iotwireless/validators.go index 039acf19831..9361df75db4 100644 --- a/service/iotwireless/validators.go +++ b/service/iotwireless/validators.go @@ -30,6 +30,66 @@ func (m *validateOpAssociateAwsAccountWithPartnerAccount) HandleInitialize(ctx c return next.HandleInitialize(ctx, in) } +type validateOpAssociateMulticastGroupWithFuotaTask struct { +} + +func (*validateOpAssociateMulticastGroupWithFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpAssociateMulticastGroupWithFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*AssociateMulticastGroupWithFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpAssociateMulticastGroupWithFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpAssociateWirelessDeviceWithFuotaTask struct { +} + +func (*validateOpAssociateWirelessDeviceWithFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpAssociateWirelessDeviceWithFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*AssociateWirelessDeviceWithFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpAssociateWirelessDeviceWithFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpAssociateWirelessDeviceWithMulticastGroup struct { +} + +func (*validateOpAssociateWirelessDeviceWithMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpAssociateWirelessDeviceWithMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*AssociateWirelessDeviceWithMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpAssociateWirelessDeviceWithMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpAssociateWirelessDeviceWithThing struct { } @@ -90,6 +150,26 @@ func (m *validateOpAssociateWirelessGatewayWithThing) HandleInitialize(ctx conte return next.HandleInitialize(ctx, in) } +type validateOpCancelMulticastGroupSession struct { +} + +func (*validateOpCancelMulticastGroupSession) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCancelMulticastGroupSession) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CancelMulticastGroupSessionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCancelMulticastGroupSessionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpCreateDestination struct { } @@ -130,6 +210,46 @@ func (m *validateOpCreateDeviceProfile) HandleInitialize(ctx context.Context, in return next.HandleInitialize(ctx, in) } +type validateOpCreateFuotaTask struct { +} + +func (*validateOpCreateFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateMulticastGroup struct { +} + +func (*validateOpCreateMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpCreateServiceProfile struct { } @@ -270,6 +390,46 @@ func (m *validateOpDeleteDeviceProfile) HandleInitialize(ctx context.Context, in return next.HandleInitialize(ctx, in) } +type validateOpDeleteFuotaTask struct { +} + +func (*validateOpDeleteFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteMulticastGroup struct { +} + +func (*validateOpDeleteMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDeleteServiceProfile struct { } @@ -390,6 +550,66 @@ func (m *validateOpDisassociateAwsAccountFromPartnerAccount) HandleInitialize(ct return next.HandleInitialize(ctx, in) } +type validateOpDisassociateMulticastGroupFromFuotaTask struct { +} + +func (*validateOpDisassociateMulticastGroupFromFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDisassociateMulticastGroupFromFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DisassociateMulticastGroupFromFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDisassociateMulticastGroupFromFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDisassociateWirelessDeviceFromFuotaTask struct { +} + +func (*validateOpDisassociateWirelessDeviceFromFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDisassociateWirelessDeviceFromFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DisassociateWirelessDeviceFromFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDisassociateWirelessDeviceFromFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDisassociateWirelessDeviceFromMulticastGroup struct { +} + +func (*validateOpDisassociateWirelessDeviceFromMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDisassociateWirelessDeviceFromMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DisassociateWirelessDeviceFromMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDisassociateWirelessDeviceFromMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDisassociateWirelessDeviceFromThing struct { } @@ -490,6 +710,66 @@ func (m *validateOpGetDeviceProfile) HandleInitialize(ctx context.Context, in mi return next.HandleInitialize(ctx, in) } +type validateOpGetFuotaTask struct { +} + +func (*validateOpGetFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpGetMulticastGroup struct { +} + +func (*validateOpGetMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpGetMulticastGroupSession struct { +} + +func (*validateOpGetMulticastGroupSession) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetMulticastGroupSession) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetMulticastGroupSessionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetMulticastGroupSessionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpGetPartnerAccount struct { } @@ -510,6 +790,26 @@ func (m *validateOpGetPartnerAccount) HandleInitialize(ctx context.Context, in m return next.HandleInitialize(ctx, in) } +type validateOpGetResourceEventConfiguration struct { +} + +func (*validateOpGetResourceEventConfiguration) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetResourceEventConfiguration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetResourceEventConfigurationInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetResourceEventConfigurationInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpGetResourceLogLevel struct { } @@ -710,6 +1010,26 @@ func (m *validateOpGetWirelessGatewayTask) HandleInitialize(ctx context.Context, return next.HandleInitialize(ctx, in) } +type validateOpListMulticastGroupsByFuotaTask struct { +} + +func (*validateOpListMulticastGroupsByFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListMulticastGroupsByFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListMulticastGroupsByFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListMulticastGroupsByFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpListTagsForResource struct { } @@ -770,47 +1090,147 @@ func (m *validateOpResetResourceLogLevel) HandleInitialize(ctx context.Context, return next.HandleInitialize(ctx, in) } -type validateOpSendDataToWirelessDevice struct { +type validateOpSendDataToMulticastGroup struct { } -func (*validateOpSendDataToWirelessDevice) ID() string { +func (*validateOpSendDataToMulticastGroup) ID() string { return "OperationInputValidation" } -func (m *validateOpSendDataToWirelessDevice) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( +func (m *validateOpSendDataToMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( out middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { - input, ok := in.Parameters.(*SendDataToWirelessDeviceInput) + input, ok := in.Parameters.(*SendDataToMulticastGroupInput) if !ok { return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) } - if err := validateOpSendDataToWirelessDeviceInput(input); err != nil { + if err := validateOpSendDataToMulticastGroupInput(input); err != nil { return out, metadata, err } return next.HandleInitialize(ctx, in) } -type validateOpTagResource struct { +type validateOpSendDataToWirelessDevice struct { } -func (*validateOpTagResource) ID() string { +func (*validateOpSendDataToWirelessDevice) ID() string { return "OperationInputValidation" } -func (m *validateOpTagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( +func (m *validateOpSendDataToWirelessDevice) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( out middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { - input, ok := in.Parameters.(*TagResourceInput) + input, ok := in.Parameters.(*SendDataToWirelessDeviceInput) if !ok { return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) } - if err := validateOpTagResourceInput(input); err != nil { + if err := validateOpSendDataToWirelessDeviceInput(input); err != nil { return out, metadata, err } return next.HandleInitialize(ctx, in) } -type validateOpTestWirelessDevice struct { +type validateOpStartBulkAssociateWirelessDeviceWithMulticastGroup struct { +} + +func (*validateOpStartBulkAssociateWirelessDeviceWithMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartBulkAssociateWirelessDeviceWithMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartBulkAssociateWirelessDeviceWithMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartBulkAssociateWirelessDeviceWithMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroup struct { +} + +func (*validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartBulkDisassociateWirelessDeviceFromMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartFuotaTask struct { +} + +func (*validateOpStartFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartMulticastGroupSession struct { +} + +func (*validateOpStartMulticastGroupSession) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartMulticastGroupSession) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartMulticastGroupSessionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartMulticastGroupSessionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpTagResource struct { +} + +func (*validateOpTagResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpTagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*TagResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpTagResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpTestWirelessDevice struct { } func (*validateOpTestWirelessDevice) ID() string { @@ -870,6 +1290,26 @@ func (m *validateOpUpdateDestination) HandleInitialize(ctx context.Context, in m return next.HandleInitialize(ctx, in) } +type validateOpUpdateFuotaTask struct { +} + +func (*validateOpUpdateFuotaTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateFuotaTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateFuotaTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateFuotaTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpUpdateLogLevelsByResourceTypes struct { } @@ -890,6 +1330,26 @@ func (m *validateOpUpdateLogLevelsByResourceTypes) HandleInitialize(ctx context. return next.HandleInitialize(ctx, in) } +type validateOpUpdateMulticastGroup struct { +} + +func (*validateOpUpdateMulticastGroup) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateMulticastGroup) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateMulticastGroupInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateMulticastGroupInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpUpdatePartnerAccount struct { } @@ -910,6 +1370,26 @@ func (m *validateOpUpdatePartnerAccount) HandleInitialize(ctx context.Context, i return next.HandleInitialize(ctx, in) } +type validateOpUpdateResourceEventConfiguration struct { +} + +func (*validateOpUpdateResourceEventConfiguration) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateResourceEventConfiguration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateResourceEventConfigurationInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateResourceEventConfigurationInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpUpdateWirelessDevice struct { } @@ -954,6 +1434,18 @@ func addOpAssociateAwsAccountWithPartnerAccountValidationMiddleware(stack *middl return stack.Initialize.Add(&validateOpAssociateAwsAccountWithPartnerAccount{}, middleware.After) } +func addOpAssociateMulticastGroupWithFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpAssociateMulticastGroupWithFuotaTask{}, middleware.After) +} + +func addOpAssociateWirelessDeviceWithFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpAssociateWirelessDeviceWithFuotaTask{}, middleware.After) +} + +func addOpAssociateWirelessDeviceWithMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) +} + func addOpAssociateWirelessDeviceWithThingValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpAssociateWirelessDeviceWithThing{}, middleware.After) } @@ -966,6 +1458,10 @@ func addOpAssociateWirelessGatewayWithThingValidationMiddleware(stack *middlewar return stack.Initialize.Add(&validateOpAssociateWirelessGatewayWithThing{}, middleware.After) } +func addOpCancelMulticastGroupSessionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCancelMulticastGroupSession{}, middleware.After) +} + func addOpCreateDestinationValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCreateDestination{}, middleware.After) } @@ -974,6 +1470,14 @@ func addOpCreateDeviceProfileValidationMiddleware(stack *middleware.Stack) error return stack.Initialize.Add(&validateOpCreateDeviceProfile{}, middleware.After) } +func addOpCreateFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateFuotaTask{}, middleware.After) +} + +func addOpCreateMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateMulticastGroup{}, middleware.After) +} + func addOpCreateServiceProfileValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpCreateServiceProfile{}, middleware.After) } @@ -1002,6 +1506,14 @@ func addOpDeleteDeviceProfileValidationMiddleware(stack *middleware.Stack) error return stack.Initialize.Add(&validateOpDeleteDeviceProfile{}, middleware.After) } +func addOpDeleteFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteFuotaTask{}, middleware.After) +} + +func addOpDeleteMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteMulticastGroup{}, middleware.After) +} + func addOpDeleteServiceProfileValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeleteServiceProfile{}, middleware.After) } @@ -1026,6 +1538,18 @@ func addOpDisassociateAwsAccountFromPartnerAccountValidationMiddleware(stack *mi return stack.Initialize.Add(&validateOpDisassociateAwsAccountFromPartnerAccount{}, middleware.After) } +func addOpDisassociateMulticastGroupFromFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDisassociateMulticastGroupFromFuotaTask{}, middleware.After) +} + +func addOpDisassociateWirelessDeviceFromFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDisassociateWirelessDeviceFromFuotaTask{}, middleware.After) +} + +func addOpDisassociateWirelessDeviceFromMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) +} + func addOpDisassociateWirelessDeviceFromThingValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDisassociateWirelessDeviceFromThing{}, middleware.After) } @@ -1046,10 +1570,26 @@ func addOpGetDeviceProfileValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpGetDeviceProfile{}, middleware.After) } +func addOpGetFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetFuotaTask{}, middleware.After) +} + +func addOpGetMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetMulticastGroup{}, middleware.After) +} + +func addOpGetMulticastGroupSessionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetMulticastGroupSession{}, middleware.After) +} + func addOpGetPartnerAccountValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpGetPartnerAccount{}, middleware.After) } +func addOpGetResourceEventConfigurationValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetResourceEventConfiguration{}, middleware.After) +} + func addOpGetResourceLogLevelValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpGetResourceLogLevel{}, middleware.After) } @@ -1090,6 +1630,10 @@ func addOpGetWirelessGatewayTaskValidationMiddleware(stack *middleware.Stack) er return stack.Initialize.Add(&validateOpGetWirelessGatewayTask{}, middleware.After) } +func addOpListMulticastGroupsByFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListMulticastGroupsByFuotaTask{}, middleware.After) +} + func addOpListTagsForResourceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListTagsForResource{}, middleware.After) } @@ -1102,10 +1646,30 @@ func addOpResetResourceLogLevelValidationMiddleware(stack *middleware.Stack) err return stack.Initialize.Add(&validateOpResetResourceLogLevel{}, middleware.After) } +func addOpSendDataToMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpSendDataToMulticastGroup{}, middleware.After) +} + func addOpSendDataToWirelessDeviceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpSendDataToWirelessDevice{}, middleware.After) } +func addOpStartBulkAssociateWirelessDeviceWithMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartBulkAssociateWirelessDeviceWithMulticastGroup{}, middleware.After) +} + +func addOpStartBulkDisassociateWirelessDeviceFromMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroup{}, middleware.After) +} + +func addOpStartFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartFuotaTask{}, middleware.After) +} + +func addOpStartMulticastGroupSessionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartMulticastGroupSession{}, middleware.After) +} + func addOpTagResourceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpTagResource{}, middleware.After) } @@ -1122,14 +1686,26 @@ func addOpUpdateDestinationValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdateDestination{}, middleware.After) } +func addOpUpdateFuotaTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateFuotaTask{}, middleware.After) +} + func addOpUpdateLogLevelsByResourceTypesValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdateLogLevelsByResourceTypes{}, middleware.After) } +func addOpUpdateMulticastGroupValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateMulticastGroup{}, middleware.After) +} + func addOpUpdatePartnerAccountValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdatePartnerAccount{}, middleware.After) } +func addOpUpdateResourceEventConfigurationValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateResourceEventConfiguration{}, middleware.After) +} + func addOpUpdateWirelessDeviceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdateWirelessDevice{}, middleware.After) } @@ -1343,6 +1919,60 @@ func validateOpAssociateAwsAccountWithPartnerAccountInput(v *AssociateAwsAccount } } +func validateOpAssociateMulticastGroupWithFuotaTaskInput(v *AssociateMulticastGroupWithFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AssociateMulticastGroupWithFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.MulticastGroupId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MulticastGroupId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpAssociateWirelessDeviceWithFuotaTaskInput(v *AssociateWirelessDeviceWithFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AssociateWirelessDeviceWithFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.WirelessDeviceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("WirelessDeviceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpAssociateWirelessDeviceWithMulticastGroupInput(v *AssociateWirelessDeviceWithMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AssociateWirelessDeviceWithMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.WirelessDeviceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("WirelessDeviceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpAssociateWirelessDeviceWithThingInput(v *AssociateWirelessDeviceWithThingInput) error { if v == nil { return nil @@ -1397,6 +2027,21 @@ func validateOpAssociateWirelessGatewayWithThingInput(v *AssociateWirelessGatewa } } +func validateOpCancelMulticastGroupSessionInput(v *CancelMulticastGroupSessionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CancelMulticastGroupSessionInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpCreateDestinationInput(v *CreateDestinationInput) error { if v == nil { return nil @@ -1443,11 +2088,17 @@ func validateOpCreateDeviceProfileInput(v *CreateDeviceProfileInput) error { } } -func validateOpCreateServiceProfileInput(v *CreateServiceProfileInput) error { +func validateOpCreateFuotaTaskInput(v *CreateFuotaTaskInput) error { if v == nil { return nil } - invalidParams := smithy.InvalidParamsError{Context: "CreateServiceProfileInput"} + invalidParams := smithy.InvalidParamsError{Context: "CreateFuotaTaskInput"} + if v.FirmwareUpdateImage == nil { + invalidParams.Add(smithy.NewErrParamRequired("FirmwareUpdateImage")) + } + if v.FirmwareUpdateRole == nil { + invalidParams.Add(smithy.NewErrParamRequired("FirmwareUpdateRole")) + } if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) @@ -1460,16 +2111,13 @@ func validateOpCreateServiceProfileInput(v *CreateServiceProfileInput) error { } } -func validateOpCreateWirelessDeviceInput(v *CreateWirelessDeviceInput) error { +func validateOpCreateMulticastGroupInput(v *CreateMulticastGroupInput) error { if v == nil { return nil } - invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessDeviceInput"} - if len(v.Type) == 0 { - invalidParams.Add(smithy.NewErrParamRequired("Type")) - } - if v.DestinationName == nil { - invalidParams.Add(smithy.NewErrParamRequired("DestinationName")) + invalidParams := smithy.InvalidParamsError{Context: "CreateMulticastGroupInput"} + if v.LoRaWAN == nil { + invalidParams.Add(smithy.NewErrParamRequired("LoRaWAN")) } if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { @@ -1483,14 +2131,11 @@ func validateOpCreateWirelessDeviceInput(v *CreateWirelessDeviceInput) error { } } -func validateOpCreateWirelessGatewayInput(v *CreateWirelessGatewayInput) error { +func validateOpCreateServiceProfileInput(v *CreateServiceProfileInput) error { if v == nil { return nil } - invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessGatewayInput"} - if v.LoRaWAN == nil { - invalidParams.Add(smithy.NewErrParamRequired("LoRaWAN")) - } + invalidParams := smithy.InvalidParamsError{Context: "CreateServiceProfileInput"} if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) @@ -1503,11 +2148,54 @@ func validateOpCreateWirelessGatewayInput(v *CreateWirelessGatewayInput) error { } } -func validateOpCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput) error { +func validateOpCreateWirelessDeviceInput(v *CreateWirelessDeviceInput) error { if v == nil { return nil } - invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessGatewayTaskDefinitionInput"} + invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessDeviceInput"} + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if v.DestinationName == nil { + invalidParams.Add(smithy.NewErrParamRequired("DestinationName")) + } + if v.Tags != nil { + if err := validateTagList(v.Tags); err != nil { + invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateWirelessGatewayInput(v *CreateWirelessGatewayInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessGatewayInput"} + if v.LoRaWAN == nil { + invalidParams.Add(smithy.NewErrParamRequired("LoRaWAN")) + } + if v.Tags != nil { + if err := validateTagList(v.Tags); err != nil { + invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateWirelessGatewayTaskDefinitionInput(v *CreateWirelessGatewayTaskDefinitionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateWirelessGatewayTaskDefinitionInput"} if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) @@ -1568,6 +2256,36 @@ func validateOpDeleteDeviceProfileInput(v *DeleteDeviceProfileInput) error { } } +func validateOpDeleteFuotaTaskInput(v *DeleteFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteMulticastGroupInput(v *DeleteMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDeleteServiceProfileInput(v *DeleteServiceProfileInput) error { if v == nil { return nil @@ -1661,6 +2379,60 @@ func validateOpDisassociateAwsAccountFromPartnerAccountInput(v *DisassociateAwsA } } +func validateOpDisassociateMulticastGroupFromFuotaTaskInput(v *DisassociateMulticastGroupFromFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DisassociateMulticastGroupFromFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.MulticastGroupId == nil { + invalidParams.Add(smithy.NewErrParamRequired("MulticastGroupId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDisassociateWirelessDeviceFromFuotaTaskInput(v *DisassociateWirelessDeviceFromFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DisassociateWirelessDeviceFromFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.WirelessDeviceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("WirelessDeviceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDisassociateWirelessDeviceFromMulticastGroupInput(v *DisassociateWirelessDeviceFromMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DisassociateWirelessDeviceFromMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.WirelessDeviceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("WirelessDeviceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDisassociateWirelessDeviceFromThingInput(v *DisassociateWirelessDeviceFromThingInput) error { if v == nil { return nil @@ -1736,6 +2508,51 @@ func validateOpGetDeviceProfileInput(v *GetDeviceProfileInput) error { } } +func validateOpGetFuotaTaskInput(v *GetFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpGetMulticastGroupInput(v *GetMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpGetMulticastGroupSessionInput(v *GetMulticastGroupSessionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetMulticastGroupSessionInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpGetPartnerAccountInput(v *GetPartnerAccountInput) error { if v == nil { return nil @@ -1754,6 +2571,24 @@ func validateOpGetPartnerAccountInput(v *GetPartnerAccountInput) error { } } +func validateOpGetResourceEventConfigurationInput(v *GetResourceEventConfigurationInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetResourceEventConfigurationInput"} + if v.Identifier == nil { + invalidParams.Add(smithy.NewErrParamRequired("Identifier")) + } + if len(v.IdentifierType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("IdentifierType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpGetResourceLogLevelInput(v *GetResourceLogLevelInput) error { if v == nil { return nil @@ -1913,6 +2748,21 @@ func validateOpGetWirelessGatewayTaskInput(v *GetWirelessGatewayTaskInput) error } } +func validateOpListMulticastGroupsByFuotaTaskInput(v *ListMulticastGroupsByFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListMulticastGroupsByFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpListTagsForResourceInput(v *ListTagsForResourceInput) error { if v == nil { return nil @@ -1967,6 +2817,27 @@ func validateOpResetResourceLogLevelInput(v *ResetResourceLogLevelInput) error { } } +func validateOpSendDataToMulticastGroupInput(v *SendDataToMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "SendDataToMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.PayloadData == nil { + invalidParams.Add(smithy.NewErrParamRequired("PayloadData")) + } + if v.WirelessMetadata == nil { + invalidParams.Add(smithy.NewErrParamRequired("WirelessMetadata")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput) error { if v == nil { return nil @@ -1988,6 +2859,79 @@ func validateOpSendDataToWirelessDeviceInput(v *SendDataToWirelessDeviceInput) e } } +func validateOpStartBulkAssociateWirelessDeviceWithMulticastGroupInput(v *StartBulkAssociateWirelessDeviceWithMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartBulkAssociateWirelessDeviceWithMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.Tags != nil { + if err := validateTagList(v.Tags); err != nil { + invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartBulkDisassociateWirelessDeviceFromMulticastGroupInput(v *StartBulkDisassociateWirelessDeviceFromMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartBulkDisassociateWirelessDeviceFromMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.Tags != nil { + if err := validateTagList(v.Tags); err != nil { + invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartFuotaTaskInput(v *StartFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartMulticastGroupSessionInput(v *StartMulticastGroupSessionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartMulticastGroupSessionInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if v.LoRaWAN == nil { + invalidParams.Add(smithy.NewErrParamRequired("LoRaWAN")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpTagResourceInput(v *TagResourceInput) error { if v == nil { return nil @@ -2058,6 +3002,21 @@ func validateOpUpdateDestinationInput(v *UpdateDestinationInput) error { } } +func validateOpUpdateFuotaTaskInput(v *UpdateFuotaTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateFuotaTaskInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceTypesInput) error { if v == nil { return nil @@ -2080,6 +3039,21 @@ func validateOpUpdateLogLevelsByResourceTypesInput(v *UpdateLogLevelsByResourceT } } +func validateOpUpdateMulticastGroupInput(v *UpdateMulticastGroupInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateMulticastGroupInput"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpUpdatePartnerAccountInput(v *UpdatePartnerAccountInput) error { if v == nil { return nil @@ -2101,6 +3075,24 @@ func validateOpUpdatePartnerAccountInput(v *UpdatePartnerAccountInput) error { } } +func validateOpUpdateResourceEventConfigurationInput(v *UpdateResourceEventConfigurationInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateResourceEventConfigurationInput"} + if v.Identifier == nil { + invalidParams.Add(smithy.NewErrParamRequired("Identifier")) + } + if len(v.IdentifierType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("IdentifierType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpUpdateWirelessDeviceInput(v *UpdateWirelessDeviceInput) error { if v == nil { return nil diff --git a/service/neptune/internal/endpoints/endpoints.go b/service/neptune/internal/endpoints/endpoints.go index df3e7c02f43..b9de427ce0f 100644 --- a/service/neptune/internal/endpoints/endpoints.go +++ b/service/neptune/internal/endpoints/endpoints.go @@ -521,7 +521,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "rds-fips.{region}.amazonaws.com", + Hostname: "rds.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/rds/internal/endpoints/endpoints.go b/service/rds/internal/endpoints/endpoints.go index 406180d1eeb..6363a673b78 100644 --- a/service/rds/internal/endpoints/endpoints.go +++ b/service/rds/internal/endpoints/endpoints.go @@ -521,7 +521,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "rds-fips.{region}.amazonaws.com", + Hostname: "rds.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/resiliencehub/LICENSE.txt b/service/resiliencehub/LICENSE.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/service/resiliencehub/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/service/resiliencehub/api_client.go b/service/resiliencehub/api_client.go new file mode 100644 index 00000000000..e3dbe9bd131 --- /dev/null +++ b/service/resiliencehub/api_client.go @@ -0,0 +1,316 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + cryptorand "crypto/rand" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + smithy "github.com/aws/smithy-go" + smithydocument "github.com/aws/smithy-go/document" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/middleware" + smithyrand "github.com/aws/smithy-go/rand" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" + "time" +) + +const ServiceID = "resiliencehub" +const ServiceAPIVersion = "2020-04-30" + +// Client provides the API client to make operations call for AWS Resilience Hub. +type Client struct { + options Options +} + +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() + + resolveDefaultLogger(&options) + + resolveRetryer(&options) + + resolveHTTPClient(&options) + + resolveHTTPSignerV4(&options) + + resolveDefaultEndpointConfiguration(&options) + + resolveIdempotencyTokenProvider(&options) + + for _, fn := range optFns { + fn(&options) + } + + client := &Client{ + options: options, + } + + return client +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + EndpointResolver EndpointResolver + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // Provides idempotency tokens values that will be automatically populated into + // idempotent API operations. + IdempotencyTokenProvider IdempotencyTokenProvider + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The region to send requests to. (Required) + Region string + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. + Retryer aws.Retryer + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// WithEndpointResolver returns a functional option for setting the Client's +// EndpointResolver option. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + return to +} +func (c *Client) invokeOperation(ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error) (result interface{}, metadata middleware.Metadata, err error) { + ctx = middleware.ClearStackValues(ctx) + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) + options := c.options.Copy() + for _, fn := range optFns { + fn(&options) + } + + finalizeClientEndpointResolverOptions(&options) + + for _, fn := range stackFns { + if err := fn(stack, options); err != nil { + return nil, metadata, err + } + } + + for _, fn := range options.APIOptions { + if err := fn(stack); err != nil { + return nil, metadata, err + } + } + + handler := middleware.DecorateHandler(smithyhttp.NewClientHandler(options.HTTPClient), stack) + result, metadata, err = handler.Handle(ctx, params) + if err != nil { + err = &smithy.OperationError{ + ServiceID: ServiceID, + OperationName: opID, + Err: err, + } + } + return result, metadata, err +} + +type noSmithyDocumentSerde = smithydocument.NoSerde + +func resolveDefaultLogger(o *Options) { + if o.Logger != nil { + return + } + o.Logger = logging.Nop{} +} + +func addSetLoggerMiddleware(stack *middleware.Stack, o Options) error { + return middleware.AddSetLoggerMiddleware(stack, o.Logger) +} + +// NewFromConfig returns a new client from the provided config. +func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { + opts := Options{ + Region: cfg.Region, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + } + resolveAWSRetryerProvider(cfg, &opts) + resolveAWSEndpointResolver(cfg, &opts) + resolveUseDualStackEndpoint(cfg, &opts) + resolveUseFIPSEndpoint(cfg, &opts) + return New(opts, optFns...) +} + +func resolveHTTPClient(o *Options) { + if o.HTTPClient != nil { + return + } + o.HTTPClient = awshttp.NewBuildableClient() +} + +func resolveRetryer(o *Options) { + if o.Retryer != nil { + return + } + o.Retryer = retry.NewStandard() +} + +func resolveAWSRetryerProvider(cfg aws.Config, o *Options) { + if cfg.Retryer == nil { + return + } + o.Retryer = cfg.Retryer() +} + +func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { + if cfg.EndpointResolver == nil { + return + } + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions, NewDefaultEndpointResolver()) +} + +func addClientUserAgent(stack *middleware.Stack) error { + return awsmiddleware.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "resiliencehub", goModuleVersion)(stack) +} + +func addHTTPSignerV4Middleware(stack *middleware.Stack, o Options) error { + mw := v4.NewSignHTTPRequestMiddleware(v4.SignHTTPRequestMiddlewareOptions{ + CredentialsProvider: o.Credentials, + Signer: o.HTTPSignerV4, + LogSigning: o.ClientLogMode.IsSigning(), + }) + return stack.Finalize.Add(mw, middleware.After) +} + +type HTTPSignerV4 interface { + SignHTTP(ctx context.Context, credentials aws.Credentials, r *http.Request, payloadHash string, service string, region string, signingTime time.Time, optFns ...func(*v4.SignerOptions)) error +} + +func resolveHTTPSignerV4(o *Options) { + if o.HTTPSignerV4 != nil { + return + } + o.HTTPSignerV4 = newDefaultV4Signer(*o) +} + +func newDefaultV4Signer(o Options) *v4.Signer { + return v4.NewSigner(func(so *v4.SignerOptions) { + so.Logger = o.Logger + so.LogSigning = o.ClientLogMode.IsSigning() + }) +} + +func resolveIdempotencyTokenProvider(o *Options) { + if o.IdempotencyTokenProvider != nil { + return + } + o.IdempotencyTokenProvider = smithyrand.NewUUIDIdempotencyToken(cryptorand.Reader) +} + +func addRetryMiddlewares(stack *middleware.Stack, o Options) error { + mo := retry.AddRetryMiddlewaresOptions{ + Retryer: o.Retryer, + LogRetryAttempts: o.ClientLogMode.IsRetries(), + } + return retry.AddRetryMiddlewares(stack, mo) +} + +// resolves dual-stack endpoint configuration +func resolveUseDualStackEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseDualStackEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseDualStackEndpoint = value + } + return nil +} + +// resolves FIPS endpoint configuration +func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseFIPSEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseFIPSEndpoint = value + } + return nil +} + +// IdempotencyTokenProvider interface for providing idempotency token +type IdempotencyTokenProvider interface { + GetIdempotencyToken() (string, error) +} + +func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { + return awsmiddleware.AddRequestIDRetrieverMiddleware(stack) +} + +func addResponseErrorMiddleware(stack *middleware.Stack) error { + return awshttp.AddResponseErrorMiddleware(stack) +} + +func addRequestResponseLogging(stack *middleware.Stack, o Options) error { + return stack.Deserialize.Add(&smithyhttp.RequestResponseLogger{ + LogRequest: o.ClientLogMode.IsRequest(), + LogRequestWithBody: o.ClientLogMode.IsRequestWithBody(), + LogResponse: o.ClientLogMode.IsResponse(), + LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), + }, middleware.After) +} diff --git a/service/resiliencehub/api_op_AddDraftAppVersionResourceMappings.go b/service/resiliencehub/api_op_AddDraftAppVersionResourceMappings.go new file mode 100644 index 00000000000..0c7c590fab1 --- /dev/null +++ b/service/resiliencehub/api_op_AddDraftAppVersionResourceMappings.go @@ -0,0 +1,154 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Adds the resource mapping for the draft application version. +func (c *Client) AddDraftAppVersionResourceMappings(ctx context.Context, params *AddDraftAppVersionResourceMappingsInput, optFns ...func(*Options)) (*AddDraftAppVersionResourceMappingsOutput, error) { + if params == nil { + params = &AddDraftAppVersionResourceMappingsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "AddDraftAppVersionResourceMappings", params, optFns, c.addOperationAddDraftAppVersionResourceMappingsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*AddDraftAppVersionResourceMappingsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type AddDraftAppVersionResourceMappingsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // Mappings used to map logical resources from the template to physical resources. + // You can use the mapping type CFN_STACK if the application template uses a + // logical stack name. Or you can map individual resources by using the mapping + // type RESOURCE. We recommend using the mapping type CFN_STACK if the application + // is backed by a CloudFormation stack. + // + // This member is required. + ResourceMappings []types.ResourceMapping + + noSmithyDocumentSerde +} + +type AddDraftAppVersionResourceMappingsOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // Mappings used to map logical resources from the template to physical resources. + // You can use the mapping type CFN_STACK if the application template uses a + // logical stack name. Or you can map individual resources by using the mapping + // type RESOURCE. We recommend using the mapping type CFN_STACK if the application + // is backed by a CloudFormation stack. + // + // This member is required. + ResourceMappings []types.ResourceMapping + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationAddDraftAppVersionResourceMappingsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpAddDraftAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpAddDraftAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpAddDraftAppVersionResourceMappingsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAddDraftAppVersionResourceMappings(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opAddDraftAppVersionResourceMappings(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "AddDraftAppVersionResourceMappings", + } +} diff --git a/service/resiliencehub/api_op_CreateApp.go b/service/resiliencehub/api_op_CreateApp.go new file mode 100644 index 00000000000..50f1dee38a0 --- /dev/null +++ b/service/resiliencehub/api_op_CreateApp.go @@ -0,0 +1,189 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a Resilience Hub application. A Resilience Hub application is a +// collection of Amazon Web Services resources structured to prevent and recover +// Amazon Web Services application disruptions. To describe a Resilience Hub +// application, you provide an application name, resources from one or more–up to +// five–CloudFormation stacks, and an appropriate resiliency policy. After you +// create a Resilience Hub application, you publish it so that you can run a +// resiliency assessment on it. You can then use recommendations from the +// assessment to improve resiliency by running another assessment, comparing +// results, and then iterating the process until you achieve your goals for +// recovery time objective (RTO) and recovery point objective (RPO). +func (c *Client) CreateApp(ctx context.Context, params *CreateAppInput, optFns ...func(*Options)) (*CreateAppOutput, error) { + if params == nil { + params = &CreateAppInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateApp", params, optFns, c.addOperationCreateAppMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateAppOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateAppInput struct { + + // The name for the application. + // + // This member is required. + Name *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + // The optional description for an app. + Description *string + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + PolicyArn *string + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +type CreateAppOutput struct { + + // The created application returned as an object with details including compliance + // status, creation time, description, resiliency score, and more. + // + // This member is required. + App *types.App + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateAppMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateApp{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateApp{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateAppMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateAppValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateApp(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateApp struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateApp) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateAppInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateAppInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateAppMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateApp{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateApp(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "CreateApp", + } +} diff --git a/service/resiliencehub/api_op_CreateRecommendationTemplate.go b/service/resiliencehub/api_op_CreateRecommendationTemplate.go new file mode 100644 index 00000000000..7d988025674 --- /dev/null +++ b/service/resiliencehub/api_op_CreateRecommendationTemplate.go @@ -0,0 +1,193 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new recommendation template. +func (c *Client) CreateRecommendationTemplate(ctx context.Context, params *CreateRecommendationTemplateInput, optFns ...func(*Options)) (*CreateRecommendationTemplateOutput, error) { + if params == nil { + params = &CreateRecommendationTemplateInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateRecommendationTemplate", params, optFns, c.addOperationCreateRecommendationTemplateMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateRecommendationTemplateOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateRecommendationTemplateInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The name for the recommendation template. + // + // This member is required. + Name *string + + // The name of the Amazon S3 bucket that will contain the recommendation template. + BucketName *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + // The format for the recommendation template. CfnJson The template is + // CloudFormation JSON. CfnYaml The template is CloudFormation YAML. + Format types.TemplateFormat + + // Identifiers for the recommendations used to create a recommendation template. + RecommendationIds []string + + // An array of strings that specify the recommendation template type or types. + // Alarm The template is an AlarmRecommendation template. Sop The template is a + // SopRecommendation template. Test The template is a TestRecommendation template. + RecommendationTypes []types.RenderRecommendationType + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +type CreateRecommendationTemplateOutput struct { + + // The newly created recommendation template, returned as an object. This object + // includes the template's name, format, status, tags, Amazon S3 bucket location, + // and more. + RecommendationTemplate *types.RecommendationTemplate + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateRecommendationTemplateMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateRecommendationTemplate{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateRecommendationTemplate{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateRecommendationTemplateMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateRecommendationTemplateValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateRecommendationTemplate(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateRecommendationTemplate struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateRecommendationTemplate) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateRecommendationTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateRecommendationTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateRecommendationTemplateInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateRecommendationTemplateMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateRecommendationTemplate{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateRecommendationTemplate(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "CreateRecommendationTemplate", + } +} diff --git a/service/resiliencehub/api_op_CreateResiliencyPolicy.go b/service/resiliencehub/api_op_CreateResiliencyPolicy.go new file mode 100644 index 00000000000..6f70337fea8 --- /dev/null +++ b/service/resiliencehub/api_op_CreateResiliencyPolicy.go @@ -0,0 +1,189 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a resiliency policy for an application. +func (c *Client) CreateResiliencyPolicy(ctx context.Context, params *CreateResiliencyPolicyInput, optFns ...func(*Options)) (*CreateResiliencyPolicyOutput, error) { + if params == nil { + params = &CreateResiliencyPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateResiliencyPolicy", params, optFns, c.addOperationCreateResiliencyPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateResiliencyPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateResiliencyPolicyInput struct { + + // The type of resiliency policy to be created, including the recovery time + // objective (RTO) and recovery point objective (RPO) in seconds. + // + // This member is required. + Policy map[string]types.FailurePolicy + + // The name of the policy + // + // This member is required. + PolicyName *string + + // The tier for this resiliency policy, ranging from the highest severity + // (MissionCritical) to lowest (NonCritical). + // + // This member is required. + Tier types.ResiliencyPolicyTier + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + // Specifies a high-level geographical location constraint for where your + // resilience policy data can be stored. + DataLocationConstraint types.DataLocationConstraint + + // The description for the policy. + PolicyDescription *string + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +type CreateResiliencyPolicyOutput struct { + + // The type of resiliency policy that was created, including the recovery time + // objective (RTO) and recovery point objective (RPO) in seconds. + // + // This member is required. + Policy *types.ResiliencyPolicy + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateResiliencyPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opCreateResiliencyPolicyMiddleware(stack, options); err != nil { + return err + } + if err = addOpCreateResiliencyPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateResiliencyPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpCreateResiliencyPolicy struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpCreateResiliencyPolicy) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpCreateResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*CreateResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateResiliencyPolicyInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opCreateResiliencyPolicyMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpCreateResiliencyPolicy{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opCreateResiliencyPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "CreateResiliencyPolicy", + } +} diff --git a/service/resiliencehub/api_op_DeleteApp.go b/service/resiliencehub/api_op_DeleteApp.go new file mode 100644 index 00000000000..79cc5271441 --- /dev/null +++ b/service/resiliencehub/api_op_DeleteApp.go @@ -0,0 +1,176 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes an AWS Resilience Hub application. This is a destructive action that +// can't be undone. +func (c *Client) DeleteApp(ctx context.Context, params *DeleteAppInput, optFns ...func(*Options)) (*DeleteAppOutput, error) { + if params == nil { + params = &DeleteAppInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteApp", params, optFns, c.addOperationDeleteAppMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteAppOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteAppInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + // A boolean option to force the deletion of a Resilience Hub application. + ForceDelete *bool + + noSmithyDocumentSerde +} + +type DeleteAppOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteAppMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteApp{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteApp{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opDeleteAppMiddleware(stack, options); err != nil { + return err + } + if err = addOpDeleteAppValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteApp(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpDeleteApp struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpDeleteApp) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpDeleteApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*DeleteAppInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *DeleteAppInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opDeleteAppMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpDeleteApp{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opDeleteApp(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DeleteApp", + } +} diff --git a/service/resiliencehub/api_op_DeleteAppAssessment.go b/service/resiliencehub/api_op_DeleteAppAssessment.go new file mode 100644 index 00000000000..4a69fff11ee --- /dev/null +++ b/service/resiliencehub/api_op_DeleteAppAssessment.go @@ -0,0 +1,179 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes an AWS Resilience Hub application assessment. This is a destructive +// action that can't be undone. +func (c *Client) DeleteAppAssessment(ctx context.Context, params *DeleteAppAssessmentInput, optFns ...func(*Options)) (*DeleteAppAssessmentOutput, error) { + if params == nil { + params = &DeleteAppAssessmentInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteAppAssessment", params, optFns, c.addOperationDeleteAppAssessmentMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteAppAssessmentOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteAppAssessmentInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + noSmithyDocumentSerde +} + +type DeleteAppAssessmentOutput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The current status of the assessment for the resiliency policy. + // + // This member is required. + AssessmentStatus types.AssessmentStatus + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteAppAssessmentMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteAppAssessment{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteAppAssessment{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opDeleteAppAssessmentMiddleware(stack, options); err != nil { + return err + } + if err = addOpDeleteAppAssessmentValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteAppAssessment(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpDeleteAppAssessment struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpDeleteAppAssessment) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpDeleteAppAssessment) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*DeleteAppAssessmentInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *DeleteAppAssessmentInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opDeleteAppAssessmentMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpDeleteAppAssessment{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opDeleteAppAssessment(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DeleteAppAssessment", + } +} diff --git a/service/resiliencehub/api_op_DeleteRecommendationTemplate.go b/service/resiliencehub/api_op_DeleteRecommendationTemplate.go new file mode 100644 index 00000000000..49f6a7f85e7 --- /dev/null +++ b/service/resiliencehub/api_op_DeleteRecommendationTemplate.go @@ -0,0 +1,171 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a recommendation template. This is a destructive action that can't be +// undone. +func (c *Client) DeleteRecommendationTemplate(ctx context.Context, params *DeleteRecommendationTemplateInput, optFns ...func(*Options)) (*DeleteRecommendationTemplateOutput, error) { + if params == nil { + params = &DeleteRecommendationTemplateInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteRecommendationTemplate", params, optFns, c.addOperationDeleteRecommendationTemplateMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteRecommendationTemplateOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteRecommendationTemplateInput struct { + + // The Amazon Resource Name (ARN) for a recommendation template. + // + // This member is required. + RecommendationTemplateArn *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + noSmithyDocumentSerde +} + +type DeleteRecommendationTemplateOutput struct { + + // The Amazon Resource Name (ARN) for a recommendation template. + // + // This member is required. + RecommendationTemplateArn *string + + // The status of the action. + // + // This member is required. + Status types.RecommendationTemplateStatus + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteRecommendationTemplateMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteRecommendationTemplate{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteRecommendationTemplate{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opDeleteRecommendationTemplateMiddleware(stack, options); err != nil { + return err + } + if err = addOpDeleteRecommendationTemplateValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteRecommendationTemplate(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpDeleteRecommendationTemplate struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpDeleteRecommendationTemplate) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpDeleteRecommendationTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*DeleteRecommendationTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *DeleteRecommendationTemplateInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opDeleteRecommendationTemplateMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpDeleteRecommendationTemplate{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opDeleteRecommendationTemplate(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DeleteRecommendationTemplate", + } +} diff --git a/service/resiliencehub/api_op_DeleteResiliencyPolicy.go b/service/resiliencehub/api_op_DeleteResiliencyPolicy.go new file mode 100644 index 00000000000..9272e4b3872 --- /dev/null +++ b/service/resiliencehub/api_op_DeleteResiliencyPolicy.go @@ -0,0 +1,172 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a resiliency policy. This is a destructive action that can't be undone. +func (c *Client) DeleteResiliencyPolicy(ctx context.Context, params *DeleteResiliencyPolicyInput, optFns ...func(*Options)) (*DeleteResiliencyPolicyOutput, error) { + if params == nil { + params = &DeleteResiliencyPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteResiliencyPolicy", params, optFns, c.addOperationDeleteResiliencyPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteResiliencyPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteResiliencyPolicyInput struct { + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + PolicyArn *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + noSmithyDocumentSerde +} + +type DeleteResiliencyPolicyOutput struct { + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + PolicyArn *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteResiliencyPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opDeleteResiliencyPolicyMiddleware(stack, options); err != nil { + return err + } + if err = addOpDeleteResiliencyPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteResiliencyPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpDeleteResiliencyPolicy struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpDeleteResiliencyPolicy) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpDeleteResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*DeleteResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *DeleteResiliencyPolicyInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opDeleteResiliencyPolicyMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpDeleteResiliencyPolicy{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opDeleteResiliencyPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DeleteResiliencyPolicy", + } +} diff --git a/service/resiliencehub/api_op_DescribeApp.go b/service/resiliencehub/api_op_DescribeApp.go new file mode 100644 index 00000000000..f1cf7c689f0 --- /dev/null +++ b/service/resiliencehub/api_op_DescribeApp.go @@ -0,0 +1,128 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes an AWS Resilience Hub application. +func (c *Client) DescribeApp(ctx context.Context, params *DescribeAppInput, optFns ...func(*Options)) (*DescribeAppOutput, error) { + if params == nil { + params = &DescribeAppInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeApp", params, optFns, c.addOperationDescribeAppMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeAppOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeAppInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + noSmithyDocumentSerde +} + +type DescribeAppOutput struct { + + // The specified application, returned as an object with details including + // compliance status, creation time, description, resiliency score, and more. + // + // This member is required. + App *types.App + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeAppMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeApp{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeApp{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeAppValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeApp(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeApp(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeApp", + } +} diff --git a/service/resiliencehub/api_op_DescribeAppAssessment.go b/service/resiliencehub/api_op_DescribeAppAssessment.go new file mode 100644 index 00000000000..04437c2220f --- /dev/null +++ b/service/resiliencehub/api_op_DescribeAppAssessment.go @@ -0,0 +1,129 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes an assessment for an AWS Resilience Hub application. +func (c *Client) DescribeAppAssessment(ctx context.Context, params *DescribeAppAssessmentInput, optFns ...func(*Options)) (*DescribeAppAssessmentOutput, error) { + if params == nil { + params = &DescribeAppAssessmentInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeAppAssessment", params, optFns, c.addOperationDescribeAppAssessmentMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeAppAssessmentOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeAppAssessmentInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + noSmithyDocumentSerde +} + +type DescribeAppAssessmentOutput struct { + + // The assessment for an AWS Resilience Hub application, returned as an object. + // This object includes Amazon Resource Names (ARNs), compliance information, + // compliance status, cost, messages, resiliency scores, and more. + // + // This member is required. + Assessment *types.AppAssessment + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeAppAssessmentMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeAppAssessment{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeAppAssessment{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeAppAssessmentValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeAppAssessment(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeAppAssessment(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeAppAssessment", + } +} diff --git a/service/resiliencehub/api_op_DescribeAppVersionResourcesResolutionStatus.go b/service/resiliencehub/api_op_DescribeAppVersionResourcesResolutionStatus.go new file mode 100644 index 00000000000..a3ee0ea602a --- /dev/null +++ b/service/resiliencehub/api_op_DescribeAppVersionResourcesResolutionStatus.go @@ -0,0 +1,159 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns the resolution status for the specified resolution identifier for an +// application version. If resolutionId is not specified, the current resolution +// status is returned. +func (c *Client) DescribeAppVersionResourcesResolutionStatus(ctx context.Context, params *DescribeAppVersionResourcesResolutionStatusInput, optFns ...func(*Options)) (*DescribeAppVersionResourcesResolutionStatusOutput, error) { + if params == nil { + params = &DescribeAppVersionResourcesResolutionStatusInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeAppVersionResourcesResolutionStatus", params, optFns, c.addOperationDescribeAppVersionResourcesResolutionStatusMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeAppVersionResourcesResolutionStatusOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeAppVersionResourcesResolutionStatusInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The identifier for a specific resolution. + ResolutionId *string + + noSmithyDocumentSerde +} + +type DescribeAppVersionResourcesResolutionStatusOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The identifier for a specific resolution. + // + // This member is required. + ResolutionId *string + + // The status of the action. + // + // This member is required. + Status types.ResourceResolutionStatusType + + // The returned error message for the request. + ErrorMessage *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeAppVersionResourcesResolutionStatusMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeAppVersionResourcesResolutionStatus{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeAppVersionResourcesResolutionStatus{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeAppVersionResourcesResolutionStatusValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeAppVersionResourcesResolutionStatus(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeAppVersionResourcesResolutionStatus(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeAppVersionResourcesResolutionStatus", + } +} diff --git a/service/resiliencehub/api_op_DescribeAppVersionTemplate.go b/service/resiliencehub/api_op_DescribeAppVersionTemplate.go new file mode 100644 index 00000000000..0b1576a7bf1 --- /dev/null +++ b/service/resiliencehub/api_op_DescribeAppVersionTemplate.go @@ -0,0 +1,145 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes details about an AWS Resilience Hub +func (c *Client) DescribeAppVersionTemplate(ctx context.Context, params *DescribeAppVersionTemplateInput, optFns ...func(*Options)) (*DescribeAppVersionTemplateOutput, error) { + if params == nil { + params = &DescribeAppVersionTemplateInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeAppVersionTemplate", params, optFns, c.addOperationDescribeAppVersionTemplateMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeAppVersionTemplateOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeAppVersionTemplateInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + noSmithyDocumentSerde +} + +type DescribeAppVersionTemplateOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The body of the template. + // + // This member is required. + AppTemplateBody *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeAppVersionTemplateMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeAppVersionTemplate{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeAppVersionTemplate{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeAppVersionTemplateValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeAppVersionTemplate(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeAppVersionTemplate(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeAppVersionTemplate", + } +} diff --git a/service/resiliencehub/api_op_DescribeDraftAppVersionResourcesImportStatus.go b/service/resiliencehub/api_op_DescribeDraftAppVersionResourcesImportStatus.go new file mode 100644 index 00000000000..1a7a1af8a2c --- /dev/null +++ b/service/resiliencehub/api_op_DescribeDraftAppVersionResourcesImportStatus.go @@ -0,0 +1,150 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "time" +) + +// Describes the status of importing resources to an application version. +func (c *Client) DescribeDraftAppVersionResourcesImportStatus(ctx context.Context, params *DescribeDraftAppVersionResourcesImportStatusInput, optFns ...func(*Options)) (*DescribeDraftAppVersionResourcesImportStatusOutput, error) { + if params == nil { + params = &DescribeDraftAppVersionResourcesImportStatusInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeDraftAppVersionResourcesImportStatus", params, optFns, c.addOperationDescribeDraftAppVersionResourcesImportStatusMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeDraftAppVersionResourcesImportStatusOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeDraftAppVersionResourcesImportStatusInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + noSmithyDocumentSerde +} + +type DescribeDraftAppVersionResourcesImportStatusOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The status of the action. + // + // This member is required. + Status types.ResourceImportStatusType + + // The timestamp for when the status last changed. + // + // This member is required. + StatusChangeTime *time.Time + + // The returned error message for the request. + ErrorMessage *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeDraftAppVersionResourcesImportStatusMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeDraftAppVersionResourcesImportStatus{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeDraftAppVersionResourcesImportStatus{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeDraftAppVersionResourcesImportStatusValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeDraftAppVersionResourcesImportStatus(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeDraftAppVersionResourcesImportStatus(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeDraftAppVersionResourcesImportStatus", + } +} diff --git a/service/resiliencehub/api_op_DescribeResiliencyPolicy.go b/service/resiliencehub/api_op_DescribeResiliencyPolicy.go new file mode 100644 index 00000000000..b0cc436a294 --- /dev/null +++ b/service/resiliencehub/api_op_DescribeResiliencyPolicy.go @@ -0,0 +1,132 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes a specified resiliency policy for an AWS Resilience Hub application. +// The returned policy object includes creation time, data location constraints, +// the Amazon Resource Name (ARN) for the policy, tags, tier, and more. +func (c *Client) DescribeResiliencyPolicy(ctx context.Context, params *DescribeResiliencyPolicyInput, optFns ...func(*Options)) (*DescribeResiliencyPolicyOutput, error) { + if params == nil { + params = &DescribeResiliencyPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeResiliencyPolicy", params, optFns, c.addOperationDescribeResiliencyPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeResiliencyPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeResiliencyPolicyInput struct { + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + PolicyArn *string + + noSmithyDocumentSerde +} + +type DescribeResiliencyPolicyOutput struct { + + // Information about the specific resiliency policy, returned as an object. This + // object includes creation time, data location constraints, its name, description, + // tags, the recovery time objective (RTO) and recovery point objective (RPO) in + // seconds, and more. + // + // This member is required. + Policy *types.ResiliencyPolicy + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeResiliencyPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpDescribeResiliencyPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeResiliencyPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeResiliencyPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "DescribeResiliencyPolicy", + } +} diff --git a/service/resiliencehub/api_op_ImportResourcesToDraftAppVersion.go b/service/resiliencehub/api_op_ImportResourcesToDraftAppVersion.go new file mode 100644 index 00000000000..9a3b0b1f131 --- /dev/null +++ b/service/resiliencehub/api_op_ImportResourcesToDraftAppVersion.go @@ -0,0 +1,152 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Imports resources from sources such as a CloudFormation stack, resource-groups, +// or application registry app to a draft application version. +func (c *Client) ImportResourcesToDraftAppVersion(ctx context.Context, params *ImportResourcesToDraftAppVersionInput, optFns ...func(*Options)) (*ImportResourcesToDraftAppVersionOutput, error) { + if params == nil { + params = &ImportResourcesToDraftAppVersionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ImportResourcesToDraftAppVersion", params, optFns, c.addOperationImportResourcesToDraftAppVersionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ImportResourcesToDraftAppVersionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ImportResourcesToDraftAppVersionInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The Amazon Resource Names (ARNs) for the resources that you want to import. + // + // This member is required. + SourceArns []string + + noSmithyDocumentSerde +} + +type ImportResourcesToDraftAppVersionOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The Amazon Resource Names (ARNs) for the resources that you imported. + // + // This member is required. + SourceArns []string + + // The status of the action. + // + // This member is required. + Status types.ResourceImportStatusType + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationImportResourcesToDraftAppVersionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpImportResourcesToDraftAppVersion{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpImportResourcesToDraftAppVersion{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpImportResourcesToDraftAppVersionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opImportResourcesToDraftAppVersion(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opImportResourcesToDraftAppVersion(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ImportResourcesToDraftAppVersion", + } +} diff --git a/service/resiliencehub/api_op_ListAlarmRecommendations.go b/service/resiliencehub/api_op_ListAlarmRecommendations.go new file mode 100644 index 00000000000..64cce71426b --- /dev/null +++ b/service/resiliencehub/api_op_ListAlarmRecommendations.go @@ -0,0 +1,218 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the alarm recommendations for a AWS Resilience Hub application. +func (c *Client) ListAlarmRecommendations(ctx context.Context, params *ListAlarmRecommendationsInput, optFns ...func(*Options)) (*ListAlarmRecommendationsOutput, error) { + if params == nil { + params = &ListAlarmRecommendationsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAlarmRecommendations", params, optFns, c.addOperationListAlarmRecommendationsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAlarmRecommendationsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAlarmRecommendationsInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAlarmRecommendationsOutput struct { + + // The alarm recommendations for an AWS Resilience Hub application, returned as an + // object. This object includes application component names, descriptions, + // information about whether a recommendation has already been implemented or not, + // prerequisites, and more. + // + // This member is required. + AlarmRecommendations []types.AlarmRecommendation + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAlarmRecommendationsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAlarmRecommendations{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAlarmRecommendations{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAlarmRecommendationsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAlarmRecommendations(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAlarmRecommendationsAPIClient is a client that implements the +// ListAlarmRecommendations operation. +type ListAlarmRecommendationsAPIClient interface { + ListAlarmRecommendations(context.Context, *ListAlarmRecommendationsInput, ...func(*Options)) (*ListAlarmRecommendationsOutput, error) +} + +var _ ListAlarmRecommendationsAPIClient = (*Client)(nil) + +// ListAlarmRecommendationsPaginatorOptions is the paginator options for +// ListAlarmRecommendations +type ListAlarmRecommendationsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAlarmRecommendationsPaginator is a paginator for ListAlarmRecommendations +type ListAlarmRecommendationsPaginator struct { + options ListAlarmRecommendationsPaginatorOptions + client ListAlarmRecommendationsAPIClient + params *ListAlarmRecommendationsInput + nextToken *string + firstPage bool +} + +// NewListAlarmRecommendationsPaginator returns a new +// ListAlarmRecommendationsPaginator +func NewListAlarmRecommendationsPaginator(client ListAlarmRecommendationsAPIClient, params *ListAlarmRecommendationsInput, optFns ...func(*ListAlarmRecommendationsPaginatorOptions)) *ListAlarmRecommendationsPaginator { + if params == nil { + params = &ListAlarmRecommendationsInput{} + } + + options := ListAlarmRecommendationsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAlarmRecommendationsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAlarmRecommendationsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAlarmRecommendations page. +func (p *ListAlarmRecommendationsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAlarmRecommendationsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAlarmRecommendations(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAlarmRecommendations(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAlarmRecommendations", + } +} diff --git a/service/resiliencehub/api_op_ListAppAssessments.go b/service/resiliencehub/api_op_ListAppAssessments.go new file mode 100644 index 00000000000..0edfd5d520c --- /dev/null +++ b/service/resiliencehub/api_op_ListAppAssessments.go @@ -0,0 +1,229 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the assessments for an AWS Resilience Hub application. You can use request +// parameters to refine the results for the response object. +func (c *Client) ListAppAssessments(ctx context.Context, params *ListAppAssessmentsInput, optFns ...func(*Options)) (*ListAppAssessmentsOutput, error) { + if params == nil { + params = &ListAppAssessmentsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppAssessments", params, optFns, c.addOperationListAppAssessmentsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppAssessmentsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppAssessmentsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The name for the assessment. + AssessmentName *string + + // The current status of the assessment for the resiliency policy. + AssessmentStatus []types.AssessmentStatus + + // The current status of compliance for the resiliency policy. + ComplianceStatus types.ComplianceStatus + + // Specifies the entity that invoked a specific assessment, either a User or the + // System. + Invoker types.AssessmentInvoker + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + // The default is to sort by ascending startTime. To sort by descending startTime, + // set reverseOrder to true. + ReverseOrder *bool + + noSmithyDocumentSerde +} + +type ListAppAssessmentsOutput struct { + + // The summaries for the specified assessments, returned as an object. This object + // includes application versions, associated Amazon Resource Numbers (ARNs), cost, + // messages, resiliency scores, and more. + // + // This member is required. + AssessmentSummaries []types.AppAssessmentSummary + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppAssessmentsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppAssessments{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppAssessments{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppAssessments(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppAssessmentsAPIClient is a client that implements the ListAppAssessments +// operation. +type ListAppAssessmentsAPIClient interface { + ListAppAssessments(context.Context, *ListAppAssessmentsInput, ...func(*Options)) (*ListAppAssessmentsOutput, error) +} + +var _ ListAppAssessmentsAPIClient = (*Client)(nil) + +// ListAppAssessmentsPaginatorOptions is the paginator options for +// ListAppAssessments +type ListAppAssessmentsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppAssessmentsPaginator is a paginator for ListAppAssessments +type ListAppAssessmentsPaginator struct { + options ListAppAssessmentsPaginatorOptions + client ListAppAssessmentsAPIClient + params *ListAppAssessmentsInput + nextToken *string + firstPage bool +} + +// NewListAppAssessmentsPaginator returns a new ListAppAssessmentsPaginator +func NewListAppAssessmentsPaginator(client ListAppAssessmentsAPIClient, params *ListAppAssessmentsInput, optFns ...func(*ListAppAssessmentsPaginatorOptions)) *ListAppAssessmentsPaginator { + if params == nil { + params = &ListAppAssessmentsInput{} + } + + options := ListAppAssessmentsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppAssessmentsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppAssessmentsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppAssessments page. +func (p *ListAppAssessmentsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppAssessmentsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppAssessments(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppAssessments(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppAssessments", + } +} diff --git a/service/resiliencehub/api_op_ListAppComponentCompliances.go b/service/resiliencehub/api_op_ListAppComponentCompliances.go new file mode 100644 index 00000000000..aa8c0f44348 --- /dev/null +++ b/service/resiliencehub/api_op_ListAppComponentCompliances.go @@ -0,0 +1,218 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the compliances for an AWS Resilience Hub component. +func (c *Client) ListAppComponentCompliances(ctx context.Context, params *ListAppComponentCompliancesInput, optFns ...func(*Options)) (*ListAppComponentCompliancesOutput, error) { + if params == nil { + params = &ListAppComponentCompliancesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppComponentCompliances", params, optFns, c.addOperationListAppComponentCompliancesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppComponentCompliancesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppComponentCompliancesInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAppComponentCompliancesOutput struct { + + // The compliances for an AWS Resilience Hub application component, returned as an + // object. This object contains component names, compliances, costs, resiliency + // scores, outage scores, and more. + // + // This member is required. + ComponentCompliances []types.AppComponentCompliance + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppComponentCompliancesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppComponentCompliances{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppComponentCompliances{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAppComponentCompliancesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppComponentCompliances(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppComponentCompliancesAPIClient is a client that implements the +// ListAppComponentCompliances operation. +type ListAppComponentCompliancesAPIClient interface { + ListAppComponentCompliances(context.Context, *ListAppComponentCompliancesInput, ...func(*Options)) (*ListAppComponentCompliancesOutput, error) +} + +var _ ListAppComponentCompliancesAPIClient = (*Client)(nil) + +// ListAppComponentCompliancesPaginatorOptions is the paginator options for +// ListAppComponentCompliances +type ListAppComponentCompliancesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppComponentCompliancesPaginator is a paginator for +// ListAppComponentCompliances +type ListAppComponentCompliancesPaginator struct { + options ListAppComponentCompliancesPaginatorOptions + client ListAppComponentCompliancesAPIClient + params *ListAppComponentCompliancesInput + nextToken *string + firstPage bool +} + +// NewListAppComponentCompliancesPaginator returns a new +// ListAppComponentCompliancesPaginator +func NewListAppComponentCompliancesPaginator(client ListAppComponentCompliancesAPIClient, params *ListAppComponentCompliancesInput, optFns ...func(*ListAppComponentCompliancesPaginatorOptions)) *ListAppComponentCompliancesPaginator { + if params == nil { + params = &ListAppComponentCompliancesInput{} + } + + options := ListAppComponentCompliancesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppComponentCompliancesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppComponentCompliancesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppComponentCompliances page. +func (p *ListAppComponentCompliancesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppComponentCompliancesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppComponentCompliances(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppComponentCompliances(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppComponentCompliances", + } +} diff --git a/service/resiliencehub/api_op_ListAppComponentRecommendations.go b/service/resiliencehub/api_op_ListAppComponentRecommendations.go new file mode 100644 index 00000000000..f7d15eeb603 --- /dev/null +++ b/service/resiliencehub/api_op_ListAppComponentRecommendations.go @@ -0,0 +1,218 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the recommendations for an AWS Resilience Hub component. +func (c *Client) ListAppComponentRecommendations(ctx context.Context, params *ListAppComponentRecommendationsInput, optFns ...func(*Options)) (*ListAppComponentRecommendationsOutput, error) { + if params == nil { + params = &ListAppComponentRecommendationsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppComponentRecommendations", params, optFns, c.addOperationListAppComponentRecommendationsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppComponentRecommendationsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppComponentRecommendationsInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAppComponentRecommendationsOutput struct { + + // The recommendations for an Resilience Hub application component, returned as an + // object. This object contains component names, configuration recommendations, and + // recommendation statuses. + // + // This member is required. + ComponentRecommendations []types.ComponentRecommendation + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppComponentRecommendationsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppComponentRecommendations{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppComponentRecommendations{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAppComponentRecommendationsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppComponentRecommendations(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppComponentRecommendationsAPIClient is a client that implements the +// ListAppComponentRecommendations operation. +type ListAppComponentRecommendationsAPIClient interface { + ListAppComponentRecommendations(context.Context, *ListAppComponentRecommendationsInput, ...func(*Options)) (*ListAppComponentRecommendationsOutput, error) +} + +var _ ListAppComponentRecommendationsAPIClient = (*Client)(nil) + +// ListAppComponentRecommendationsPaginatorOptions is the paginator options for +// ListAppComponentRecommendations +type ListAppComponentRecommendationsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppComponentRecommendationsPaginator is a paginator for +// ListAppComponentRecommendations +type ListAppComponentRecommendationsPaginator struct { + options ListAppComponentRecommendationsPaginatorOptions + client ListAppComponentRecommendationsAPIClient + params *ListAppComponentRecommendationsInput + nextToken *string + firstPage bool +} + +// NewListAppComponentRecommendationsPaginator returns a new +// ListAppComponentRecommendationsPaginator +func NewListAppComponentRecommendationsPaginator(client ListAppComponentRecommendationsAPIClient, params *ListAppComponentRecommendationsInput, optFns ...func(*ListAppComponentRecommendationsPaginatorOptions)) *ListAppComponentRecommendationsPaginator { + if params == nil { + params = &ListAppComponentRecommendationsInput{} + } + + options := ListAppComponentRecommendationsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppComponentRecommendationsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppComponentRecommendationsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppComponentRecommendations page. +func (p *ListAppComponentRecommendationsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppComponentRecommendationsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppComponentRecommendations(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppComponentRecommendations(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppComponentRecommendations", + } +} diff --git a/service/resiliencehub/api_op_ListAppVersionResourceMappings.go b/service/resiliencehub/api_op_ListAppVersionResourceMappings.go new file mode 100644 index 00000000000..b0fcb51ac95 --- /dev/null +++ b/service/resiliencehub/api_op_ListAppVersionResourceMappings.go @@ -0,0 +1,227 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists how the resources in an application version are mapped/sourced from. +// Mappings can be physical resource identifiers, CloudFormation stacks, +// resource-groups, or an application registry app. +func (c *Client) ListAppVersionResourceMappings(ctx context.Context, params *ListAppVersionResourceMappingsInput, optFns ...func(*Options)) (*ListAppVersionResourceMappingsOutput, error) { + if params == nil { + params = &ListAppVersionResourceMappingsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppVersionResourceMappings", params, optFns, c.addOperationListAppVersionResourceMappingsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppVersionResourceMappingsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppVersionResourceMappingsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAppVersionResourceMappingsOutput struct { + + // Mappings used to map logical resources from the template to physical resources. + // You can use the mapping type CFN_STACK if the application template uses a + // logical stack name. Or you can map individual resources by using the mapping + // type RESOURCE. We recommend using the mapping type CFN_STACK if the application + // is backed by a CloudFormation stack. + // + // This member is required. + ResourceMappings []types.ResourceMapping + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppVersionResourceMappingsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAppVersionResourceMappingsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppVersionResourceMappings(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppVersionResourceMappingsAPIClient is a client that implements the +// ListAppVersionResourceMappings operation. +type ListAppVersionResourceMappingsAPIClient interface { + ListAppVersionResourceMappings(context.Context, *ListAppVersionResourceMappingsInput, ...func(*Options)) (*ListAppVersionResourceMappingsOutput, error) +} + +var _ ListAppVersionResourceMappingsAPIClient = (*Client)(nil) + +// ListAppVersionResourceMappingsPaginatorOptions is the paginator options for +// ListAppVersionResourceMappings +type ListAppVersionResourceMappingsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppVersionResourceMappingsPaginator is a paginator for +// ListAppVersionResourceMappings +type ListAppVersionResourceMappingsPaginator struct { + options ListAppVersionResourceMappingsPaginatorOptions + client ListAppVersionResourceMappingsAPIClient + params *ListAppVersionResourceMappingsInput + nextToken *string + firstPage bool +} + +// NewListAppVersionResourceMappingsPaginator returns a new +// ListAppVersionResourceMappingsPaginator +func NewListAppVersionResourceMappingsPaginator(client ListAppVersionResourceMappingsAPIClient, params *ListAppVersionResourceMappingsInput, optFns ...func(*ListAppVersionResourceMappingsPaginatorOptions)) *ListAppVersionResourceMappingsPaginator { + if params == nil { + params = &ListAppVersionResourceMappingsInput{} + } + + options := ListAppVersionResourceMappingsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppVersionResourceMappingsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppVersionResourceMappingsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppVersionResourceMappings page. +func (p *ListAppVersionResourceMappingsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppVersionResourceMappingsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppVersionResourceMappings(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppVersionResourceMappings(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppVersionResourceMappings", + } +} diff --git a/service/resiliencehub/api_op_ListAppVersionResources.go b/service/resiliencehub/api_op_ListAppVersionResources.go new file mode 100644 index 00000000000..5a695665c01 --- /dev/null +++ b/service/resiliencehub/api_op_ListAppVersionResources.go @@ -0,0 +1,228 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists all the resources in an application version. +func (c *Client) ListAppVersionResources(ctx context.Context, params *ListAppVersionResourcesInput, optFns ...func(*Options)) (*ListAppVersionResourcesOutput, error) { + if params == nil { + params = &ListAppVersionResourcesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppVersionResources", params, optFns, c.addOperationListAppVersionResourcesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppVersionResourcesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppVersionResourcesInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + // The identifier for a specific resolution. + ResolutionId *string + + noSmithyDocumentSerde +} + +type ListAppVersionResourcesOutput struct { + + // The physical resources in the application version. + // + // This member is required. + PhysicalResources []types.PhysicalResource + + // The identifier for a specific resolution. + // + // This member is required. + ResolutionId *string + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppVersionResourcesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppVersionResources{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppVersionResources{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAppVersionResourcesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppVersionResources(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppVersionResourcesAPIClient is a client that implements the +// ListAppVersionResources operation. +type ListAppVersionResourcesAPIClient interface { + ListAppVersionResources(context.Context, *ListAppVersionResourcesInput, ...func(*Options)) (*ListAppVersionResourcesOutput, error) +} + +var _ ListAppVersionResourcesAPIClient = (*Client)(nil) + +// ListAppVersionResourcesPaginatorOptions is the paginator options for +// ListAppVersionResources +type ListAppVersionResourcesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppVersionResourcesPaginator is a paginator for ListAppVersionResources +type ListAppVersionResourcesPaginator struct { + options ListAppVersionResourcesPaginatorOptions + client ListAppVersionResourcesAPIClient + params *ListAppVersionResourcesInput + nextToken *string + firstPage bool +} + +// NewListAppVersionResourcesPaginator returns a new +// ListAppVersionResourcesPaginator +func NewListAppVersionResourcesPaginator(client ListAppVersionResourcesAPIClient, params *ListAppVersionResourcesInput, optFns ...func(*ListAppVersionResourcesPaginatorOptions)) *ListAppVersionResourcesPaginator { + if params == nil { + params = &ListAppVersionResourcesInput{} + } + + options := ListAppVersionResourcesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppVersionResourcesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppVersionResourcesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppVersionResources page. +func (p *ListAppVersionResourcesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppVersionResourcesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppVersionResources(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppVersionResources(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppVersionResources", + } +} diff --git a/service/resiliencehub/api_op_ListAppVersions.go b/service/resiliencehub/api_op_ListAppVersions.go new file mode 100644 index 00000000000..d23363c2c9a --- /dev/null +++ b/service/resiliencehub/api_op_ListAppVersions.go @@ -0,0 +1,213 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the different versions for the Resilience Hub applications. +func (c *Client) ListAppVersions(ctx context.Context, params *ListAppVersionsInput, optFns ...func(*Options)) (*ListAppVersionsOutput, error) { + if params == nil { + params = &ListAppVersionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAppVersions", params, optFns, c.addOperationListAppVersionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppVersionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppVersionsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAppVersionsOutput struct { + + // The version of the application. + // + // This member is required. + AppVersions []types.AppVersionSummary + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppVersionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListAppVersions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListAppVersions{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListAppVersionsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAppVersions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppVersionsAPIClient is a client that implements the ListAppVersions +// operation. +type ListAppVersionsAPIClient interface { + ListAppVersions(context.Context, *ListAppVersionsInput, ...func(*Options)) (*ListAppVersionsOutput, error) +} + +var _ ListAppVersionsAPIClient = (*Client)(nil) + +// ListAppVersionsPaginatorOptions is the paginator options for ListAppVersions +type ListAppVersionsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppVersionsPaginator is a paginator for ListAppVersions +type ListAppVersionsPaginator struct { + options ListAppVersionsPaginatorOptions + client ListAppVersionsAPIClient + params *ListAppVersionsInput + nextToken *string + firstPage bool +} + +// NewListAppVersionsPaginator returns a new ListAppVersionsPaginator +func NewListAppVersionsPaginator(client ListAppVersionsAPIClient, params *ListAppVersionsInput, optFns ...func(*ListAppVersionsPaginatorOptions)) *ListAppVersionsPaginator { + if params == nil { + params = &ListAppVersionsInput{} + } + + options := ListAppVersionsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppVersionsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppVersionsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListAppVersions page. +func (p *ListAppVersionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppVersionsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListAppVersions(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListAppVersions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListAppVersions", + } +} diff --git a/service/resiliencehub/api_op_ListApps.go b/service/resiliencehub/api_op_ListApps.go new file mode 100644 index 00000000000..13ce877cf1f --- /dev/null +++ b/service/resiliencehub/api_op_ListApps.go @@ -0,0 +1,210 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists your Resilience Hub applications. +func (c *Client) ListApps(ctx context.Context, params *ListAppsInput, optFns ...func(*Options)) (*ListAppsOutput, error) { + if params == nil { + params = &ListAppsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListApps", params, optFns, c.addOperationListAppsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAppsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAppsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // The name for the one of the listed applications. + Name *string + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAppsOutput struct { + + // Summaries for the Resilience Hub application. + // + // This member is required. + AppSummaries []types.AppSummary + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAppsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListApps{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListApps{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListApps(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListAppsAPIClient is a client that implements the ListApps operation. +type ListAppsAPIClient interface { + ListApps(context.Context, *ListAppsInput, ...func(*Options)) (*ListAppsOutput, error) +} + +var _ ListAppsAPIClient = (*Client)(nil) + +// ListAppsPaginatorOptions is the paginator options for ListApps +type ListAppsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAppsPaginator is a paginator for ListApps +type ListAppsPaginator struct { + options ListAppsPaginatorOptions + client ListAppsAPIClient + params *ListAppsInput + nextToken *string + firstPage bool +} + +// NewListAppsPaginator returns a new ListAppsPaginator +func NewListAppsPaginator(client ListAppsAPIClient, params *ListAppsInput, optFns ...func(*ListAppsPaginatorOptions)) *ListAppsPaginator { + if params == nil { + params = &ListAppsInput{} + } + + options := ListAppsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListAppsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAppsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListApps page. +func (p *ListAppsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAppsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListApps(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListApps(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListApps", + } +} diff --git a/service/resiliencehub/api_op_ListRecommendationTemplates.go b/service/resiliencehub/api_op_ListRecommendationTemplates.go new file mode 100644 index 00000000000..310c00439f8 --- /dev/null +++ b/service/resiliencehub/api_op_ListRecommendationTemplates.go @@ -0,0 +1,227 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the recommendation templates for the Resilience Hub applications. +func (c *Client) ListRecommendationTemplates(ctx context.Context, params *ListRecommendationTemplatesInput, optFns ...func(*Options)) (*ListRecommendationTemplatesOutput, error) { + if params == nil { + params = &ListRecommendationTemplatesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListRecommendationTemplates", params, optFns, c.addOperationListRecommendationTemplatesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListRecommendationTemplatesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListRecommendationTemplatesInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // The name for one of the listed recommendation templates. + Name *string + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + // The Amazon Resource Name (ARN) for a recommendation template. + RecommendationTemplateArn *string + + // The default is to sort by ascending startTime. To sort by descending startTime, + // set reverseOrder to true. + ReverseOrder *bool + + // The status of the action. + Status []types.RecommendationTemplateStatus + + noSmithyDocumentSerde +} + +type ListRecommendationTemplatesOutput struct { + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // The recommendation templates for the Resilience Hub applications. + RecommendationTemplates []types.RecommendationTemplate + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListRecommendationTemplatesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListRecommendationTemplates{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListRecommendationTemplates{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListRecommendationTemplatesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListRecommendationTemplates(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListRecommendationTemplatesAPIClient is a client that implements the +// ListRecommendationTemplates operation. +type ListRecommendationTemplatesAPIClient interface { + ListRecommendationTemplates(context.Context, *ListRecommendationTemplatesInput, ...func(*Options)) (*ListRecommendationTemplatesOutput, error) +} + +var _ ListRecommendationTemplatesAPIClient = (*Client)(nil) + +// ListRecommendationTemplatesPaginatorOptions is the paginator options for +// ListRecommendationTemplates +type ListRecommendationTemplatesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListRecommendationTemplatesPaginator is a paginator for +// ListRecommendationTemplates +type ListRecommendationTemplatesPaginator struct { + options ListRecommendationTemplatesPaginatorOptions + client ListRecommendationTemplatesAPIClient + params *ListRecommendationTemplatesInput + nextToken *string + firstPage bool +} + +// NewListRecommendationTemplatesPaginator returns a new +// ListRecommendationTemplatesPaginator +func NewListRecommendationTemplatesPaginator(client ListRecommendationTemplatesAPIClient, params *ListRecommendationTemplatesInput, optFns ...func(*ListRecommendationTemplatesPaginatorOptions)) *ListRecommendationTemplatesPaginator { + if params == nil { + params = &ListRecommendationTemplatesInput{} + } + + options := ListRecommendationTemplatesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListRecommendationTemplatesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListRecommendationTemplatesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListRecommendationTemplates page. +func (p *ListRecommendationTemplatesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListRecommendationTemplatesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListRecommendationTemplates(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListRecommendationTemplates(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListRecommendationTemplates", + } +} diff --git a/service/resiliencehub/api_op_ListResiliencyPolicies.go b/service/resiliencehub/api_op_ListResiliencyPolicies.go new file mode 100644 index 00000000000..6d3d8f96131 --- /dev/null +++ b/service/resiliencehub/api_op_ListResiliencyPolicies.go @@ -0,0 +1,205 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the resiliency policies for the Resilience Hub applications. +func (c *Client) ListResiliencyPolicies(ctx context.Context, params *ListResiliencyPoliciesInput, optFns ...func(*Options)) (*ListResiliencyPoliciesOutput, error) { + if params == nil { + params = &ListResiliencyPoliciesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListResiliencyPolicies", params, optFns, c.addOperationListResiliencyPoliciesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListResiliencyPoliciesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListResiliencyPoliciesInput struct { + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + // The name of the policy + PolicyName *string + + noSmithyDocumentSerde +} + +type ListResiliencyPoliciesOutput struct { + + // The resiliency policies for the Resilience Hub applications. + // + // This member is required. + ResiliencyPolicies []types.ResiliencyPolicy + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListResiliencyPoliciesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListResiliencyPolicies{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListResiliencyPolicies{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListResiliencyPolicies(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListResiliencyPoliciesAPIClient is a client that implements the +// ListResiliencyPolicies operation. +type ListResiliencyPoliciesAPIClient interface { + ListResiliencyPolicies(context.Context, *ListResiliencyPoliciesInput, ...func(*Options)) (*ListResiliencyPoliciesOutput, error) +} + +var _ ListResiliencyPoliciesAPIClient = (*Client)(nil) + +// ListResiliencyPoliciesPaginatorOptions is the paginator options for +// ListResiliencyPolicies +type ListResiliencyPoliciesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListResiliencyPoliciesPaginator is a paginator for ListResiliencyPolicies +type ListResiliencyPoliciesPaginator struct { + options ListResiliencyPoliciesPaginatorOptions + client ListResiliencyPoliciesAPIClient + params *ListResiliencyPoliciesInput + nextToken *string + firstPage bool +} + +// NewListResiliencyPoliciesPaginator returns a new ListResiliencyPoliciesPaginator +func NewListResiliencyPoliciesPaginator(client ListResiliencyPoliciesAPIClient, params *ListResiliencyPoliciesInput, optFns ...func(*ListResiliencyPoliciesPaginatorOptions)) *ListResiliencyPoliciesPaginator { + if params == nil { + params = &ListResiliencyPoliciesInput{} + } + + options := ListResiliencyPoliciesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListResiliencyPoliciesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListResiliencyPoliciesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListResiliencyPolicies page. +func (p *ListResiliencyPoliciesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListResiliencyPoliciesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListResiliencyPolicies(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListResiliencyPolicies(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListResiliencyPolicies", + } +} diff --git a/service/resiliencehub/api_op_ListSopRecommendations.go b/service/resiliencehub/api_op_ListSopRecommendations.go new file mode 100644 index 00000000000..db575a67302 --- /dev/null +++ b/service/resiliencehub/api_op_ListSopRecommendations.go @@ -0,0 +1,216 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the standard operating procedure (SOP) recommendations for the Resilience +// Hub applications. +func (c *Client) ListSopRecommendations(ctx context.Context, params *ListSopRecommendationsInput, optFns ...func(*Options)) (*ListSopRecommendationsOutput, error) { + if params == nil { + params = &ListSopRecommendationsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListSopRecommendations", params, optFns, c.addOperationListSopRecommendationsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListSopRecommendationsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListSopRecommendationsInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListSopRecommendationsOutput struct { + + // The standard operating procedure (SOP) recommendations for the Resilience Hub + // applications. + // + // This member is required. + SopRecommendations []types.SopRecommendation + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListSopRecommendationsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListSopRecommendations{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListSopRecommendations{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListSopRecommendationsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListSopRecommendations(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListSopRecommendationsAPIClient is a client that implements the +// ListSopRecommendations operation. +type ListSopRecommendationsAPIClient interface { + ListSopRecommendations(context.Context, *ListSopRecommendationsInput, ...func(*Options)) (*ListSopRecommendationsOutput, error) +} + +var _ ListSopRecommendationsAPIClient = (*Client)(nil) + +// ListSopRecommendationsPaginatorOptions is the paginator options for +// ListSopRecommendations +type ListSopRecommendationsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListSopRecommendationsPaginator is a paginator for ListSopRecommendations +type ListSopRecommendationsPaginator struct { + options ListSopRecommendationsPaginatorOptions + client ListSopRecommendationsAPIClient + params *ListSopRecommendationsInput + nextToken *string + firstPage bool +} + +// NewListSopRecommendationsPaginator returns a new ListSopRecommendationsPaginator +func NewListSopRecommendationsPaginator(client ListSopRecommendationsAPIClient, params *ListSopRecommendationsInput, optFns ...func(*ListSopRecommendationsPaginatorOptions)) *ListSopRecommendationsPaginator { + if params == nil { + params = &ListSopRecommendationsInput{} + } + + options := ListSopRecommendationsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListSopRecommendationsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListSopRecommendationsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListSopRecommendations page. +func (p *ListSopRecommendationsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListSopRecommendationsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListSopRecommendations(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListSopRecommendations(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListSopRecommendations", + } +} diff --git a/service/resiliencehub/api_op_ListSuggestedResiliencyPolicies.go b/service/resiliencehub/api_op_ListSuggestedResiliencyPolicies.go new file mode 100644 index 00000000000..ba1321f2715 --- /dev/null +++ b/service/resiliencehub/api_op_ListSuggestedResiliencyPolicies.go @@ -0,0 +1,204 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the suggested resiliency policies for the Resilience Hub applications. +func (c *Client) ListSuggestedResiliencyPolicies(ctx context.Context, params *ListSuggestedResiliencyPoliciesInput, optFns ...func(*Options)) (*ListSuggestedResiliencyPoliciesOutput, error) { + if params == nil { + params = &ListSuggestedResiliencyPoliciesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListSuggestedResiliencyPolicies", params, optFns, c.addOperationListSuggestedResiliencyPoliciesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListSuggestedResiliencyPoliciesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListSuggestedResiliencyPoliciesInput struct { + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListSuggestedResiliencyPoliciesOutput struct { + + // The suggested resiliency policies for the Resilience Hub applications. + // + // This member is required. + ResiliencyPolicies []types.ResiliencyPolicy + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListSuggestedResiliencyPoliciesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListSuggestedResiliencyPolicies{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListSuggestedResiliencyPolicies{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListSuggestedResiliencyPolicies(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListSuggestedResiliencyPoliciesAPIClient is a client that implements the +// ListSuggestedResiliencyPolicies operation. +type ListSuggestedResiliencyPoliciesAPIClient interface { + ListSuggestedResiliencyPolicies(context.Context, *ListSuggestedResiliencyPoliciesInput, ...func(*Options)) (*ListSuggestedResiliencyPoliciesOutput, error) +} + +var _ ListSuggestedResiliencyPoliciesAPIClient = (*Client)(nil) + +// ListSuggestedResiliencyPoliciesPaginatorOptions is the paginator options for +// ListSuggestedResiliencyPolicies +type ListSuggestedResiliencyPoliciesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListSuggestedResiliencyPoliciesPaginator is a paginator for +// ListSuggestedResiliencyPolicies +type ListSuggestedResiliencyPoliciesPaginator struct { + options ListSuggestedResiliencyPoliciesPaginatorOptions + client ListSuggestedResiliencyPoliciesAPIClient + params *ListSuggestedResiliencyPoliciesInput + nextToken *string + firstPage bool +} + +// NewListSuggestedResiliencyPoliciesPaginator returns a new +// ListSuggestedResiliencyPoliciesPaginator +func NewListSuggestedResiliencyPoliciesPaginator(client ListSuggestedResiliencyPoliciesAPIClient, params *ListSuggestedResiliencyPoliciesInput, optFns ...func(*ListSuggestedResiliencyPoliciesPaginatorOptions)) *ListSuggestedResiliencyPoliciesPaginator { + if params == nil { + params = &ListSuggestedResiliencyPoliciesInput{} + } + + options := ListSuggestedResiliencyPoliciesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListSuggestedResiliencyPoliciesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListSuggestedResiliencyPoliciesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListSuggestedResiliencyPolicies page. +func (p *ListSuggestedResiliencyPoliciesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListSuggestedResiliencyPoliciesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListSuggestedResiliencyPolicies(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListSuggestedResiliencyPolicies(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListSuggestedResiliencyPolicies", + } +} diff --git a/service/resiliencehub/api_op_ListTagsForResource.go b/service/resiliencehub/api_op_ListTagsForResource.go new file mode 100644 index 00000000000..62fb43212ba --- /dev/null +++ b/service/resiliencehub/api_op_ListTagsForResource.go @@ -0,0 +1,122 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the tags for your resources in your Resilience Hub applications. +func (c *Client) ListTagsForResource(ctx context.Context, params *ListTagsForResourceInput, optFns ...func(*Options)) (*ListTagsForResourceOutput, error) { + if params == nil { + params = &ListTagsForResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTagsForResource", params, optFns, c.addOperationListTagsForResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTagsForResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTagsForResourceInput struct { + + // The Amazon Resource Name (ARN) for a specific resource in your Resilience Hub + // application. + // + // This member is required. + ResourceArn *string + + noSmithyDocumentSerde +} + +type ListTagsForResourceOutput struct { + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTagsForResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListTagsForResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListTagsForResource{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListTagsForResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTagsForResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opListTagsForResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListTagsForResource", + } +} diff --git a/service/resiliencehub/api_op_ListTestRecommendations.go b/service/resiliencehub/api_op_ListTestRecommendations.go new file mode 100644 index 00000000000..fb873cca11f --- /dev/null +++ b/service/resiliencehub/api_op_ListTestRecommendations.go @@ -0,0 +1,215 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the test recommendations for the Resilience Hub application. +func (c *Client) ListTestRecommendations(ctx context.Context, params *ListTestRecommendationsInput, optFns ...func(*Options)) (*ListTestRecommendationsOutput, error) { + if params == nil { + params = &ListTestRecommendationsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTestRecommendations", params, optFns, c.addOperationListTestRecommendationsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTestRecommendationsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTestRecommendationsInput struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + noSmithyDocumentSerde +} + +type ListTestRecommendationsOutput struct { + + // The test recommendations for the Resilience Hub application. + // + // This member is required. + TestRecommendations []types.TestRecommendation + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTestRecommendationsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListTestRecommendations{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListTestRecommendations{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListTestRecommendationsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTestRecommendations(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListTestRecommendationsAPIClient is a client that implements the +// ListTestRecommendations operation. +type ListTestRecommendationsAPIClient interface { + ListTestRecommendations(context.Context, *ListTestRecommendationsInput, ...func(*Options)) (*ListTestRecommendationsOutput, error) +} + +var _ ListTestRecommendationsAPIClient = (*Client)(nil) + +// ListTestRecommendationsPaginatorOptions is the paginator options for +// ListTestRecommendations +type ListTestRecommendationsPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListTestRecommendationsPaginator is a paginator for ListTestRecommendations +type ListTestRecommendationsPaginator struct { + options ListTestRecommendationsPaginatorOptions + client ListTestRecommendationsAPIClient + params *ListTestRecommendationsInput + nextToken *string + firstPage bool +} + +// NewListTestRecommendationsPaginator returns a new +// ListTestRecommendationsPaginator +func NewListTestRecommendationsPaginator(client ListTestRecommendationsAPIClient, params *ListTestRecommendationsInput, optFns ...func(*ListTestRecommendationsPaginatorOptions)) *ListTestRecommendationsPaginator { + if params == nil { + params = &ListTestRecommendationsInput{} + } + + options := ListTestRecommendationsPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListTestRecommendationsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListTestRecommendationsPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListTestRecommendations page. +func (p *ListTestRecommendationsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListTestRecommendationsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListTestRecommendations(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListTestRecommendations(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListTestRecommendations", + } +} diff --git a/service/resiliencehub/api_op_ListUnsupportedAppVersionResources.go b/service/resiliencehub/api_op_ListUnsupportedAppVersionResources.go new file mode 100644 index 00000000000..779e2b5fbde --- /dev/null +++ b/service/resiliencehub/api_op_ListUnsupportedAppVersionResources.go @@ -0,0 +1,231 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the resources that are not currently supported in AWS Resilience Hub. An +// unsupported resource is a resource that exists in the object that was used to +// create an app, but is not supported by Resilience Hub. +func (c *Client) ListUnsupportedAppVersionResources(ctx context.Context, params *ListUnsupportedAppVersionResourcesInput, optFns ...func(*Options)) (*ListUnsupportedAppVersionResourcesOutput, error) { + if params == nil { + params = &ListUnsupportedAppVersionResourcesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListUnsupportedAppVersionResources", params, optFns, c.addOperationListUnsupportedAppVersionResourcesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListUnsupportedAppVersionResourcesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListUnsupportedAppVersionResourcesInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The maximum number of results to include in the response. If more results exist + // than the specified MaxResults value, a token is included in the response so that + // the remaining results can be retrieved. + MaxResults *int32 + + // Null, or the token from a previous call to get the next set of results. + NextToken *string + + // The identifier for a specific resolution. + ResolutionId *string + + noSmithyDocumentSerde +} + +type ListUnsupportedAppVersionResourcesOutput struct { + + // The identifier for a specific resolution. + // + // This member is required. + ResolutionId *string + + // The unsupported resources for the application. + // + // This member is required. + UnsupportedResources []types.UnsupportedResource + + // The token for the next set of results, or null if there are no more results. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListUnsupportedAppVersionResourcesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpListUnsupportedAppVersionResources{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListUnsupportedAppVersionResources{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpListUnsupportedAppVersionResourcesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListUnsupportedAppVersionResources(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +// ListUnsupportedAppVersionResourcesAPIClient is a client that implements the +// ListUnsupportedAppVersionResources operation. +type ListUnsupportedAppVersionResourcesAPIClient interface { + ListUnsupportedAppVersionResources(context.Context, *ListUnsupportedAppVersionResourcesInput, ...func(*Options)) (*ListUnsupportedAppVersionResourcesOutput, error) +} + +var _ ListUnsupportedAppVersionResourcesAPIClient = (*Client)(nil) + +// ListUnsupportedAppVersionResourcesPaginatorOptions is the paginator options for +// ListUnsupportedAppVersionResources +type ListUnsupportedAppVersionResourcesPaginatorOptions struct { + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListUnsupportedAppVersionResourcesPaginator is a paginator for +// ListUnsupportedAppVersionResources +type ListUnsupportedAppVersionResourcesPaginator struct { + options ListUnsupportedAppVersionResourcesPaginatorOptions + client ListUnsupportedAppVersionResourcesAPIClient + params *ListUnsupportedAppVersionResourcesInput + nextToken *string + firstPage bool +} + +// NewListUnsupportedAppVersionResourcesPaginator returns a new +// ListUnsupportedAppVersionResourcesPaginator +func NewListUnsupportedAppVersionResourcesPaginator(client ListUnsupportedAppVersionResourcesAPIClient, params *ListUnsupportedAppVersionResourcesInput, optFns ...func(*ListUnsupportedAppVersionResourcesPaginatorOptions)) *ListUnsupportedAppVersionResourcesPaginator { + if params == nil { + params = &ListUnsupportedAppVersionResourcesInput{} + } + + options := ListUnsupportedAppVersionResourcesPaginatorOptions{} + + for _, fn := range optFns { + fn(&options) + } + + return &ListUnsupportedAppVersionResourcesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListUnsupportedAppVersionResourcesPaginator) HasMorePages() bool { + return p.firstPage || p.nextToken != nil +} + +// NextPage retrieves the next ListUnsupportedAppVersionResources page. +func (p *ListUnsupportedAppVersionResourcesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListUnsupportedAppVersionResourcesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + result, err := p.client.ListUnsupportedAppVersionResources(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +func newServiceMetadataMiddleware_opListUnsupportedAppVersionResources(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ListUnsupportedAppVersionResources", + } +} diff --git a/service/resiliencehub/api_op_PublishAppVersion.go b/service/resiliencehub/api_op_PublishAppVersion.go new file mode 100644 index 00000000000..0f1b8612f2b --- /dev/null +++ b/service/resiliencehub/api_op_PublishAppVersion.go @@ -0,0 +1,133 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Publishes a new version of a specific Resilience Hub application. +func (c *Client) PublishAppVersion(ctx context.Context, params *PublishAppVersionInput, optFns ...func(*Options)) (*PublishAppVersionOutput, error) { + if params == nil { + params = &PublishAppVersionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PublishAppVersion", params, optFns, c.addOperationPublishAppVersionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PublishAppVersionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PublishAppVersionInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + noSmithyDocumentSerde +} + +type PublishAppVersionOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + AppVersion *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPublishAppVersionMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpPublishAppVersion{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpPublishAppVersion{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpPublishAppVersionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPublishAppVersion(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPublishAppVersion(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "PublishAppVersion", + } +} diff --git a/service/resiliencehub/api_op_PutDraftAppVersionTemplate.go b/service/resiliencehub/api_op_PutDraftAppVersionTemplate.go new file mode 100644 index 00000000000..5a864708586 --- /dev/null +++ b/service/resiliencehub/api_op_PutDraftAppVersionTemplate.go @@ -0,0 +1,136 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Adds or updates the app template for a draft version of a Resilience Hub app. +func (c *Client) PutDraftAppVersionTemplate(ctx context.Context, params *PutDraftAppVersionTemplateInput, optFns ...func(*Options)) (*PutDraftAppVersionTemplateOutput, error) { + if params == nil { + params = &PutDraftAppVersionTemplateInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PutDraftAppVersionTemplate", params, optFns, c.addOperationPutDraftAppVersionTemplateMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PutDraftAppVersionTemplateOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PutDraftAppVersionTemplateInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // A JSON string that contains the body of the app template. + // + // This member is required. + AppTemplateBody *string + + noSmithyDocumentSerde +} + +type PutDraftAppVersionTemplateOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The version of the application. + AppVersion *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPutDraftAppVersionTemplateMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpPutDraftAppVersionTemplate{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpPutDraftAppVersionTemplate{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpPutDraftAppVersionTemplateValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutDraftAppVersionTemplate(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPutDraftAppVersionTemplate(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "PutDraftAppVersionTemplate", + } +} diff --git a/service/resiliencehub/api_op_RemoveDraftAppVersionResourceMappings.go b/service/resiliencehub/api_op_RemoveDraftAppVersionResourceMappings.go new file mode 100644 index 00000000000..55b4d3e3c3b --- /dev/null +++ b/service/resiliencehub/api_op_RemoveDraftAppVersionResourceMappings.go @@ -0,0 +1,143 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Removes resource mappings from a draft application version. +func (c *Client) RemoveDraftAppVersionResourceMappings(ctx context.Context, params *RemoveDraftAppVersionResourceMappingsInput, optFns ...func(*Options)) (*RemoveDraftAppVersionResourceMappingsOutput, error) { + if params == nil { + params = &RemoveDraftAppVersionResourceMappingsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "RemoveDraftAppVersionResourceMappings", params, optFns, c.addOperationRemoveDraftAppVersionResourceMappingsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*RemoveDraftAppVersionResourceMappingsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type RemoveDraftAppVersionResourceMappingsInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The names of the registered applications to remove from the resource mappings. + AppRegistryAppNames []string + + // The names of the CloudFormation stacks to remove from the resource mappings. + LogicalStackNames []string + + // The names of the resource groups to remove from the resource mappings. + ResourceGroupNames []string + + // The names of the resources to remove from the resource mappings. + ResourceNames []string + + noSmithyDocumentSerde +} + +type RemoveDraftAppVersionResourceMappingsOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The version of the application. + AppVersion *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationRemoveDraftAppVersionResourceMappingsMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpRemoveDraftAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpRemoveDraftAppVersionResourceMappings{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpRemoveDraftAppVersionResourceMappingsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRemoveDraftAppVersionResourceMappings(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opRemoveDraftAppVersionResourceMappings(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "RemoveDraftAppVersionResourceMappings", + } +} diff --git a/service/resiliencehub/api_op_ResolveAppVersionResources.go b/service/resiliencehub/api_op_ResolveAppVersionResources.go new file mode 100644 index 00000000000..37fbc8b4b51 --- /dev/null +++ b/service/resiliencehub/api_op_ResolveAppVersionResources.go @@ -0,0 +1,151 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Resolves the resources for an application version. +func (c *Client) ResolveAppVersionResources(ctx context.Context, params *ResolveAppVersionResourcesInput, optFns ...func(*Options)) (*ResolveAppVersionResourcesOutput, error) { + if params == nil { + params = &ResolveAppVersionResourcesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ResolveAppVersionResources", params, optFns, c.addOperationResolveAppVersionResourcesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ResolveAppVersionResourcesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ResolveAppVersionResourcesInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + noSmithyDocumentSerde +} + +type ResolveAppVersionResourcesOutput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The identifier for a specific resolution. + // + // This member is required. + ResolutionId *string + + // The status of the action. + // + // This member is required. + Status types.ResourceResolutionStatusType + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationResolveAppVersionResourcesMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpResolveAppVersionResources{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpResolveAppVersionResources{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpResolveAppVersionResourcesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opResolveAppVersionResources(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opResolveAppVersionResources(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "ResolveAppVersionResources", + } +} diff --git a/service/resiliencehub/api_op_StartAppAssessment.go b/service/resiliencehub/api_op_StartAppAssessment.go new file mode 100644 index 00000000000..48d3e386be1 --- /dev/null +++ b/service/resiliencehub/api_op_StartAppAssessment.go @@ -0,0 +1,183 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new application assessment for an application. +func (c *Client) StartAppAssessment(ctx context.Context, params *StartAppAssessmentInput, optFns ...func(*Options)) (*StartAppAssessmentOutput, error) { + if params == nil { + params = &StartAppAssessmentInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartAppAssessment", params, optFns, c.addOperationStartAppAssessmentMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartAppAssessmentOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartAppAssessmentInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The version of the application. + // + // This member is required. + AppVersion *string + + // The name for the assessment. + // + // This member is required. + AssessmentName *string + + // Used for an idempotency token. A client token is a unique, case-sensitive string + // of up to 64 ASCII characters. You should not reuse the same client token for + // other API requests. + ClientToken *string + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +type StartAppAssessmentOutput struct { + + // The assessment created. + // + // This member is required. + Assessment *types.AppAssessment + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartAppAssessmentMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpStartAppAssessment{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpStartAppAssessment{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addIdempotencyToken_opStartAppAssessmentMiddleware(stack, options); err != nil { + return err + } + if err = addOpStartAppAssessmentValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartAppAssessment(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpStartAppAssessment struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpStartAppAssessment) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpStartAppAssessment) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*StartAppAssessmentInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *StartAppAssessmentInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opStartAppAssessmentMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpStartAppAssessment{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opStartAppAssessment(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "StartAppAssessment", + } +} diff --git a/service/resiliencehub/api_op_TagResource.go b/service/resiliencehub/api_op_TagResource.go new file mode 100644 index 00000000000..dd0e84a20a7 --- /dev/null +++ b/service/resiliencehub/api_op_TagResource.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Applies one or more tags to a resource. +func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optFns ...func(*Options)) (*TagResourceOutput, error) { + if params == nil { + params = &TagResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "TagResource", params, optFns, c.addOperationTagResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*TagResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type TagResourceInput struct { + + // The Amazon Resource Name (ARN) of the resource. + // + // This member is required. + ResourceArn *string + + // The tags to assign to the resource. Each tag consists of a key/value pair. + // + // This member is required. + Tags map[string]string + + noSmithyDocumentSerde +} + +type TagResourceOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationTagResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpTagResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpTagResource{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpTagResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opTagResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opTagResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "TagResource", + } +} diff --git a/service/resiliencehub/api_op_UntagResource.go b/service/resiliencehub/api_op_UntagResource.go new file mode 100644 index 00000000000..8323c9c30e4 --- /dev/null +++ b/service/resiliencehub/api_op_UntagResource.go @@ -0,0 +1,121 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Removes one or more tags from a resource. +func (c *Client) UntagResource(ctx context.Context, params *UntagResourceInput, optFns ...func(*Options)) (*UntagResourceOutput, error) { + if params == nil { + params = &UntagResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UntagResource", params, optFns, c.addOperationUntagResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UntagResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UntagResourceInput struct { + + // The Amazon Resource Name (ARN) of the resource. + // + // This member is required. + ResourceArn *string + + // The keys of the tags to remove. + // + // This member is required. + TagKeys []string + + noSmithyDocumentSerde +} + +type UntagResourceOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUntagResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUntagResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUntagResource{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUntagResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUntagResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUntagResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "UntagResource", + } +} diff --git a/service/resiliencehub/api_op_UpdateApp.go b/service/resiliencehub/api_op_UpdateApp.go new file mode 100644 index 00000000000..48cf40afaf3 --- /dev/null +++ b/service/resiliencehub/api_op_UpdateApp.go @@ -0,0 +1,141 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates an application. +func (c *Client) UpdateApp(ctx context.Context, params *UpdateAppInput, optFns ...func(*Options)) (*UpdateAppOutput, error) { + if params == nil { + params = &UpdateAppInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateApp", params, optFns, c.addOperationUpdateAppMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateAppOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateAppInput struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // Specifies if the resiliency policy ARN should be cleared. + ClearResiliencyPolicyArn *bool + + // The optional description for an app. + Description *string + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + PolicyArn *string + + noSmithyDocumentSerde +} + +type UpdateAppOutput struct { + + // The specified application, returned as an object with details including + // compliance status, creation time, description, resiliency score, and more. + // + // This member is required. + App *types.App + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateAppMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateApp{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateApp{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateAppValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateApp(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateApp(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "UpdateApp", + } +} diff --git a/service/resiliencehub/api_op_UpdateResiliencyPolicy.go b/service/resiliencehub/api_op_UpdateResiliencyPolicy.go new file mode 100644 index 00000000000..e0873308f8c --- /dev/null +++ b/service/resiliencehub/api_op_UpdateResiliencyPolicy.go @@ -0,0 +1,146 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates a resiliency policy. +func (c *Client) UpdateResiliencyPolicy(ctx context.Context, params *UpdateResiliencyPolicyInput, optFns ...func(*Options)) (*UpdateResiliencyPolicyOutput, error) { + if params == nil { + params = &UpdateResiliencyPolicyInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateResiliencyPolicy", params, optFns, c.addOperationUpdateResiliencyPolicyMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateResiliencyPolicyOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateResiliencyPolicyInput struct { + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + PolicyArn *string + + // Specifies a high-level geographical location constraint for where your + // resilience policy data can be stored. + DataLocationConstraint types.DataLocationConstraint + + // The type of resiliency policy to be created, including the recovery time + // objective (RTO) and recovery point objective (RPO) in seconds. + Policy map[string]types.FailurePolicy + + // The description for the policy. + PolicyDescription *string + + // The name of the policy + PolicyName *string + + // The tier for this resiliency policy, ranging from the highest severity + // (MissionCritical) to lowest (NonCritical). + Tier types.ResiliencyPolicyTier + + noSmithyDocumentSerde +} + +type UpdateResiliencyPolicyOutput struct { + + // The type of resiliency policy that was updated, including the recovery time + // objective (RTO) and recovery point objective (RPO) in seconds. + // + // This member is required. + Policy *types.ResiliencyPolicy + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateResiliencyPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateResiliencyPolicy{}, middleware.After) + if err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { + return err + } + if err = addRetryMiddlewares(stack, options); err != nil { + return err + } + if err = addHTTPSignerV4Middleware(stack, options); err != nil { + return err + } + if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { + return err + } + if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { + return err + } + if err = addClientUserAgent(stack); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addOpUpdateResiliencyPolicyValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateResiliencyPolicy(options.Region), middleware.Before); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateResiliencyPolicy(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + SigningName: "resiliencehub", + OperationName: "UpdateResiliencyPolicy", + } +} diff --git a/service/resiliencehub/deserializers.go b/service/resiliencehub/deserializers.go new file mode 100644 index 00000000000..4aa477736db --- /dev/null +++ b/service/resiliencehub/deserializers.go @@ -0,0 +1,10410 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws/protocol/restjson" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + smithy "github.com/aws/smithy-go" + smithyio "github.com/aws/smithy-go/io" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + smithytime "github.com/aws/smithy-go/time" + smithyhttp "github.com/aws/smithy-go/transport/http" + "io" + "math" + "strings" +) + +type awsRestjson1_deserializeOpAddDraftAppVersionResourceMappings struct { +} + +func (*awsRestjson1_deserializeOpAddDraftAppVersionResourceMappings) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpAddDraftAppVersionResourceMappings) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorAddDraftAppVersionResourceMappings(response, &metadata) + } + output := &AddDraftAppVersionResourceMappingsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentAddDraftAppVersionResourceMappingsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorAddDraftAppVersionResourceMappings(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentAddDraftAppVersionResourceMappingsOutput(v **AddDraftAppVersionResourceMappingsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *AddDraftAppVersionResourceMappingsOutput + if *v == nil { + sv = &AddDraftAppVersionResourceMappingsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "resourceMappings": + if err := awsRestjson1_deserializeDocumentResourceMappingList(&sv.ResourceMappings, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateApp struct { +} + +func (*awsRestjson1_deserializeOpCreateApp) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateApp) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateApp(response, &metadata) + } + output := &CreateAppOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateAppOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateApp(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceQuotaExceededException", errorCode): + return awsRestjson1_deserializeErrorServiceQuotaExceededException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateAppOutput(v **CreateAppOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateAppOutput + if *v == nil { + sv = &CreateAppOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "app": + if err := awsRestjson1_deserializeDocumentApp(&sv.App, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateRecommendationTemplate struct { +} + +func (*awsRestjson1_deserializeOpCreateRecommendationTemplate) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateRecommendationTemplate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateRecommendationTemplate(response, &metadata) + } + output := &CreateRecommendationTemplateOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateRecommendationTemplateOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateRecommendationTemplate(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateRecommendationTemplateOutput(v **CreateRecommendationTemplateOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateRecommendationTemplateOutput + if *v == nil { + sv = &CreateRecommendationTemplateOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "recommendationTemplate": + if err := awsRestjson1_deserializeDocumentRecommendationTemplate(&sv.RecommendationTemplate, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpCreateResiliencyPolicy struct { +} + +func (*awsRestjson1_deserializeOpCreateResiliencyPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpCreateResiliencyPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorCreateResiliencyPolicy(response, &metadata) + } + output := &CreateResiliencyPolicyOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentCreateResiliencyPolicyOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorCreateResiliencyPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ServiceQuotaExceededException", errorCode): + return awsRestjson1_deserializeErrorServiceQuotaExceededException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentCreateResiliencyPolicyOutput(v **CreateResiliencyPolicyOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateResiliencyPolicyOutput + if *v == nil { + sv = &CreateResiliencyPolicyOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "policy": + if err := awsRestjson1_deserializeDocumentResiliencyPolicy(&sv.Policy, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteApp struct { +} + +func (*awsRestjson1_deserializeOpDeleteApp) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteApp) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteApp(response, &metadata) + } + output := &DeleteAppOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDeleteAppOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteApp(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDeleteAppOutput(v **DeleteAppOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteAppOutput + if *v == nil { + sv = &DeleteAppOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteAppAssessment struct { +} + +func (*awsRestjson1_deserializeOpDeleteAppAssessment) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteAppAssessment) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteAppAssessment(response, &metadata) + } + output := &DeleteAppAssessmentOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDeleteAppAssessmentOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteAppAssessment(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDeleteAppAssessmentOutput(v **DeleteAppAssessmentOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteAppAssessmentOutput + if *v == nil { + sv = &DeleteAppAssessmentOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "assessmentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AssessmentArn = ptr.String(jtv) + } + + case "assessmentStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssessmentStatus to be of type string, got %T instead", value) + } + sv.AssessmentStatus = types.AssessmentStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteRecommendationTemplate struct { +} + +func (*awsRestjson1_deserializeOpDeleteRecommendationTemplate) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteRecommendationTemplate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteRecommendationTemplate(response, &metadata) + } + output := &DeleteRecommendationTemplateOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDeleteRecommendationTemplateOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteRecommendationTemplate(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDeleteRecommendationTemplateOutput(v **DeleteRecommendationTemplateOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteRecommendationTemplateOutput + if *v == nil { + sv = &DeleteRecommendationTemplateOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "recommendationTemplateArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.RecommendationTemplateArn = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RecommendationTemplateStatus to be of type string, got %T instead", value) + } + sv.Status = types.RecommendationTemplateStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDeleteResiliencyPolicy struct { +} + +func (*awsRestjson1_deserializeOpDeleteResiliencyPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteResiliencyPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteResiliencyPolicy(response, &metadata) + } + output := &DeleteResiliencyPolicyOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDeleteResiliencyPolicyOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteResiliencyPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDeleteResiliencyPolicyOutput(v **DeleteResiliencyPolicyOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteResiliencyPolicyOutput + if *v == nil { + sv = &DeleteResiliencyPolicyOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "policyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.PolicyArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeApp struct { +} + +func (*awsRestjson1_deserializeOpDescribeApp) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeApp) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeApp(response, &metadata) + } + output := &DescribeAppOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeAppOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeApp(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeAppOutput(v **DescribeAppOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeAppOutput + if *v == nil { + sv = &DescribeAppOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "app": + if err := awsRestjson1_deserializeDocumentApp(&sv.App, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeAppAssessment struct { +} + +func (*awsRestjson1_deserializeOpDescribeAppAssessment) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeAppAssessment) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeAppAssessment(response, &metadata) + } + output := &DescribeAppAssessmentOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeAppAssessmentOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeAppAssessment(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeAppAssessmentOutput(v **DescribeAppAssessmentOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeAppAssessmentOutput + if *v == nil { + sv = &DescribeAppAssessmentOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "assessment": + if err := awsRestjson1_deserializeDocumentAppAssessment(&sv.Assessment, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeAppVersionResourcesResolutionStatus struct { +} + +func (*awsRestjson1_deserializeOpDescribeAppVersionResourcesResolutionStatus) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeAppVersionResourcesResolutionStatus) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeAppVersionResourcesResolutionStatus(response, &metadata) + } + output := &DescribeAppVersionResourcesResolutionStatusOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeAppVersionResourcesResolutionStatusOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeAppVersionResourcesResolutionStatus(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeAppVersionResourcesResolutionStatusOutput(v **DescribeAppVersionResourcesResolutionStatusOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeAppVersionResourcesResolutionStatusOutput + if *v == nil { + sv = &DescribeAppVersionResourcesResolutionStatusOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "errorMessage": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.ErrorMessage = ptr.String(jtv) + } + + case "resolutionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResolutionId = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceResolutionStatusType to be of type string, got %T instead", value) + } + sv.Status = types.ResourceResolutionStatusType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeAppVersionTemplate struct { +} + +func (*awsRestjson1_deserializeOpDescribeAppVersionTemplate) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeAppVersionTemplate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeAppVersionTemplate(response, &metadata) + } + output := &DescribeAppVersionTemplateOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeAppVersionTemplateOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeAppVersionTemplate(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeAppVersionTemplateOutput(v **DescribeAppVersionTemplateOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeAppVersionTemplateOutput + if *v == nil { + sv = &DescribeAppVersionTemplateOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appTemplateBody": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AppTemplateBody to be of type string, got %T instead", value) + } + sv.AppTemplateBody = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeDraftAppVersionResourcesImportStatus struct { +} + +func (*awsRestjson1_deserializeOpDescribeDraftAppVersionResourcesImportStatus) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeDraftAppVersionResourcesImportStatus) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeDraftAppVersionResourcesImportStatus(response, &metadata) + } + output := &DescribeDraftAppVersionResourcesImportStatusOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeDraftAppVersionResourcesImportStatusOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeDraftAppVersionResourcesImportStatus(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeDraftAppVersionResourcesImportStatusOutput(v **DescribeDraftAppVersionResourcesImportStatusOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeDraftAppVersionResourcesImportStatusOutput + if *v == nil { + sv = &DescribeDraftAppVersionResourcesImportStatusOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "errorMessage": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.ErrorMessage = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceImportStatusType to be of type string, got %T instead", value) + } + sv.Status = types.ResourceImportStatusType(jtv) + } + + case "statusChangeTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StatusChangeTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpDescribeResiliencyPolicy struct { +} + +func (*awsRestjson1_deserializeOpDescribeResiliencyPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeResiliencyPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDescribeResiliencyPolicy(response, &metadata) + } + output := &DescribeResiliencyPolicyOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentDescribeResiliencyPolicyOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeResiliencyPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeResiliencyPolicyOutput(v **DescribeResiliencyPolicyOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeResiliencyPolicyOutput + if *v == nil { + sv = &DescribeResiliencyPolicyOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "policy": + if err := awsRestjson1_deserializeDocumentResiliencyPolicy(&sv.Policy, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpImportResourcesToDraftAppVersion struct { +} + +func (*awsRestjson1_deserializeOpImportResourcesToDraftAppVersion) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpImportResourcesToDraftAppVersion) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorImportResourcesToDraftAppVersion(response, &metadata) + } + output := &ImportResourcesToDraftAppVersionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentImportResourcesToDraftAppVersionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorImportResourcesToDraftAppVersion(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentImportResourcesToDraftAppVersionOutput(v **ImportResourcesToDraftAppVersionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ImportResourcesToDraftAppVersionOutput + if *v == nil { + sv = &ImportResourcesToDraftAppVersionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "sourceArns": + if err := awsRestjson1_deserializeDocumentArnList(&sv.SourceArns, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceImportStatusType to be of type string, got %T instead", value) + } + sv.Status = types.ResourceImportStatusType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAlarmRecommendations struct { +} + +func (*awsRestjson1_deserializeOpListAlarmRecommendations) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAlarmRecommendations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAlarmRecommendations(response, &metadata) + } + output := &ListAlarmRecommendationsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAlarmRecommendationsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAlarmRecommendations(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAlarmRecommendationsOutput(v **ListAlarmRecommendationsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAlarmRecommendationsOutput + if *v == nil { + sv = &ListAlarmRecommendationsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alarmRecommendations": + if err := awsRestjson1_deserializeDocumentAlarmRecommendationList(&sv.AlarmRecommendations, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppAssessments struct { +} + +func (*awsRestjson1_deserializeOpListAppAssessments) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppAssessments) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppAssessments(response, &metadata) + } + output := &ListAppAssessmentsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppAssessmentsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppAssessments(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppAssessmentsOutput(v **ListAppAssessmentsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppAssessmentsOutput + if *v == nil { + sv = &ListAppAssessmentsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "assessmentSummaries": + if err := awsRestjson1_deserializeDocumentAppAssessmentSummaryList(&sv.AssessmentSummaries, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppComponentCompliances struct { +} + +func (*awsRestjson1_deserializeOpListAppComponentCompliances) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppComponentCompliances) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppComponentCompliances(response, &metadata) + } + output := &ListAppComponentCompliancesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppComponentCompliancesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppComponentCompliances(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppComponentCompliancesOutput(v **ListAppComponentCompliancesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppComponentCompliancesOutput + if *v == nil { + sv = &ListAppComponentCompliancesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "componentCompliances": + if err := awsRestjson1_deserializeDocumentComponentCompliancesList(&sv.ComponentCompliances, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppComponentRecommendations struct { +} + +func (*awsRestjson1_deserializeOpListAppComponentRecommendations) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppComponentRecommendations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppComponentRecommendations(response, &metadata) + } + output := &ListAppComponentRecommendationsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppComponentRecommendationsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppComponentRecommendations(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppComponentRecommendationsOutput(v **ListAppComponentRecommendationsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppComponentRecommendationsOutput + if *v == nil { + sv = &ListAppComponentRecommendationsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "componentRecommendations": + if err := awsRestjson1_deserializeDocumentComponentRecommendationList(&sv.ComponentRecommendations, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListApps struct { +} + +func (*awsRestjson1_deserializeOpListApps) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListApps) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListApps(response, &metadata) + } + output := &ListAppsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListApps(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppsOutput(v **ListAppsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppsOutput + if *v == nil { + sv = &ListAppsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appSummaries": + if err := awsRestjson1_deserializeDocumentAppSummaryList(&sv.AppSummaries, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppVersionResourceMappings struct { +} + +func (*awsRestjson1_deserializeOpListAppVersionResourceMappings) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppVersionResourceMappings) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppVersionResourceMappings(response, &metadata) + } + output := &ListAppVersionResourceMappingsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppVersionResourceMappingsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppVersionResourceMappings(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppVersionResourceMappingsOutput(v **ListAppVersionResourceMappingsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppVersionResourceMappingsOutput + if *v == nil { + sv = &ListAppVersionResourceMappingsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "resourceMappings": + if err := awsRestjson1_deserializeDocumentResourceMappingList(&sv.ResourceMappings, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppVersionResources struct { +} + +func (*awsRestjson1_deserializeOpListAppVersionResources) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppVersionResources) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppVersionResources(response, &metadata) + } + output := &ListAppVersionResourcesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppVersionResourcesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppVersionResources(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppVersionResourcesOutput(v **ListAppVersionResourcesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppVersionResourcesOutput + if *v == nil { + sv = &ListAppVersionResourcesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "physicalResources": + if err := awsRestjson1_deserializeDocumentPhysicalResourceList(&sv.PhysicalResources, value); err != nil { + return err + } + + case "resolutionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResolutionId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListAppVersions struct { +} + +func (*awsRestjson1_deserializeOpListAppVersions) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListAppVersions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListAppVersions(response, &metadata) + } + output := &ListAppVersionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListAppVersionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListAppVersions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListAppVersionsOutput(v **ListAppVersionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAppVersionsOutput + if *v == nil { + sv = &ListAppVersionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appVersions": + if err := awsRestjson1_deserializeDocumentAppVersionList(&sv.AppVersions, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListRecommendationTemplates struct { +} + +func (*awsRestjson1_deserializeOpListRecommendationTemplates) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListRecommendationTemplates) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListRecommendationTemplates(response, &metadata) + } + output := &ListRecommendationTemplatesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListRecommendationTemplatesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListRecommendationTemplates(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListRecommendationTemplatesOutput(v **ListRecommendationTemplatesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListRecommendationTemplatesOutput + if *v == nil { + sv = &ListRecommendationTemplatesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "recommendationTemplates": + if err := awsRestjson1_deserializeDocumentRecommendationTemplateList(&sv.RecommendationTemplates, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListResiliencyPolicies struct { +} + +func (*awsRestjson1_deserializeOpListResiliencyPolicies) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListResiliencyPolicies) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListResiliencyPolicies(response, &metadata) + } + output := &ListResiliencyPoliciesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListResiliencyPoliciesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListResiliencyPolicies(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListResiliencyPoliciesOutput(v **ListResiliencyPoliciesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListResiliencyPoliciesOutput + if *v == nil { + sv = &ListResiliencyPoliciesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "resiliencyPolicies": + if err := awsRestjson1_deserializeDocumentResiliencyPolicies(&sv.ResiliencyPolicies, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListSopRecommendations struct { +} + +func (*awsRestjson1_deserializeOpListSopRecommendations) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListSopRecommendations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListSopRecommendations(response, &metadata) + } + output := &ListSopRecommendationsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListSopRecommendationsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListSopRecommendations(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListSopRecommendationsOutput(v **ListSopRecommendationsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListSopRecommendationsOutput + if *v == nil { + sv = &ListSopRecommendationsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "sopRecommendations": + if err := awsRestjson1_deserializeDocumentSopRecommendationList(&sv.SopRecommendations, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListSuggestedResiliencyPolicies struct { +} + +func (*awsRestjson1_deserializeOpListSuggestedResiliencyPolicies) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListSuggestedResiliencyPolicies) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListSuggestedResiliencyPolicies(response, &metadata) + } + output := &ListSuggestedResiliencyPoliciesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListSuggestedResiliencyPoliciesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListSuggestedResiliencyPolicies(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListSuggestedResiliencyPoliciesOutput(v **ListSuggestedResiliencyPoliciesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListSuggestedResiliencyPoliciesOutput + if *v == nil { + sv = &ListSuggestedResiliencyPoliciesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "resiliencyPolicies": + if err := awsRestjson1_deserializeDocumentResiliencyPolicies(&sv.ResiliencyPolicies, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListTagsForResource struct { +} + +func (*awsRestjson1_deserializeOpListTagsForResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListTagsForResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListTagsForResource(response, &metadata) + } + output := &ListTagsForResourceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListTagsForResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsForResourceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTagsForResourceOutput + if *v == nil { + sv = &ListTagsForResourceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListTestRecommendations struct { +} + +func (*awsRestjson1_deserializeOpListTestRecommendations) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListTestRecommendations) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListTestRecommendations(response, &metadata) + } + output := &ListTestRecommendationsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListTestRecommendationsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListTestRecommendations(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListTestRecommendationsOutput(v **ListTestRecommendationsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTestRecommendationsOutput + if *v == nil { + sv = &ListTestRecommendationsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "testRecommendations": + if err := awsRestjson1_deserializeDocumentTestRecommendationList(&sv.TestRecommendations, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpListUnsupportedAppVersionResources struct { +} + +func (*awsRestjson1_deserializeOpListUnsupportedAppVersionResources) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListUnsupportedAppVersionResources) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListUnsupportedAppVersionResources(response, &metadata) + } + output := &ListUnsupportedAppVersionResourcesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListUnsupportedAppVersionResourcesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListUnsupportedAppVersionResources(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListUnsupportedAppVersionResourcesOutput(v **ListUnsupportedAppVersionResourcesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListUnsupportedAppVersionResourcesOutput + if *v == nil { + sv = &ListUnsupportedAppVersionResourcesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NextToken to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "resolutionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResolutionId = ptr.String(jtv) + } + + case "unsupportedResources": + if err := awsRestjson1_deserializeDocumentUnsupportedResourceList(&sv.UnsupportedResources, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpPublishAppVersion struct { +} + +func (*awsRestjson1_deserializeOpPublishAppVersion) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpPublishAppVersion) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorPublishAppVersion(response, &metadata) + } + output := &PublishAppVersionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentPublishAppVersionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorPublishAppVersion(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentPublishAppVersionOutput(v **PublishAppVersionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PublishAppVersionOutput + if *v == nil { + sv = &PublishAppVersionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpPutDraftAppVersionTemplate struct { +} + +func (*awsRestjson1_deserializeOpPutDraftAppVersionTemplate) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpPutDraftAppVersionTemplate) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorPutDraftAppVersionTemplate(response, &metadata) + } + output := &PutDraftAppVersionTemplateOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentPutDraftAppVersionTemplateOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorPutDraftAppVersionTemplate(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentPutDraftAppVersionTemplateOutput(v **PutDraftAppVersionTemplateOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PutDraftAppVersionTemplateOutput + if *v == nil { + sv = &PutDraftAppVersionTemplateOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpRemoveDraftAppVersionResourceMappings struct { +} + +func (*awsRestjson1_deserializeOpRemoveDraftAppVersionResourceMappings) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpRemoveDraftAppVersionResourceMappings) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorRemoveDraftAppVersionResourceMappings(response, &metadata) + } + output := &RemoveDraftAppVersionResourceMappingsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentRemoveDraftAppVersionResourceMappingsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorRemoveDraftAppVersionResourceMappings(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentRemoveDraftAppVersionResourceMappingsOutput(v **RemoveDraftAppVersionResourceMappingsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *RemoveDraftAppVersionResourceMappingsOutput + if *v == nil { + sv = &RemoveDraftAppVersionResourceMappingsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpResolveAppVersionResources struct { +} + +func (*awsRestjson1_deserializeOpResolveAppVersionResources) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpResolveAppVersionResources) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorResolveAppVersionResources(response, &metadata) + } + output := &ResolveAppVersionResourcesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentResolveAppVersionResourcesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorResolveAppVersionResources(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentResolveAppVersionResourcesOutput(v **ResolveAppVersionResourcesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ResolveAppVersionResourcesOutput + if *v == nil { + sv = &ResolveAppVersionResourcesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "resolutionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResolutionId = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceResolutionStatusType to be of type string, got %T instead", value) + } + sv.Status = types.ResourceResolutionStatusType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpStartAppAssessment struct { +} + +func (*awsRestjson1_deserializeOpStartAppAssessment) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpStartAppAssessment) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorStartAppAssessment(response, &metadata) + } + output := &StartAppAssessmentOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentStartAppAssessmentOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorStartAppAssessment(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServiceQuotaExceededException", errorCode): + return awsRestjson1_deserializeErrorServiceQuotaExceededException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentStartAppAssessmentOutput(v **StartAppAssessmentOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *StartAppAssessmentOutput + if *v == nil { + sv = &StartAppAssessmentOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "assessment": + if err := awsRestjson1_deserializeDocumentAppAssessment(&sv.Assessment, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpTagResource struct { +} + +func (*awsRestjson1_deserializeOpTagResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpTagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorTagResource(response, &metadata) + } + output := &TagResourceOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorTagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpUntagResource struct { +} + +func (*awsRestjson1_deserializeOpUntagResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUntagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUntagResource(response, &metadata) + } + output := &UntagResourceOutput{} + out.Result = output + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUntagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsRestjson1_deserializeOpUpdateApp struct { +} + +func (*awsRestjson1_deserializeOpUpdateApp) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateApp) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUpdateApp(response, &metadata) + } + output := &UpdateAppOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentUpdateAppOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateApp(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentUpdateAppOutput(v **UpdateAppOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateAppOutput + if *v == nil { + sv = &UpdateAppOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "app": + if err := awsRestjson1_deserializeDocumentApp(&sv.App, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpUpdateResiliencyPolicy struct { +} + +func (*awsRestjson1_deserializeOpUpdateResiliencyPolicy) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateResiliencyPolicy) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorUpdateResiliencyPolicy(response, &metadata) + } + output := &UpdateResiliencyPolicyOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentUpdateResiliencyPolicyOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateResiliencyPolicy(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + code := response.Header.Get("X-Amzn-ErrorType") + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + code, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(code) != 0 { + errorCode = restjson.SanitizeErrorCode(code) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InternalServerException", errorCode): + return awsRestjson1_deserializeErrorInternalServerException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + case strings.EqualFold("ValidationException", errorCode): + return awsRestjson1_deserializeErrorValidationException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentUpdateResiliencyPolicyOutput(v **UpdateResiliencyPolicyOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateResiliencyPolicyOutput + if *v == nil { + sv = &UpdateResiliencyPolicyOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "policy": + if err := awsRestjson1_deserializeDocumentResiliencyPolicy(&sv.Policy, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeErrorAccessDeniedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.AccessDeniedException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentAccessDeniedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorConflictException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ConflictException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentConflictException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorInternalServerException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.InternalServerException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentInternalServerException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorResourceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ResourceNotFoundException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentResourceNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorServiceQuotaExceededException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ServiceQuotaExceededException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentServiceQuotaExceededException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorThrottlingException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ThrottlingException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentThrottlingException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeErrorValidationException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + output := &types.ValidationException{} + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + err := awsRestjson1_deserializeDocumentValidationException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + + return output +} + +func awsRestjson1_deserializeDocumentAccessDeniedException(v **types.AccessDeniedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AccessDeniedException + if *v == nil { + sv = &types.AccessDeniedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAlarmRecommendation(v **types.AlarmRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AlarmRecommendation + if *v == nil { + sv = &types.AlarmRecommendation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "items": + if err := awsRestjson1_deserializeDocumentRecommendationItemList(&sv.Items, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "prerequisite": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Prerequisite = ptr.String(jtv) + } + + case "recommendationId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Uuid to be of type string, got %T instead", value) + } + sv.RecommendationId = ptr.String(jtv) + } + + case "referenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SpecReferenceId to be of type string, got %T instead", value) + } + sv.ReferenceId = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AlarmType to be of type string, got %T instead", value) + } + sv.Type = types.AlarmType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAlarmRecommendationList(v *[]types.AlarmRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AlarmRecommendation + if *v == nil { + cv = []types.AlarmRecommendation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AlarmRecommendation + destAddr := &col + if err := awsRestjson1_deserializeDocumentAlarmRecommendation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentApp(v **types.App, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.App + if *v == nil { + sv = &types.App{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "complianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AppComplianceStatusType to be of type string, got %T instead", value) + } + sv.ComplianceStatus = types.AppComplianceStatusType(jtv) + } + + case "creationTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreationTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "lastAppComplianceEvaluationTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastAppComplianceEvaluationTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "lastResiliencyScoreEvaluationTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastResiliencyScoreEvaluationTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "policyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.PolicyArn = ptr.String(jtv) + } + + case "resiliencyScore": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ResiliencyScore = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.ResiliencyScore = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AppStatusType to be of type string, got %T instead", value) + } + sv.Status = types.AppStatusType(jtv) + } + + case "tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppAssessment(v **types.AppAssessment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppAssessment + if *v == nil { + sv = &types.AppAssessment{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "assessmentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AssessmentArn = ptr.String(jtv) + } + + case "assessmentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.AssessmentName = ptr.String(jtv) + } + + case "assessmentStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssessmentStatus to be of type string, got %T instead", value) + } + sv.AssessmentStatus = types.AssessmentStatus(jtv) + } + + case "compliance": + if err := awsRestjson1_deserializeDocumentAssessmentCompliance(&sv.Compliance, value); err != nil { + return err + } + + case "complianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ComplianceStatus to be of type string, got %T instead", value) + } + sv.ComplianceStatus = types.ComplianceStatus(jtv) + } + + case "cost": + if err := awsRestjson1_deserializeDocumentCost(&sv.Cost, value); err != nil { + return err + } + + case "endTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.EndTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "invoker": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssessmentInvoker to be of type string, got %T instead", value) + } + sv.Invoker = types.AssessmentInvoker(jtv) + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "policy": + if err := awsRestjson1_deserializeDocumentResiliencyPolicy(&sv.Policy, value); err != nil { + return err + } + + case "resiliencyScore": + if err := awsRestjson1_deserializeDocumentResiliencyScore(&sv.ResiliencyScore, value); err != nil { + return err + } + + case "startTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppAssessmentSummary(v **types.AppAssessmentSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppAssessmentSummary + if *v == nil { + sv = &types.AppAssessmentSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + case "assessmentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AssessmentArn = ptr.String(jtv) + } + + case "assessmentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.AssessmentName = ptr.String(jtv) + } + + case "assessmentStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssessmentStatus to be of type string, got %T instead", value) + } + sv.AssessmentStatus = types.AssessmentStatus(jtv) + } + + case "complianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ComplianceStatus to be of type string, got %T instead", value) + } + sv.ComplianceStatus = types.ComplianceStatus(jtv) + } + + case "cost": + if err := awsRestjson1_deserializeDocumentCost(&sv.Cost, value); err != nil { + return err + } + + case "endTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.EndTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "invoker": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssessmentInvoker to be of type string, got %T instead", value) + } + sv.Invoker = types.AssessmentInvoker(jtv) + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "resiliencyScore": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ResiliencyScore = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.ResiliencyScore = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + case "startTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppAssessmentSummaryList(v *[]types.AppAssessmentSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AppAssessmentSummary + if *v == nil { + cv = []types.AppAssessmentSummary{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AppAssessmentSummary + destAddr := &col + if err := awsRestjson1_deserializeDocumentAppAssessmentSummary(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentAppComponent(v **types.AppComponent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppComponent + if *v == nil { + sv = &types.AppComponent{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.Type = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppComponentCompliance(v **types.AppComponentCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppComponentCompliance + if *v == nil { + sv = &types.AppComponentCompliance{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "compliance": + if err := awsRestjson1_deserializeDocumentAssessmentCompliance(&sv.Compliance, value); err != nil { + return err + } + + case "cost": + if err := awsRestjson1_deserializeDocumentCost(&sv.Cost, value); err != nil { + return err + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "resiliencyScore": + if err := awsRestjson1_deserializeDocumentResiliencyScore(&sv.ResiliencyScore, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ComplianceStatus to be of type string, got %T instead", value) + } + sv.Status = types.ComplianceStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppComponentList(v *[]types.AppComponent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AppComponent + if *v == nil { + cv = []types.AppComponent{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AppComponent + destAddr := &col + if err := awsRestjson1_deserializeDocumentAppComponent(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentAppSummary(v **types.AppSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppSummary + if *v == nil { + sv = &types.AppSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "complianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AppComplianceStatusType to be of type string, got %T instead", value) + } + sv.ComplianceStatus = types.AppComplianceStatusType(jtv) + } + + case "creationTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreationTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "resiliencyScore": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ResiliencyScore = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.ResiliencyScore = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAppSummaryList(v *[]types.AppSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AppSummary + if *v == nil { + cv = []types.AppSummary{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AppSummary + destAddr := &col + if err := awsRestjson1_deserializeDocumentAppSummary(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentAppVersionList(v *[]types.AppVersionSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AppVersionSummary + if *v == nil { + cv = []types.AppVersionSummary{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AppVersionSummary + destAddr := &col + if err := awsRestjson1_deserializeDocumentAppVersionSummary(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentAppVersionSummary(v **types.AppVersionSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AppVersionSummary + if *v == nil { + sv = &types.AppVersionSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityVersion to be of type string, got %T instead", value) + } + sv.AppVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentArnList(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentAssessmentCompliance(v *map[string]types.DisruptionCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]types.DisruptionCompliance + if *v == nil { + mv = map[string]types.DisruptionCompliance{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal types.DisruptionCompliance + mapVar := parsedVal + destAddr := &mapVar + if err := awsRestjson1_deserializeDocumentDisruptionCompliance(&destAddr, value); err != nil { + return err + } + parsedVal = *destAddr + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsRestjson1_deserializeDocumentComponentCompliancesList(v *[]types.AppComponentCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.AppComponentCompliance + if *v == nil { + cv = []types.AppComponentCompliance{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.AppComponentCompliance + destAddr := &col + if err := awsRestjson1_deserializeDocumentAppComponentCompliance(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentComponentRecommendation(v **types.ComponentRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ComponentRecommendation + if *v == nil { + sv = &types.ComponentRecommendation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "configRecommendations": + if err := awsRestjson1_deserializeDocumentConfigRecommendationList(&sv.ConfigRecommendations, value); err != nil { + return err + } + + case "recommendationStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RecommendationComplianceStatus to be of type string, got %T instead", value) + } + sv.RecommendationStatus = types.RecommendationComplianceStatus(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentComponentRecommendationList(v *[]types.ComponentRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ComponentRecommendation + if *v == nil { + cv = []types.ComponentRecommendation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ComponentRecommendation + destAddr := &col + if err := awsRestjson1_deserializeDocumentComponentRecommendation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentConfigRecommendation(v **types.ConfigRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ConfigRecommendation + if *v == nil { + sv = &types.ConfigRecommendation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "compliance": + if err := awsRestjson1_deserializeDocumentAssessmentCompliance(&sv.Compliance, value); err != nil { + return err + } + + case "cost": + if err := awsRestjson1_deserializeDocumentCost(&sv.Cost, value); err != nil { + return err + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "haArchitecture": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected HaArchitecture to be of type string, got %T instead", value) + } + sv.HaArchitecture = types.HaArchitecture(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "optimizationType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ConfigRecommendationOptimizationType to be of type string, got %T instead", value) + } + sv.OptimizationType = types.ConfigRecommendationOptimizationType(jtv) + } + + case "recommendationCompliance": + if err := awsRestjson1_deserializeDocumentRecommendationCompliance(&sv.RecommendationCompliance, value); err != nil { + return err + } + + case "referenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SpecReferenceId to be of type string, got %T instead", value) + } + sv.ReferenceId = ptr.String(jtv) + } + + case "suggestedChanges": + if err := awsRestjson1_deserializeDocumentSuggestedChangesList(&sv.SuggestedChanges, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentConfigRecommendationList(v *[]types.ConfigRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ConfigRecommendation + if *v == nil { + cv = []types.ConfigRecommendation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ConfigRecommendation + destAddr := &col + if err := awsRestjson1_deserializeDocumentConfigRecommendation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentConflictException(v **types.ConflictException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ConflictException + if *v == nil { + sv = &types.ConflictException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "resourceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceId to be of type string, got %T instead", value) + } + sv.ResourceId = ptr.String(jtv) + } + + case "resourceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceType to be of type string, got %T instead", value) + } + sv.ResourceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentCost(v **types.Cost, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Cost + if *v == nil { + sv = &types.Cost{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "amount": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.Amount = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.Amount = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + case "currency": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CurrencyCode to be of type string, got %T instead", value) + } + sv.Currency = ptr.String(jtv) + } + + case "frequency": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CostFrequency to be of type string, got %T instead", value) + } + sv.Frequency = types.CostFrequency(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentDisruptionCompliance(v **types.DisruptionCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DisruptionCompliance + if *v == nil { + sv = &types.DisruptionCompliance{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "achievableRpoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.AchievableRpoInSecs = int32(i64) + } + + case "achievableRtoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.AchievableRtoInSecs = int32(i64) + } + + case "complianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ComplianceStatus to be of type string, got %T instead", value) + } + sv.ComplianceStatus = types.ComplianceStatus(jtv) + } + + case "currentRpoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.CurrentRpoInSecs = int32(i64) + } + + case "currentRtoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.CurrentRtoInSecs = int32(i64) + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "rpoDescription": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.RpoDescription = ptr.String(jtv) + } + + case "rpoReferenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.RpoReferenceId = ptr.String(jtv) + } + + case "rtoDescription": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.RtoDescription = ptr.String(jtv) + } + + case "rtoReferenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.RtoReferenceId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentDisruptionPolicy(v *map[string]types.FailurePolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]types.FailurePolicy + if *v == nil { + mv = map[string]types.FailurePolicy{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal types.FailurePolicy + mapVar := parsedVal + destAddr := &mapVar + if err := awsRestjson1_deserializeDocumentFailurePolicy(&destAddr, value); err != nil { + return err + } + parsedVal = *destAddr + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsRestjson1_deserializeDocumentDisruptionResiliencyScore(v *map[string]float64, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]float64 + if *v == nil { + mv = map[string]float64{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal float64 + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + parsedVal = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + parsedVal = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsRestjson1_deserializeDocumentFailurePolicy(v **types.FailurePolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FailurePolicy + if *v == nil { + sv = &types.FailurePolicy{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "rpoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RpoInSecs = int32(i64) + } + + case "rtoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RtoInSecs = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentInternalServerException(v **types.InternalServerException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InternalServerException + if *v == nil { + sv = &types.InternalServerException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentLogicalResourceId(v **types.LogicalResourceId, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LogicalResourceId + if *v == nil { + sv = &types.LogicalResourceId{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "identifier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.Identifier = ptr.String(jtv) + } + + case "logicalStackName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.LogicalStackName = ptr.String(jtv) + } + + case "resourceGroupName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.ResourceGroupName = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentPhysicalResource(v **types.PhysicalResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PhysicalResource + if *v == nil { + sv = &types.PhysicalResource{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponents": + if err := awsRestjson1_deserializeDocumentAppComponentList(&sv.AppComponents, value); err != nil { + return err + } + + case "logicalResourceId": + if err := awsRestjson1_deserializeDocumentLogicalResourceId(&sv.LogicalResourceId, value); err != nil { + return err + } + + case "physicalResourceId": + if err := awsRestjson1_deserializeDocumentPhysicalResourceId(&sv.PhysicalResourceId, value); err != nil { + return err + } + + case "resourceName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.ResourceName = ptr.String(jtv) + } + + case "resourceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResourceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentPhysicalResourceId(v **types.PhysicalResourceId, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PhysicalResourceId + if *v == nil { + sv = &types.PhysicalResourceId{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "awsAccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomerId to be of type string, got %T instead", value) + } + sv.AwsAccountId = ptr.String(jtv) + } + + case "awsRegion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AwsRegion to be of type string, got %T instead", value) + } + sv.AwsRegion = ptr.String(jtv) + } + + case "identifier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.Identifier = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PhysicalIdentifierType to be of type string, got %T instead", value) + } + sv.Type = types.PhysicalIdentifierType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentPhysicalResourceList(v *[]types.PhysicalResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.PhysicalResource + if *v == nil { + cv = []types.PhysicalResource{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.PhysicalResource + destAddr := &col + if err := awsRestjson1_deserializeDocumentPhysicalResource(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationCompliance(v *map[string]types.RecommendationDisruptionCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]types.RecommendationDisruptionCompliance + if *v == nil { + mv = map[string]types.RecommendationDisruptionCompliance{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal types.RecommendationDisruptionCompliance + mapVar := parsedVal + destAddr := &mapVar + if err := awsRestjson1_deserializeDocumentRecommendationDisruptionCompliance(&destAddr, value); err != nil { + return err + } + parsedVal = *destAddr + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationDisruptionCompliance(v **types.RecommendationDisruptionCompliance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.RecommendationDisruptionCompliance + if *v == nil { + sv = &types.RecommendationDisruptionCompliance{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "expectedComplianceStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ComplianceStatus to be of type string, got %T instead", value) + } + sv.ExpectedComplianceStatus = types.ComplianceStatus(jtv) + } + + case "expectedRpoDescription": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.ExpectedRpoDescription = ptr.String(jtv) + } + + case "expectedRpoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ExpectedRpoInSecs = int32(i64) + } + + case "expectedRtoDescription": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.ExpectedRtoDescription = ptr.String(jtv) + } + + case "expectedRtoInSecs": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Seconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ExpectedRtoInSecs = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationIdList(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Uuid to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationItem(v **types.RecommendationItem, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.RecommendationItem + if *v == nil { + sv = &types.RecommendationItem{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alreadyImplemented": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BooleanOptional to be of type *bool, got %T instead", value) + } + sv.AlreadyImplemented = ptr.Bool(jtv) + } + + case "resourceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.ResourceId = ptr.String(jtv) + } + + case "targetAccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomerId to be of type string, got %T instead", value) + } + sv.TargetAccountId = ptr.String(jtv) + } + + case "targetRegion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AwsRegion to be of type string, got %T instead", value) + } + sv.TargetRegion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationItemList(v *[]types.RecommendationItem, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.RecommendationItem + if *v == nil { + cv = []types.RecommendationItem{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.RecommendationItem + destAddr := &col + if err := awsRestjson1_deserializeDocumentRecommendationItem(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationTemplate(v **types.RecommendationTemplate, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.RecommendationTemplate + if *v == nil { + sv = &types.RecommendationTemplate{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AppArn = ptr.String(jtv) + } + + case "assessmentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.AssessmentArn = ptr.String(jtv) + } + + case "endTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.EndTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "format": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TemplateFormat to be of type string, got %T instead", value) + } + sv.Format = types.TemplateFormat(jtv) + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "needsReplacements": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BooleanOptional to be of type *bool, got %T instead", value) + } + sv.NeedsReplacements = ptr.Bool(jtv) + } + + case "recommendationIds": + if err := awsRestjson1_deserializeDocumentRecommendationIdList(&sv.RecommendationIds, value); err != nil { + return err + } + + case "recommendationTemplateArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.RecommendationTemplateArn = ptr.String(jtv) + } + + case "recommendationTypes": + if err := awsRestjson1_deserializeDocumentRenderRecommendationTypeList(&sv.RecommendationTypes, value); err != nil { + return err + } + + case "startTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RecommendationTemplateStatus to be of type string, got %T instead", value) + } + sv.Status = types.RecommendationTemplateStatus(jtv) + } + + case "tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + case "templatesLocation": + if err := awsRestjson1_deserializeDocumentS3Location(&sv.TemplatesLocation, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentRecommendationTemplateList(v *[]types.RecommendationTemplate, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.RecommendationTemplate + if *v == nil { + cv = []types.RecommendationTemplate{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.RecommendationTemplate + destAddr := &col + if err := awsRestjson1_deserializeDocumentRecommendationTemplate(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentRenderRecommendationTypeList(v *[]types.RenderRecommendationType, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.RenderRecommendationType + if *v == nil { + cv = []types.RenderRecommendationType{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.RenderRecommendationType + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RenderRecommendationType to be of type string, got %T instead", value) + } + col = types.RenderRecommendationType(jtv) + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentResiliencyPolicies(v *[]types.ResiliencyPolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ResiliencyPolicy + if *v == nil { + cv = []types.ResiliencyPolicy{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ResiliencyPolicy + destAddr := &col + if err := awsRestjson1_deserializeDocumentResiliencyPolicy(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentResiliencyPolicy(v **types.ResiliencyPolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResiliencyPolicy + if *v == nil { + sv = &types.ResiliencyPolicy{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "creationTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreationTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected TimeStamp to be a JSON Number, got %T instead", value) + + } + } + + case "dataLocationConstraint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DataLocationConstraint to be of type string, got %T instead", value) + } + sv.DataLocationConstraint = types.DataLocationConstraint(jtv) + } + + case "estimatedCostTier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EstimatedCostTier to be of type string, got %T instead", value) + } + sv.EstimatedCostTier = types.EstimatedCostTier(jtv) + } + + case "policy": + if err := awsRestjson1_deserializeDocumentDisruptionPolicy(&sv.Policy, value); err != nil { + return err + } + + case "policyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Arn to be of type string, got %T instead", value) + } + sv.PolicyArn = ptr.String(jtv) + } + + case "policyDescription": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.PolicyDescription = ptr.String(jtv) + } + + case "policyName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.PolicyName = ptr.String(jtv) + } + + case "tags": + if err := awsRestjson1_deserializeDocumentTagMap(&sv.Tags, value); err != nil { + return err + } + + case "tier": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResiliencyPolicyTier to be of type string, got %T instead", value) + } + sv.Tier = types.ResiliencyPolicyTier(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentResiliencyScore(v **types.ResiliencyScore, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResiliencyScore + if *v == nil { + sv = &types.ResiliencyScore{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "disruptionScore": + if err := awsRestjson1_deserializeDocumentDisruptionResiliencyScore(&sv.DisruptionScore, value); err != nil { + return err + } + + case "score": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.Score = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.Score = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentResourceMapping(v **types.ResourceMapping, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResourceMapping + if *v == nil { + sv = &types.ResourceMapping{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appRegistryAppName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.AppRegistryAppName = ptr.String(jtv) + } + + case "logicalStackName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.LogicalStackName = ptr.String(jtv) + } + + case "mappingType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceMappingType to be of type string, got %T instead", value) + } + sv.MappingType = types.ResourceMappingType(jtv) + } + + case "physicalResourceId": + if err := awsRestjson1_deserializeDocumentPhysicalResourceId(&sv.PhysicalResourceId, value); err != nil { + return err + } + + case "resourceGroupName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.ResourceGroupName = ptr.String(jtv) + } + + case "resourceName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityName to be of type string, got %T instead", value) + } + sv.ResourceName = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentResourceMappingList(v *[]types.ResourceMapping, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ResourceMapping + if *v == nil { + cv = []types.ResourceMapping{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ResourceMapping + destAddr := &col + if err := awsRestjson1_deserializeDocumentResourceMapping(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentResourceNotFoundException(v **types.ResourceNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResourceNotFoundException + if *v == nil { + sv = &types.ResourceNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "resourceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceId to be of type string, got %T instead", value) + } + sv.ResourceId = ptr.String(jtv) + } + + case "resourceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceType to be of type string, got %T instead", value) + } + sv.ResourceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentS3Location(v **types.S3Location, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.S3Location + if *v == nil { + sv = &types.S3Location{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "bucket": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Bucket = ptr.String(jtv) + } + + case "prefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Prefix = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentServiceQuotaExceededException(v **types.ServiceQuotaExceededException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceQuotaExceededException + if *v == nil { + sv = &types.ServiceQuotaExceededException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentSopRecommendation(v **types.SopRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SopRecommendation + if *v == nil { + sv = &types.SopRecommendation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "items": + if err := awsRestjson1_deserializeDocumentRecommendationItemList(&sv.Items, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DocumentName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "prerequisite": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Prerequisite = ptr.String(jtv) + } + + case "recommendationId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Uuid to be of type string, got %T instead", value) + } + sv.RecommendationId = ptr.String(jtv) + } + + case "referenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SpecReferenceId to be of type string, got %T instead", value) + } + sv.ReferenceId = ptr.String(jtv) + } + + case "serviceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SopServiceType to be of type string, got %T instead", value) + } + sv.ServiceType = types.SopServiceType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentSopRecommendationList(v *[]types.SopRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.SopRecommendation + if *v == nil { + cv = []types.SopRecommendation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.SopRecommendation + destAddr := &col + if err := awsRestjson1_deserializeDocumentSopRecommendation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentSuggestedChangesList(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentTagMap(v *map[string]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]string + if *v == nil { + mv = map[string]string{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TagValue to be of type string, got %T instead", value) + } + parsedVal = jtv + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsRestjson1_deserializeDocumentTestRecommendation(v **types.TestRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TestRecommendation + if *v == nil { + sv = &types.TestRecommendation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appComponentName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityId to be of type string, got %T instead", value) + } + sv.AppComponentName = ptr.String(jtv) + } + + case "description": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Description = ptr.String(jtv) + } + + case "intent": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EntityDescription to be of type string, got %T instead", value) + } + sv.Intent = ptr.String(jtv) + } + + case "items": + if err := awsRestjson1_deserializeDocumentRecommendationItemList(&sv.Items, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DocumentName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "prerequisite": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Prerequisite = ptr.String(jtv) + } + + case "recommendationId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Uuid to be of type string, got %T instead", value) + } + sv.RecommendationId = ptr.String(jtv) + } + + case "referenceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SpecReferenceId to be of type string, got %T instead", value) + } + sv.ReferenceId = ptr.String(jtv) + } + + case "risk": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TestRisk to be of type string, got %T instead", value) + } + sv.Risk = types.TestRisk(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TestType to be of type string, got %T instead", value) + } + sv.Type = types.TestType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentTestRecommendationList(v *[]types.TestRecommendation, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.TestRecommendation + if *v == nil { + cv = []types.TestRecommendation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.TestRecommendation + destAddr := &col + if err := awsRestjson1_deserializeDocumentTestRecommendation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentThrottlingException(v **types.ThrottlingException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ThrottlingException + if *v == nil { + sv = &types.ThrottlingException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "retryAfterSeconds": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected RetryAfterSeconds to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RetryAfterSeconds = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentUnsupportedResource(v **types.UnsupportedResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UnsupportedResource + if *v == nil { + sv = &types.UnsupportedResource{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "logicalResourceId": + if err := awsRestjson1_deserializeDocumentLogicalResourceId(&sv.LogicalResourceId, value); err != nil { + return err + } + + case "physicalResourceId": + if err := awsRestjson1_deserializeDocumentPhysicalResourceId(&sv.PhysicalResourceId, value); err != nil { + return err + } + + case "resourceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String255 to be of type string, got %T instead", value) + } + sv.ResourceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentUnsupportedResourceList(v *[]types.UnsupportedResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.UnsupportedResource + if *v == nil { + cv = []types.UnsupportedResource{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.UnsupportedResource + destAddr := &col + if err := awsRestjson1_deserializeDocumentUnsupportedResource(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentValidationException(v **types.ValidationException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ValidationException + if *v == nil { + sv = &types.ValidationException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String500 to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} diff --git a/service/resiliencehub/doc.go b/service/resiliencehub/doc.go new file mode 100644 index 00000000000..6019d925afe --- /dev/null +++ b/service/resiliencehub/doc.go @@ -0,0 +1,13 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +// Package resiliencehub provides the API client, operations, and parameter types +// for AWS Resilience Hub. +// +// AWS Resilience Hub helps you proactively prepare and protect your Amazon Web +// Services applications from disruptions. Resilience Hub offers continuous +// resiliency assessment and validation that integrates into your software +// development lifecycle. This enables you to uncover resiliency weaknesses, ensure +// recovery time objective (RTO) and recovery point objective (RPO) targets for +// your applications are met, and resolve issues before they are released into +// production. +package resiliencehub diff --git a/service/resiliencehub/endpoints.go b/service/resiliencehub/endpoints.go new file mode 100644 index 00000000000..38b6fbea013 --- /dev/null +++ b/service/resiliencehub/endpoints.go @@ -0,0 +1,200 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "errors" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalendpoints "github.com/aws/aws-sdk-go-v2/service/resiliencehub/internal/endpoints" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/url" + "strings" +) + +// EndpointResolverOptions is the service endpoint resolver options +type EndpointResolverOptions = internalendpoints.Options + +// EndpointResolver interface for resolving service endpoints. +type EndpointResolver interface { + ResolveEndpoint(region string, options EndpointResolverOptions) (aws.Endpoint, error) +} + +var _ EndpointResolver = &internalendpoints.Resolver{} + +// NewDefaultEndpointResolver constructs a new service endpoint resolver +func NewDefaultEndpointResolver() *internalendpoints.Resolver { + return internalendpoints.New() +} + +// EndpointResolverFunc is a helper utility that wraps a function so it satisfies +// the EndpointResolver interface. This is useful when you want to add additional +// endpoint resolving logic, or stub out specific endpoints with custom values. +type EndpointResolverFunc func(region string, options EndpointResolverOptions) (aws.Endpoint, error) + +func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + return fn(region, options) +} + +func resolveDefaultEndpointConfiguration(o *Options) { + if o.EndpointResolver != nil { + return + } + o.EndpointResolver = NewDefaultEndpointResolver() +} + +// EndpointResolverFromURL returns an EndpointResolver configured using the +// provided endpoint url. By default, the resolved endpoint resolver uses the +// client region as signing region, and the endpoint source is set to +// EndpointSourceCustom.You can provide functional options to configure endpoint +// values for the resolved endpoint. +func EndpointResolverFromURL(url string, optFns ...func(*aws.Endpoint)) EndpointResolver { + e := aws.Endpoint{URL: url, Source: aws.EndpointSourceCustom} + for _, fn := range optFns { + fn(&e) + } + + return EndpointResolverFunc( + func(region string, options EndpointResolverOptions) (aws.Endpoint, error) { + if len(e.SigningRegion) == 0 { + e.SigningRegion = region + } + return e, nil + }, + ) +} + +type ResolveEndpoint struct { + Resolver EndpointResolver + Options EndpointResolverOptions +} + +func (*ResolveEndpoint) ID() string { + return "ResolveEndpoint" +} + +func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.Resolver == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + eo := m.Options + eo.Logger = middleware.GetLogger(ctx) + + var endpoint aws.Endpoint + endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return out, metadata, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(awsmiddleware.GetSigningName(ctx)) == 0 { + signingName := endpoint.SigningName + if len(signingName) == 0 { + signingName = "resiliencehub" + } + ctx = awsmiddleware.SetSigningName(ctx, signingName) + } + ctx = awsmiddleware.SetEndpointSource(ctx, endpoint.Source) + ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable) + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID) + return next.HandleSerialize(ctx, in) +} +func addResolveEndpointMiddleware(stack *middleware.Stack, o Options) error { + return stack.Serialize.Insert(&ResolveEndpoint{ + Resolver: o.EndpointResolver, + Options: o.EndpointOptions, + }, "OperationSerializer", middleware.Before) +} + +func removeResolveEndpointMiddleware(stack *middleware.Stack) error { + _, err := stack.Serialize.Remove((&ResolveEndpoint{}).ID()) + return err +} + +type wrappedEndpointResolver struct { + awsResolver aws.EndpointResolverWithOptions + resolver EndpointResolver +} + +func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + if w.awsResolver == nil { + goto fallback + } + endpoint, err = w.awsResolver.ResolveEndpoint(ServiceID, region, options) + if err == nil { + return endpoint, nil + } + + if nf := (&aws.EndpointNotFoundError{}); !errors.As(err, &nf) { + return endpoint, err + } + +fallback: + if w.resolver == nil { + return endpoint, fmt.Errorf("default endpoint resolver provided was nil") + } + return w.resolver.ResolveEndpoint(region, options) +} + +type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) + +func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, options ...interface{}) (aws.Endpoint, error) { + return a(service, region) +} + +var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) + +// withEndpointResolver returns an EndpointResolver that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the resolver will use the the provided +// fallbackResolver for resolution. +// +// fallbackResolver must not be nil +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions, fallbackResolver EndpointResolver) EndpointResolver { + var resolver aws.EndpointResolverWithOptions + + if awsResolverWithOptions != nil { + resolver = awsResolverWithOptions + } else if awsResolver != nil { + resolver = awsEndpointResolverAdaptor(awsResolver.ResolveEndpoint) + } + + return &wrappedEndpointResolver{ + awsResolver: resolver, + resolver: fallbackResolver, + } +} + +func finalizeClientEndpointResolverOptions(options *Options) { + options.EndpointOptions.LogDeprecated = options.ClientLogMode.IsDeprecatedUsage() + + if len(options.EndpointOptions.ResolvedRegion) == 0 { + const fipsInfix = "-fips-" + const fipsPrefix = "fips-" + const fipsSuffix = "-fips" + + if strings.Contains(options.Region, fipsInfix) || + strings.Contains(options.Region, fipsPrefix) || + strings.Contains(options.Region, fipsSuffix) { + options.EndpointOptions.ResolvedRegion = strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll( + options.Region, fipsInfix, "-"), fipsPrefix, ""), fipsSuffix, "") + options.EndpointOptions.UseFIPSEndpoint = aws.FIPSEndpointStateEnabled + } + } + +} diff --git a/service/resiliencehub/generated.json b/service/resiliencehub/generated.json new file mode 100644 index 00000000000..977c53ebafe --- /dev/null +++ b/service/resiliencehub/generated.json @@ -0,0 +1,65 @@ +{ + "dependencies": { + "github.com/aws/aws-sdk-go-v2": "v1.4.0", + "github.com/aws/aws-sdk-go-v2/internal/configsources": "v0.0.0-00010101000000-000000000000", + "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2": "v2.0.0-00010101000000-000000000000", + "github.com/aws/smithy-go": "v1.4.0" + }, + "files": [ + "api_client.go", + "api_op_AddDraftAppVersionResourceMappings.go", + "api_op_CreateApp.go", + "api_op_CreateRecommendationTemplate.go", + "api_op_CreateResiliencyPolicy.go", + "api_op_DeleteApp.go", + "api_op_DeleteAppAssessment.go", + "api_op_DeleteRecommendationTemplate.go", + "api_op_DeleteResiliencyPolicy.go", + "api_op_DescribeApp.go", + "api_op_DescribeAppAssessment.go", + "api_op_DescribeAppVersionResourcesResolutionStatus.go", + "api_op_DescribeAppVersionTemplate.go", + "api_op_DescribeDraftAppVersionResourcesImportStatus.go", + "api_op_DescribeResiliencyPolicy.go", + "api_op_ImportResourcesToDraftAppVersion.go", + "api_op_ListAlarmRecommendations.go", + "api_op_ListAppAssessments.go", + "api_op_ListAppComponentCompliances.go", + "api_op_ListAppComponentRecommendations.go", + "api_op_ListAppVersionResourceMappings.go", + "api_op_ListAppVersionResources.go", + "api_op_ListAppVersions.go", + "api_op_ListApps.go", + "api_op_ListRecommendationTemplates.go", + "api_op_ListResiliencyPolicies.go", + "api_op_ListSopRecommendations.go", + "api_op_ListSuggestedResiliencyPolicies.go", + "api_op_ListTagsForResource.go", + "api_op_ListTestRecommendations.go", + "api_op_ListUnsupportedAppVersionResources.go", + "api_op_PublishAppVersion.go", + "api_op_PutDraftAppVersionTemplate.go", + "api_op_RemoveDraftAppVersionResourceMappings.go", + "api_op_ResolveAppVersionResources.go", + "api_op_StartAppAssessment.go", + "api_op_TagResource.go", + "api_op_UntagResource.go", + "api_op_UpdateApp.go", + "api_op_UpdateResiliencyPolicy.go", + "deserializers.go", + "doc.go", + "endpoints.go", + "generated.json", + "internal/endpoints/endpoints.go", + "internal/endpoints/endpoints_test.go", + "protocol_test.go", + "serializers.go", + "types/enums.go", + "types/errors.go", + "types/types.go", + "validators.go" + ], + "go": "1.15", + "module": "github.com/aws/aws-sdk-go-v2/service/resiliencehub", + "unstable": false +} diff --git a/service/resiliencehub/go.mod b/service/resiliencehub/go.mod new file mode 100644 index 00000000000..b59372951bb --- /dev/null +++ b/service/resiliencehub/go.mod @@ -0,0 +1,16 @@ +module github.com/aws/aws-sdk-go-v2/service/resiliencehub + +go 1.15 + +require ( + github.com/aws/aws-sdk-go-v2 v1.11.0 + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.0 + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.0 + github.com/aws/smithy-go v1.9.0 +) + +replace github.com/aws/aws-sdk-go-v2 => ../../ + +replace github.com/aws/aws-sdk-go-v2/internal/configsources => ../../internal/configsources/ + +replace github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 => ../../internal/endpoints/v2/ diff --git a/service/resiliencehub/go.sum b/service/resiliencehub/go.sum new file mode 100644 index 00000000000..45efc0b1e03 --- /dev/null +++ b/service/resiliencehub/go.sum @@ -0,0 +1,14 @@ +github.com/aws/smithy-go v1.9.0 h1:c7FUdEqrQA1/UVKKCNDFQPNKGp4FQg3YW4Ck5SLTG58= +github.com/aws/smithy-go v1.9.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/service/resiliencehub/go_module_metadata.go b/service/resiliencehub/go_module_metadata.go new file mode 100644 index 00000000000..5f03b12ecf6 --- /dev/null +++ b/service/resiliencehub/go_module_metadata.go @@ -0,0 +1,6 @@ +// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT. + +package resiliencehub + +// goModuleVersion is the tagged release for this module +const goModuleVersion = "tip" diff --git a/service/resiliencehub/internal/endpoints/endpoints.go b/service/resiliencehub/internal/endpoints/endpoints.go new file mode 100644 index 00000000000..9db5d4a6309 --- /dev/null +++ b/service/resiliencehub/internal/endpoints/endpoints.go @@ -0,0 +1,250 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "github.com/aws/aws-sdk-go-v2/aws" + endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2" + "github.com/aws/smithy-go/logging" + "regexp" +) + +// Options is the endpoint resolver configuration options +type Options struct { + // Logger is a logging implementation that log events should be sent to. + Logger logging.Logger + + // LogDeprecated indicates that deprecated endpoints should be logged to the + // provided logger. + LogDeprecated bool + + // ResolvedRegion is used to override the region to be resolved, rather then the + // using the value passed to the ResolveEndpoint method. This value is used by the + // SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative + // name. You must not set this value directly in your application. + ResolvedRegion string + + // DisableHTTPS informs the resolver to return an endpoint that does not use the + // HTTPS scheme. + DisableHTTPS bool + + // UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint. + UseDualStackEndpoint aws.DualStackEndpointState + + // UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint. + UseFIPSEndpoint aws.FIPSEndpointState +} + +func (o Options) GetResolvedRegion() string { + return o.ResolvedRegion +} + +func (o Options) GetDisableHTTPS() bool { + return o.DisableHTTPS +} + +func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState { + return o.UseDualStackEndpoint +} + +func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState { + return o.UseFIPSEndpoint +} + +func transformToSharedOptions(options Options) endpoints.Options { + return endpoints.Options{ + Logger: options.Logger, + LogDeprecated: options.LogDeprecated, + ResolvedRegion: options.ResolvedRegion, + DisableHTTPS: options.DisableHTTPS, + UseDualStackEndpoint: options.UseDualStackEndpoint, + UseFIPSEndpoint: options.UseFIPSEndpoint, + } +} + +// Resolver resiliencehub endpoint resolver +type Resolver struct { + partitions endpoints.Partitions +} + +// ResolveEndpoint resolves the service endpoint for the given region and options +func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) { + if len(region) == 0 { + return endpoint, &aws.MissingRegionError{} + } + + opt := transformToSharedOptions(options) + return r.partitions.ResolveEndpoint(region, opt) +} + +// New returns a new Resolver +func New() *Resolver { + return &Resolver{ + partitions: defaultPartitions, + } +} + +var partitionRegexp = struct { + Aws *regexp.Regexp + AwsCn *regexp.Regexp + AwsIso *regexp.Regexp + AwsIsoB *regexp.Regexp + AwsUsGov *regexp.Regexp +}{ + + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"), + AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), + AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), +} + +var defaultPartitions = endpoints.Partitions{ + { + ID: "aws", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "resiliencehub-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "resiliencehub.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.Aws, + IsRegionalized: true, + }, + { + ID: "aws-cn", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "resiliencehub-fips.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub-fips.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "resiliencehub.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsCn, + IsRegionalized: true, + }, + { + ID: "aws-iso", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "resiliencehub-fips.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "resiliencehub.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIso, + IsRegionalized: true, + }, + { + ID: "aws-iso-b", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "resiliencehub-fips.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "resiliencehub.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoB, + IsRegionalized: true, + }, + { + ID: "aws-us-gov", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "resiliencehub-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "resiliencehub-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "resiliencehub.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsUsGov, + IsRegionalized: true, + }, +} diff --git a/service/resiliencehub/internal/endpoints/endpoints_test.go b/service/resiliencehub/internal/endpoints/endpoints_test.go new file mode 100644 index 00000000000..08e5da2d833 --- /dev/null +++ b/service/resiliencehub/internal/endpoints/endpoints_test.go @@ -0,0 +1,11 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "testing" +) + +func TestRegexCompile(t *testing.T) { + _ = defaultPartitions +} diff --git a/service/resiliencehub/protocol_test.go b/service/resiliencehub/protocol_test.go new file mode 100644 index 00000000000..b92ac8f8da6 --- /dev/null +++ b/service/resiliencehub/protocol_test.go @@ -0,0 +1,3 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub diff --git a/service/resiliencehub/serializers.go b/service/resiliencehub/serializers.go new file mode 100644 index 00000000000..6139bffe3e6 --- /dev/null +++ b/service/resiliencehub/serializers.go @@ -0,0 +1,3217 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "bytes" + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/encoding/httpbinding" + smithyjson "github.com/aws/smithy-go/encoding/json" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +type awsRestjson1_serializeOpAddDraftAppVersionResourceMappings struct { +} + +func (*awsRestjson1_serializeOpAddDraftAppVersionResourceMappings) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpAddDraftAppVersionResourceMappings) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*AddDraftAppVersionResourceMappingsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/add-draft-app-version-resource-mappings") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentAddDraftAppVersionResourceMappingsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsAddDraftAppVersionResourceMappingsInput(v *AddDraftAppVersionResourceMappingsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentAddDraftAppVersionResourceMappingsInput(v *AddDraftAppVersionResourceMappingsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.ResourceMappings != nil { + ok := object.Key("resourceMappings") + if err := awsRestjson1_serializeDocumentResourceMappingList(v.ResourceMappings, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpCreateApp struct { +} + +func (*awsRestjson1_serializeOpCreateApp) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateApp) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateAppInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/create-app") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateAppInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateAppInput(v *CreateAppInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateAppInput(v *CreateAppInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.Description != nil { + ok := object.Key("description") + ok.String(*v.Description) + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.PolicyArn != nil { + ok := object.Key("policyArn") + ok.String(*v.PolicyArn) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpCreateRecommendationTemplate struct { +} + +func (*awsRestjson1_serializeOpCreateRecommendationTemplate) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateRecommendationTemplate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateRecommendationTemplateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/create-recommendation-template") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateRecommendationTemplateInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateRecommendationTemplateInput(v *CreateRecommendationTemplateInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateRecommendationTemplateInput(v *CreateRecommendationTemplateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.BucketName != nil { + ok := object.Key("bucketName") + ok.String(*v.BucketName) + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if len(v.Format) > 0 { + ok := object.Key("format") + ok.String(string(v.Format)) + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.RecommendationIds != nil { + ok := object.Key("recommendationIds") + if err := awsRestjson1_serializeDocumentRecommendationIdList(v.RecommendationIds, ok); err != nil { + return err + } + } + + if v.RecommendationTypes != nil { + ok := object.Key("recommendationTypes") + if err := awsRestjson1_serializeDocumentRenderRecommendationTypeList(v.RecommendationTypes, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpCreateResiliencyPolicy struct { +} + +func (*awsRestjson1_serializeOpCreateResiliencyPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpCreateResiliencyPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateResiliencyPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/create-resiliency-policy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentCreateResiliencyPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsCreateResiliencyPolicyInput(v *CreateResiliencyPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentCreateResiliencyPolicyInput(v *CreateResiliencyPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if len(v.DataLocationConstraint) > 0 { + ok := object.Key("dataLocationConstraint") + ok.String(string(v.DataLocationConstraint)) + } + + if v.Policy != nil { + ok := object.Key("policy") + if err := awsRestjson1_serializeDocumentDisruptionPolicy(v.Policy, ok); err != nil { + return err + } + } + + if v.PolicyDescription != nil { + ok := object.Key("policyDescription") + ok.String(*v.PolicyDescription) + } + + if v.PolicyName != nil { + ok := object.Key("policyName") + ok.String(*v.PolicyName) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + if len(v.Tier) > 0 { + ok := object.Key("tier") + ok.String(string(v.Tier)) + } + + return nil +} + +type awsRestjson1_serializeOpDeleteApp struct { +} + +func (*awsRestjson1_serializeOpDeleteApp) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteApp) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteAppInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/delete-app") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDeleteAppInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteAppInput(v *DeleteAppInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDeleteAppInput(v *DeleteAppInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.ForceDelete != nil { + ok := object.Key("forceDelete") + ok.Boolean(*v.ForceDelete) + } + + return nil +} + +type awsRestjson1_serializeOpDeleteAppAssessment struct { +} + +func (*awsRestjson1_serializeOpDeleteAppAssessment) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteAppAssessment) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteAppAssessmentInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/delete-app-assessment") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDeleteAppAssessmentInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteAppAssessmentInput(v *DeleteAppAssessmentInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDeleteAppAssessmentInput(v *DeleteAppAssessmentInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + return nil +} + +type awsRestjson1_serializeOpDeleteRecommendationTemplate struct { +} + +func (*awsRestjson1_serializeOpDeleteRecommendationTemplate) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteRecommendationTemplate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteRecommendationTemplateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/delete-recommendation-template") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDeleteRecommendationTemplateInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteRecommendationTemplateInput(v *DeleteRecommendationTemplateInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDeleteRecommendationTemplateInput(v *DeleteRecommendationTemplateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.RecommendationTemplateArn != nil { + ok := object.Key("recommendationTemplateArn") + ok.String(*v.RecommendationTemplateArn) + } + + return nil +} + +type awsRestjson1_serializeOpDeleteResiliencyPolicy struct { +} + +func (*awsRestjson1_serializeOpDeleteResiliencyPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteResiliencyPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteResiliencyPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/delete-resiliency-policy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDeleteResiliencyPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteResiliencyPolicyInput(v *DeleteResiliencyPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDeleteResiliencyPolicyInput(v *DeleteResiliencyPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.PolicyArn != nil { + ok := object.Key("policyArn") + ok.String(*v.PolicyArn) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeApp struct { +} + +func (*awsRestjson1_serializeOpDescribeApp) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeApp) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeAppInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-app") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeAppInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeAppInput(v *DescribeAppInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeAppInput(v *DescribeAppInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeAppAssessment struct { +} + +func (*awsRestjson1_serializeOpDescribeAppAssessment) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeAppAssessment) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeAppAssessmentInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-app-assessment") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeAppAssessmentInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeAppAssessmentInput(v *DescribeAppAssessmentInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeAppAssessmentInput(v *DescribeAppAssessmentInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeAppVersionResourcesResolutionStatus struct { +} + +func (*awsRestjson1_serializeOpDescribeAppVersionResourcesResolutionStatus) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeAppVersionResourcesResolutionStatus) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeAppVersionResourcesResolutionStatusInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-app-version-resources-resolution-status") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeAppVersionResourcesResolutionStatusInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeAppVersionResourcesResolutionStatusInput(v *DescribeAppVersionResourcesResolutionStatusInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeAppVersionResourcesResolutionStatusInput(v *DescribeAppVersionResourcesResolutionStatusInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + if v.ResolutionId != nil { + ok := object.Key("resolutionId") + ok.String(*v.ResolutionId) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeAppVersionTemplate struct { +} + +func (*awsRestjson1_serializeOpDescribeAppVersionTemplate) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeAppVersionTemplate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeAppVersionTemplateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-app-version-template") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeAppVersionTemplateInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeAppVersionTemplateInput(v *DescribeAppVersionTemplateInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeAppVersionTemplateInput(v *DescribeAppVersionTemplateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeDraftAppVersionResourcesImportStatus struct { +} + +func (*awsRestjson1_serializeOpDescribeDraftAppVersionResourcesImportStatus) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeDraftAppVersionResourcesImportStatus) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeDraftAppVersionResourcesImportStatusInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-draft-app-version-resources-import-status") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeDraftAppVersionResourcesImportStatusInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeDraftAppVersionResourcesImportStatusInput(v *DescribeDraftAppVersionResourcesImportStatusInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeDraftAppVersionResourcesImportStatusInput(v *DescribeDraftAppVersionResourcesImportStatusInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + return nil +} + +type awsRestjson1_serializeOpDescribeResiliencyPolicy struct { +} + +func (*awsRestjson1_serializeOpDescribeResiliencyPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeResiliencyPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeResiliencyPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/describe-resiliency-policy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentDescribeResiliencyPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeResiliencyPolicyInput(v *DescribeResiliencyPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentDescribeResiliencyPolicyInput(v *DescribeResiliencyPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.PolicyArn != nil { + ok := object.Key("policyArn") + ok.String(*v.PolicyArn) + } + + return nil +} + +type awsRestjson1_serializeOpImportResourcesToDraftAppVersion struct { +} + +func (*awsRestjson1_serializeOpImportResourcesToDraftAppVersion) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpImportResourcesToDraftAppVersion) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ImportResourcesToDraftAppVersionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/import-resources-to-draft-app-version") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentImportResourcesToDraftAppVersionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsImportResourcesToDraftAppVersionInput(v *ImportResourcesToDraftAppVersionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentImportResourcesToDraftAppVersionInput(v *ImportResourcesToDraftAppVersionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.SourceArns != nil { + ok := object.Key("sourceArns") + if err := awsRestjson1_serializeDocumentArnList(v.SourceArns, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpListAlarmRecommendations struct { +} + +func (*awsRestjson1_serializeOpListAlarmRecommendations) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAlarmRecommendations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAlarmRecommendationsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-alarm-recommendations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAlarmRecommendationsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAlarmRecommendationsInput(v *ListAlarmRecommendationsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAlarmRecommendationsInput(v *ListAlarmRecommendationsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListAppAssessments struct { +} + +func (*awsRestjson1_serializeOpListAppAssessments) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppAssessments) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppAssessmentsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-assessments") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListAppAssessmentsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppAssessmentsInput(v *ListAppAssessmentsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AppArn != nil { + encoder.SetQuery("appArn").String(*v.AppArn) + } + + if v.AssessmentName != nil { + encoder.SetQuery("assessmentName").String(*v.AssessmentName) + } + + if v.AssessmentStatus != nil { + for i := range v.AssessmentStatus { + encoder.AddQuery("assessmentStatus").String(string(v.AssessmentStatus[i])) + } + } + + if len(v.ComplianceStatus) > 0 { + encoder.SetQuery("complianceStatus").String(string(v.ComplianceStatus)) + } + + if len(v.Invoker) > 0 { + encoder.SetQuery("invoker").String(string(v.Invoker)) + } + + if v.MaxResults != nil { + encoder.SetQuery("maxResults").Integer(*v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if v.ReverseOrder != nil { + encoder.SetQuery("reverseOrder").Boolean(*v.ReverseOrder) + } + + return nil +} + +type awsRestjson1_serializeOpListAppComponentCompliances struct { +} + +func (*awsRestjson1_serializeOpListAppComponentCompliances) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppComponentCompliances) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppComponentCompliancesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-component-compliances") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAppComponentCompliancesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppComponentCompliancesInput(v *ListAppComponentCompliancesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAppComponentCompliancesInput(v *ListAppComponentCompliancesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListAppComponentRecommendations struct { +} + +func (*awsRestjson1_serializeOpListAppComponentRecommendations) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppComponentRecommendations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppComponentRecommendationsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-component-recommendations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAppComponentRecommendationsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppComponentRecommendationsInput(v *ListAppComponentRecommendationsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAppComponentRecommendationsInput(v *ListAppComponentRecommendationsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListApps struct { +} + +func (*awsRestjson1_serializeOpListApps) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListApps) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-apps") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListAppsInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppsInput(v *ListAppsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AppArn != nil { + encoder.SetQuery("appArn").String(*v.AppArn) + } + + if v.MaxResults != nil { + encoder.SetQuery("maxResults").Integer(*v.MaxResults) + } + + if v.Name != nil { + encoder.SetQuery("name").String(*v.Name) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListAppVersionResourceMappings struct { +} + +func (*awsRestjson1_serializeOpListAppVersionResourceMappings) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppVersionResourceMappings) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppVersionResourceMappingsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-version-resource-mappings") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAppVersionResourceMappingsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppVersionResourceMappingsInput(v *ListAppVersionResourceMappingsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAppVersionResourceMappingsInput(v *ListAppVersionResourceMappingsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListAppVersionResources struct { +} + +func (*awsRestjson1_serializeOpListAppVersionResources) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppVersionResources) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppVersionResourcesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-version-resources") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAppVersionResourcesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppVersionResourcesInput(v *ListAppVersionResourcesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAppVersionResourcesInput(v *ListAppVersionResourcesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if v.ResolutionId != nil { + ok := object.Key("resolutionId") + ok.String(*v.ResolutionId) + } + + return nil +} + +type awsRestjson1_serializeOpListAppVersions struct { +} + +func (*awsRestjson1_serializeOpListAppVersions) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListAppVersions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAppVersionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-app-versions") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListAppVersionsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListAppVersionsInput(v *ListAppVersionsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListAppVersionsInput(v *ListAppVersionsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListRecommendationTemplates struct { +} + +func (*awsRestjson1_serializeOpListRecommendationTemplates) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListRecommendationTemplates) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListRecommendationTemplatesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-recommendation-templates") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListRecommendationTemplatesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListRecommendationTemplatesInput(v *ListRecommendationTemplatesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AssessmentArn != nil { + encoder.SetQuery("assessmentArn").String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + encoder.SetQuery("maxResults").Integer(*v.MaxResults) + } + + if v.Name != nil { + encoder.SetQuery("name").String(*v.Name) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if v.RecommendationTemplateArn != nil { + encoder.SetQuery("recommendationTemplateArn").String(*v.RecommendationTemplateArn) + } + + if v.ReverseOrder != nil { + encoder.SetQuery("reverseOrder").Boolean(*v.ReverseOrder) + } + + if v.Status != nil { + for i := range v.Status { + encoder.AddQuery("status").String(string(v.Status[i])) + } + } + + return nil +} + +type awsRestjson1_serializeOpListResiliencyPolicies struct { +} + +func (*awsRestjson1_serializeOpListResiliencyPolicies) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListResiliencyPolicies) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListResiliencyPoliciesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-resiliency-policies") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListResiliencyPoliciesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListResiliencyPoliciesInput(v *ListResiliencyPoliciesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != nil { + encoder.SetQuery("maxResults").Integer(*v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + if v.PolicyName != nil { + encoder.SetQuery("policyName").String(*v.PolicyName) + } + + return nil +} + +type awsRestjson1_serializeOpListSopRecommendations struct { +} + +func (*awsRestjson1_serializeOpListSopRecommendations) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListSopRecommendations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListSopRecommendationsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-sop-recommendations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListSopRecommendationsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListSopRecommendationsInput(v *ListSopRecommendationsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListSopRecommendationsInput(v *ListSopRecommendationsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListSuggestedResiliencyPolicies struct { +} + +func (*awsRestjson1_serializeOpListSuggestedResiliencyPolicies) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListSuggestedResiliencyPolicies) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListSuggestedResiliencyPoliciesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-suggested-resiliency-policies") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListSuggestedResiliencyPoliciesInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListSuggestedResiliencyPoliciesInput(v *ListSuggestedResiliencyPoliciesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.MaxResults != nil { + encoder.SetQuery("maxResults").Integer(*v.MaxResults) + } + + if v.NextToken != nil { + encoder.SetQuery("nextToken").String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListTagsForResource struct { +} + +func (*awsRestjson1_serializeOpListTagsForResource) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListTagsForResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTagsForResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/tags/{resourceArn}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(v *ListTagsForResourceInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceArn == nil || len(*v.ResourceArn) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member resourceArn must not be empty")} + } + if v.ResourceArn != nil { + if err := encoder.SetURI("resourceArn").String(*v.ResourceArn); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpListTestRecommendations struct { +} + +func (*awsRestjson1_serializeOpListTestRecommendations) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListTestRecommendations) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTestRecommendationsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-test-recommendations") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListTestRecommendationsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListTestRecommendationsInput(v *ListTestRecommendationsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListTestRecommendationsInput(v *ListTestRecommendationsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AssessmentArn != nil { + ok := object.Key("assessmentArn") + ok.String(*v.AssessmentArn) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +type awsRestjson1_serializeOpListUnsupportedAppVersionResources struct { +} + +func (*awsRestjson1_serializeOpListUnsupportedAppVersionResources) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListUnsupportedAppVersionResources) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListUnsupportedAppVersionResourcesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/list-unsupported-app-version-resources") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentListUnsupportedAppVersionResourcesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListUnsupportedAppVersionResourcesInput(v *ListUnsupportedAppVersionResourcesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentListUnsupportedAppVersionResourcesInput(v *ListUnsupportedAppVersionResourcesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if v.ResolutionId != nil { + ok := object.Key("resolutionId") + ok.String(*v.ResolutionId) + } + + return nil +} + +type awsRestjson1_serializeOpPublishAppVersion struct { +} + +func (*awsRestjson1_serializeOpPublishAppVersion) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpPublishAppVersion) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PublishAppVersionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/publish-app-version") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentPublishAppVersionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsPublishAppVersionInput(v *PublishAppVersionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentPublishAppVersionInput(v *PublishAppVersionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + return nil +} + +type awsRestjson1_serializeOpPutDraftAppVersionTemplate struct { +} + +func (*awsRestjson1_serializeOpPutDraftAppVersionTemplate) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpPutDraftAppVersionTemplate) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutDraftAppVersionTemplateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/put-draft-app-version-template") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentPutDraftAppVersionTemplateInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsPutDraftAppVersionTemplateInput(v *PutDraftAppVersionTemplateInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentPutDraftAppVersionTemplateInput(v *PutDraftAppVersionTemplateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppTemplateBody != nil { + ok := object.Key("appTemplateBody") + ok.String(*v.AppTemplateBody) + } + + return nil +} + +type awsRestjson1_serializeOpRemoveDraftAppVersionResourceMappings struct { +} + +func (*awsRestjson1_serializeOpRemoveDraftAppVersionResourceMappings) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpRemoveDraftAppVersionResourceMappings) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*RemoveDraftAppVersionResourceMappingsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/remove-draft-app-version-resource-mappings") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentRemoveDraftAppVersionResourceMappingsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsRemoveDraftAppVersionResourceMappingsInput(v *RemoveDraftAppVersionResourceMappingsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentRemoveDraftAppVersionResourceMappingsInput(v *RemoveDraftAppVersionResourceMappingsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppRegistryAppNames != nil { + ok := object.Key("appRegistryAppNames") + if err := awsRestjson1_serializeDocumentEntityNameList(v.AppRegistryAppNames, ok); err != nil { + return err + } + } + + if v.LogicalStackNames != nil { + ok := object.Key("logicalStackNames") + if err := awsRestjson1_serializeDocumentString255List(v.LogicalStackNames, ok); err != nil { + return err + } + } + + if v.ResourceGroupNames != nil { + ok := object.Key("resourceGroupNames") + if err := awsRestjson1_serializeDocumentEntityNameList(v.ResourceGroupNames, ok); err != nil { + return err + } + } + + if v.ResourceNames != nil { + ok := object.Key("resourceNames") + if err := awsRestjson1_serializeDocumentEntityNameList(v.ResourceNames, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpResolveAppVersionResources struct { +} + +func (*awsRestjson1_serializeOpResolveAppVersionResources) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpResolveAppVersionResources) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ResolveAppVersionResourcesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/resolve-app-version-resources") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentResolveAppVersionResourcesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsResolveAppVersionResourcesInput(v *ResolveAppVersionResourcesInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentResolveAppVersionResourcesInput(v *ResolveAppVersionResourcesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + return nil +} + +type awsRestjson1_serializeOpStartAppAssessment struct { +} + +func (*awsRestjson1_serializeOpStartAppAssessment) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpStartAppAssessment) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartAppAssessmentInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/start-app-assessment") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentStartAppAssessmentInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsStartAppAssessmentInput(v *StartAppAssessmentInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentStartAppAssessmentInput(v *StartAppAssessmentInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.AppVersion != nil { + ok := object.Key("appVersion") + ok.String(*v.AppVersion) + } + + if v.AssessmentName != nil { + ok := object.Key("assessmentName") + ok.String(*v.AssessmentName) + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpTagResource struct { +} + +func (*awsRestjson1_serializeOpTagResource) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpTagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*TagResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/tags/{resourceArn}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsTagResourceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentTagResourceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsTagResourceInput(v *TagResourceInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceArn == nil || len(*v.ResourceArn) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member resourceArn must not be empty")} + } + if v.ResourceArn != nil { + if err := encoder.SetURI("resourceArn").String(*v.ResourceArn); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentTagResourceInput(v *TagResourceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsRestjson1_serializeDocumentTagMap(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +type awsRestjson1_serializeOpUntagResource struct { +} + +func (*awsRestjson1_serializeOpUntagResource) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUntagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UntagResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/tags/{resourceArn}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsUntagResourceInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUntagResourceInput(v *UntagResourceInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ResourceArn == nil || len(*v.ResourceArn) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member resourceArn must not be empty")} + } + if v.ResourceArn != nil { + if err := encoder.SetURI("resourceArn").String(*v.ResourceArn); err != nil { + return err + } + } + + if v.TagKeys != nil { + for i := range v.TagKeys { + encoder.AddQuery("tagKeys").String(v.TagKeys[i]) + } + } + + return nil +} + +type awsRestjson1_serializeOpUpdateApp struct { +} + +func (*awsRestjson1_serializeOpUpdateApp) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUpdateApp) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateAppInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/update-app") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateAppInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUpdateAppInput(v *UpdateAppInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateAppInput(v *UpdateAppInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppArn != nil { + ok := object.Key("appArn") + ok.String(*v.AppArn) + } + + if v.ClearResiliencyPolicyArn != nil { + ok := object.Key("clearResiliencyPolicyArn") + ok.Boolean(*v.ClearResiliencyPolicyArn) + } + + if v.Description != nil { + ok := object.Key("description") + ok.String(*v.Description) + } + + if v.PolicyArn != nil { + ok := object.Key("policyArn") + ok.String(*v.PolicyArn) + } + + return nil +} + +type awsRestjson1_serializeOpUpdateResiliencyPolicy struct { +} + +func (*awsRestjson1_serializeOpUpdateResiliencyPolicy) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUpdateResiliencyPolicy) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateResiliencyPolicyInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/update-resiliency-policy") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + restEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateResiliencyPolicyInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUpdateResiliencyPolicyInput(v *UpdateResiliencyPolicyInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateResiliencyPolicyInput(v *UpdateResiliencyPolicyInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.DataLocationConstraint) > 0 { + ok := object.Key("dataLocationConstraint") + ok.String(string(v.DataLocationConstraint)) + } + + if v.Policy != nil { + ok := object.Key("policy") + if err := awsRestjson1_serializeDocumentDisruptionPolicy(v.Policy, ok); err != nil { + return err + } + } + + if v.PolicyArn != nil { + ok := object.Key("policyArn") + ok.String(*v.PolicyArn) + } + + if v.PolicyDescription != nil { + ok := object.Key("policyDescription") + ok.String(*v.PolicyDescription) + } + + if v.PolicyName != nil { + ok := object.Key("policyName") + ok.String(*v.PolicyName) + } + + if len(v.Tier) > 0 { + ok := object.Key("tier") + ok.String(string(v.Tier)) + } + + return nil +} + +func awsRestjson1_serializeDocumentArnList(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsRestjson1_serializeDocumentDisruptionPolicy(v map[string]types.FailurePolicy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + mapVar := v[key] + if err := awsRestjson1_serializeDocumentFailurePolicy(&mapVar, om); err != nil { + return err + } + } + return nil +} + +func awsRestjson1_serializeDocumentEntityNameList(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsRestjson1_serializeDocumentFailurePolicy(v *types.FailurePolicy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("rpoInSecs") + ok.Integer(v.RpoInSecs) + } + + { + ok := object.Key("rtoInSecs") + ok.Integer(v.RtoInSecs) + } + + return nil +} + +func awsRestjson1_serializeDocumentPhysicalResourceId(v *types.PhysicalResourceId, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AwsAccountId != nil { + ok := object.Key("awsAccountId") + ok.String(*v.AwsAccountId) + } + + if v.AwsRegion != nil { + ok := object.Key("awsRegion") + ok.String(*v.AwsRegion) + } + + if v.Identifier != nil { + ok := object.Key("identifier") + ok.String(*v.Identifier) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsRestjson1_serializeDocumentRecommendationIdList(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsRestjson1_serializeDocumentRenderRecommendationTypeList(v []types.RenderRecommendationType, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsRestjson1_serializeDocumentResourceMapping(v *types.ResourceMapping, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AppRegistryAppName != nil { + ok := object.Key("appRegistryAppName") + ok.String(*v.AppRegistryAppName) + } + + if v.LogicalStackName != nil { + ok := object.Key("logicalStackName") + ok.String(*v.LogicalStackName) + } + + if len(v.MappingType) > 0 { + ok := object.Key("mappingType") + ok.String(string(v.MappingType)) + } + + if v.PhysicalResourceId != nil { + ok := object.Key("physicalResourceId") + if err := awsRestjson1_serializeDocumentPhysicalResourceId(v.PhysicalResourceId, ok); err != nil { + return err + } + } + + if v.ResourceGroupName != nil { + ok := object.Key("resourceGroupName") + ok.String(*v.ResourceGroupName) + } + + if v.ResourceName != nil { + ok := object.Key("resourceName") + ok.String(*v.ResourceName) + } + + return nil +} + +func awsRestjson1_serializeDocumentResourceMappingList(v []types.ResourceMapping, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentResourceMapping(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsRestjson1_serializeDocumentString255List(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsRestjson1_serializeDocumentTagMap(v map[string]string, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + om.String(v[key]) + } + return nil +} diff --git a/service/resiliencehub/types/enums.go b/service/resiliencehub/types/enums.go new file mode 100644 index 00000000000..70d44aa5b9d --- /dev/null +++ b/service/resiliencehub/types/enums.go @@ -0,0 +1,507 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +type AlarmType string + +// Enum values for AlarmType +const ( + AlarmTypeMetric AlarmType = "Metric" + AlarmTypeComposite AlarmType = "Composite" + AlarmTypeCanary AlarmType = "Canary" + AlarmTypeLogs AlarmType = "Logs" + AlarmTypeEvent AlarmType = "Event" +) + +// Values returns all known values for AlarmType. Note that this can be expanded in +// the future, and so it is only as up to date as the client. The ordering of this +// slice is not guaranteed to be stable across updates. +func (AlarmType) Values() []AlarmType { + return []AlarmType{ + "Metric", + "Composite", + "Canary", + "Logs", + "Event", + } +} + +type AppComplianceStatusType string + +// Enum values for AppComplianceStatusType +const ( + AppComplianceStatusTypePolicyBreached AppComplianceStatusType = "PolicyBreached" + AppComplianceStatusTypePolicyMet AppComplianceStatusType = "PolicyMet" + AppComplianceStatusTypeNotAssessed AppComplianceStatusType = "NotAssessed" + AppComplianceStatusTypeChangesDetected AppComplianceStatusType = "ChangesDetected" +) + +// Values returns all known values for AppComplianceStatusType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (AppComplianceStatusType) Values() []AppComplianceStatusType { + return []AppComplianceStatusType{ + "PolicyBreached", + "PolicyMet", + "NotAssessed", + "ChangesDetected", + } +} + +type AppStatusType string + +// Enum values for AppStatusType +const ( + AppStatusTypeActive AppStatusType = "Active" + AppStatusTypeDeleting AppStatusType = "Deleting" +) + +// Values returns all known values for AppStatusType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (AppStatusType) Values() []AppStatusType { + return []AppStatusType{ + "Active", + "Deleting", + } +} + +type AssessmentInvoker string + +// Enum values for AssessmentInvoker +const ( + AssessmentInvokerUser AssessmentInvoker = "User" + AssessmentInvokerSystem AssessmentInvoker = "System" +) + +// Values returns all known values for AssessmentInvoker. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (AssessmentInvoker) Values() []AssessmentInvoker { + return []AssessmentInvoker{ + "User", + "System", + } +} + +type AssessmentStatus string + +// Enum values for AssessmentStatus +const ( + AssessmentStatusPending AssessmentStatus = "Pending" + AssessmentStatusInprogress AssessmentStatus = "InProgress" + AssessmentStatusFailed AssessmentStatus = "Failed" + AssessmentStatusSuccess AssessmentStatus = "Success" +) + +// Values returns all known values for AssessmentStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (AssessmentStatus) Values() []AssessmentStatus { + return []AssessmentStatus{ + "Pending", + "InProgress", + "Failed", + "Success", + } +} + +type ComplianceStatus string + +// Enum values for ComplianceStatus +const ( + ComplianceStatusPolicyBreached ComplianceStatus = "PolicyBreached" + ComplianceStatusPolicyMet ComplianceStatus = "PolicyMet" +) + +// Values returns all known values for ComplianceStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (ComplianceStatus) Values() []ComplianceStatus { + return []ComplianceStatus{ + "PolicyBreached", + "PolicyMet", + } +} + +type ConfigRecommendationOptimizationType string + +// Enum values for ConfigRecommendationOptimizationType +const ( + ConfigRecommendationOptimizationTypeLeastCost ConfigRecommendationOptimizationType = "LeastCost" + ConfigRecommendationOptimizationTypeLeastChange ConfigRecommendationOptimizationType = "LeastChange" + ConfigRecommendationOptimizationTypeBestAzRecovery ConfigRecommendationOptimizationType = "BestAZRecovery" + ConfigRecommendationOptimizationTypeLeastErrors ConfigRecommendationOptimizationType = "LeastErrors" + ConfigRecommendationOptimizationTypeBestAttainable ConfigRecommendationOptimizationType = "BestAttainable" +) + +// Values returns all known values for ConfigRecommendationOptimizationType. Note +// that this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (ConfigRecommendationOptimizationType) Values() []ConfigRecommendationOptimizationType { + return []ConfigRecommendationOptimizationType{ + "LeastCost", + "LeastChange", + "BestAZRecovery", + "LeastErrors", + "BestAttainable", + } +} + +type CostFrequency string + +// Enum values for CostFrequency +const ( + CostFrequencyHourly CostFrequency = "Hourly" + CostFrequencyDaily CostFrequency = "Daily" + CostFrequencyMonthly CostFrequency = "Monthly" + CostFrequencyYearly CostFrequency = "Yearly" +) + +// Values returns all known values for CostFrequency. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (CostFrequency) Values() []CostFrequency { + return []CostFrequency{ + "Hourly", + "Daily", + "Monthly", + "Yearly", + } +} + +type DataLocationConstraint string + +// Enum values for DataLocationConstraint +const ( + DataLocationConstraintAnyLocation DataLocationConstraint = "AnyLocation" + DataLocationConstraintSameContinent DataLocationConstraint = "SameContinent" + DataLocationConstraintSameCountry DataLocationConstraint = "SameCountry" +) + +// Values returns all known values for DataLocationConstraint. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (DataLocationConstraint) Values() []DataLocationConstraint { + return []DataLocationConstraint{ + "AnyLocation", + "SameContinent", + "SameCountry", + } +} + +type DisruptionType string + +// Enum values for DisruptionType +const ( + DisruptionTypeSoftware DisruptionType = "Software" + DisruptionTypeHardware DisruptionType = "Hardware" + DisruptionTypeAz DisruptionType = "AZ" + DisruptionTypeRegion DisruptionType = "Region" +) + +// Values returns all known values for DisruptionType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (DisruptionType) Values() []DisruptionType { + return []DisruptionType{ + "Software", + "Hardware", + "AZ", + "Region", + } +} + +type EstimatedCostTier string + +// Enum values for EstimatedCostTier +const ( + EstimatedCostTierL1 EstimatedCostTier = "L1" + EstimatedCostTierL2 EstimatedCostTier = "L2" + EstimatedCostTierL3 EstimatedCostTier = "L3" + EstimatedCostTierL4 EstimatedCostTier = "L4" +) + +// Values returns all known values for EstimatedCostTier. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (EstimatedCostTier) Values() []EstimatedCostTier { + return []EstimatedCostTier{ + "L1", + "L2", + "L3", + "L4", + } +} + +type HaArchitecture string + +// Enum values for HaArchitecture +const ( + HaArchitectureMultiSite HaArchitecture = "MultiSite" + HaArchitectureWarmStandby HaArchitecture = "WarmStandby" + HaArchitecturePilotLight HaArchitecture = "PilotLight" + HaArchitectureBackupAndRestore HaArchitecture = "BackupAndRestore" + HaArchitectureNoRecoveryPlan HaArchitecture = "NoRecoveryPlan" +) + +// Values returns all known values for HaArchitecture. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (HaArchitecture) Values() []HaArchitecture { + return []HaArchitecture{ + "MultiSite", + "WarmStandby", + "PilotLight", + "BackupAndRestore", + "NoRecoveryPlan", + } +} + +type PhysicalIdentifierType string + +// Enum values for PhysicalIdentifierType +const ( + PhysicalIdentifierTypeArn PhysicalIdentifierType = "Arn" + PhysicalIdentifierTypeNative PhysicalIdentifierType = "Native" +) + +// Values returns all known values for PhysicalIdentifierType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (PhysicalIdentifierType) Values() []PhysicalIdentifierType { + return []PhysicalIdentifierType{ + "Arn", + "Native", + } +} + +type RecommendationComplianceStatus string + +// Enum values for RecommendationComplianceStatus +const ( + RecommendationComplianceStatusBreachedUnattainable RecommendationComplianceStatus = "BreachedUnattainable" + RecommendationComplianceStatusBreachedCanMeet RecommendationComplianceStatus = "BreachedCanMeet" + RecommendationComplianceStatusMetCanImprove RecommendationComplianceStatus = "MetCanImprove" +) + +// Values returns all known values for RecommendationComplianceStatus. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (RecommendationComplianceStatus) Values() []RecommendationComplianceStatus { + return []RecommendationComplianceStatus{ + "BreachedUnattainable", + "BreachedCanMeet", + "MetCanImprove", + } +} + +type RecommendationTemplateStatus string + +// Enum values for RecommendationTemplateStatus +const ( + RecommendationTemplateStatusPending RecommendationTemplateStatus = "Pending" + RecommendationTemplateStatusInProgress RecommendationTemplateStatus = "InProgress" + RecommendationTemplateStatusFailed RecommendationTemplateStatus = "Failed" + RecommendationTemplateStatusSuccess RecommendationTemplateStatus = "Success" +) + +// Values returns all known values for RecommendationTemplateStatus. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (RecommendationTemplateStatus) Values() []RecommendationTemplateStatus { + return []RecommendationTemplateStatus{ + "Pending", + "InProgress", + "Failed", + "Success", + } +} + +type RenderRecommendationType string + +// Enum values for RenderRecommendationType +const ( + RenderRecommendationTypeAlarm RenderRecommendationType = "Alarm" + RenderRecommendationTypeSop RenderRecommendationType = "Sop" + RenderRecommendationTypeTest RenderRecommendationType = "Test" +) + +// Values returns all known values for RenderRecommendationType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (RenderRecommendationType) Values() []RenderRecommendationType { + return []RenderRecommendationType{ + "Alarm", + "Sop", + "Test", + } +} + +type ResiliencyPolicyTier string + +// Enum values for ResiliencyPolicyTier +const ( + ResiliencyPolicyTierMissionCritical ResiliencyPolicyTier = "MissionCritical" + ResiliencyPolicyTierCritical ResiliencyPolicyTier = "Critical" + ResiliencyPolicyTierImportant ResiliencyPolicyTier = "Important" + ResiliencyPolicyTierCoreServices ResiliencyPolicyTier = "CoreServices" + ResiliencyPolicyTierNonCritical ResiliencyPolicyTier = "NonCritical" +) + +// Values returns all known values for ResiliencyPolicyTier. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (ResiliencyPolicyTier) Values() []ResiliencyPolicyTier { + return []ResiliencyPolicyTier{ + "MissionCritical", + "Critical", + "Important", + "CoreServices", + "NonCritical", + } +} + +type ResourceImportStatusType string + +// Enum values for ResourceImportStatusType +const ( + ResourceImportStatusTypePending ResourceImportStatusType = "Pending" + ResourceImportStatusTypeInProgress ResourceImportStatusType = "InProgress" + ResourceImportStatusTypeFailed ResourceImportStatusType = "Failed" + ResourceImportStatusTypeSuccess ResourceImportStatusType = "Success" +) + +// Values returns all known values for ResourceImportStatusType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (ResourceImportStatusType) Values() []ResourceImportStatusType { + return []ResourceImportStatusType{ + "Pending", + "InProgress", + "Failed", + "Success", + } +} + +type ResourceMappingType string + +// Enum values for ResourceMappingType +const ( + ResourceMappingTypeCfnStack ResourceMappingType = "CfnStack" + ResourceMappingTypeResource ResourceMappingType = "Resource" + ResourceMappingTypeAppRegistryApp ResourceMappingType = "AppRegistryApp" + ResourceMappingTypeResourceGroup ResourceMappingType = "ResourceGroup" +) + +// Values returns all known values for ResourceMappingType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (ResourceMappingType) Values() []ResourceMappingType { + return []ResourceMappingType{ + "CfnStack", + "Resource", + "AppRegistryApp", + "ResourceGroup", + } +} + +type ResourceResolutionStatusType string + +// Enum values for ResourceResolutionStatusType +const ( + ResourceResolutionStatusTypePending ResourceResolutionStatusType = "Pending" + ResourceResolutionStatusTypeInProgress ResourceResolutionStatusType = "InProgress" + ResourceResolutionStatusTypeFailed ResourceResolutionStatusType = "Failed" + ResourceResolutionStatusTypeSuccess ResourceResolutionStatusType = "Success" +) + +// Values returns all known values for ResourceResolutionStatusType. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (ResourceResolutionStatusType) Values() []ResourceResolutionStatusType { + return []ResourceResolutionStatusType{ + "Pending", + "InProgress", + "Failed", + "Success", + } +} + +type SopServiceType string + +// Enum values for SopServiceType +const ( + SopServiceTypeSsm SopServiceType = "SSM" +) + +// Values returns all known values for SopServiceType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (SopServiceType) Values() []SopServiceType { + return []SopServiceType{ + "SSM", + } +} + +type TemplateFormat string + +// Enum values for TemplateFormat +const ( + TemplateFormatCfnYaml TemplateFormat = "CfnYaml" + TemplateFormatCfnJson TemplateFormat = "CfnJson" +) + +// Values returns all known values for TemplateFormat. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (TemplateFormat) Values() []TemplateFormat { + return []TemplateFormat{ + "CfnYaml", + "CfnJson", + } +} + +type TestRisk string + +// Enum values for TestRisk +const ( + TestRiskSmall TestRisk = "Small" + TestRiskMedium TestRisk = "Medium" + TestRiskHigh TestRisk = "High" +) + +// Values returns all known values for TestRisk. Note that this can be expanded in +// the future, and so it is only as up to date as the client. The ordering of this +// slice is not guaranteed to be stable across updates. +func (TestRisk) Values() []TestRisk { + return []TestRisk{ + "Small", + "Medium", + "High", + } +} + +type TestType string + +// Enum values for TestType +const ( + TestTypeSoftware TestType = "Software" + TestTypeHardware TestType = "Hardware" + TestTypeAz TestType = "AZ" + TestTypeRegion TestType = "Region" +) + +// Values returns all known values for TestType. Note that this can be expanded in +// the future, and so it is only as up to date as the client. The ordering of this +// slice is not guaranteed to be stable across updates. +func (TestType) Values() []TestType { + return []TestType{ + "Software", + "Hardware", + "AZ", + "Region", + } +} diff --git a/service/resiliencehub/types/errors.go b/service/resiliencehub/types/errors.go new file mode 100644 index 00000000000..059d0922f9b --- /dev/null +++ b/service/resiliencehub/types/errors.go @@ -0,0 +1,157 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + "fmt" + smithy "github.com/aws/smithy-go" +) + +// You don't have permissions to perform the requested operation. The user or role +// that is making the request must have at least one IAM permissions policy +// attached that grants the required permissions. +type AccessDeniedException struct { + Message *string + + noSmithyDocumentSerde +} + +func (e *AccessDeniedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *AccessDeniedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *AccessDeniedException) ErrorCode() string { return "AccessDeniedException" } +func (e *AccessDeniedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// Occurs when a conflict with a previous successful write is detected. This +// generally occurs when the previous write did not have time to propagate to the +// host serving the current request. A retry (with appropriate backoff logic) is +// the recommended response to this exception. +type ConflictException struct { + Message *string + + ResourceId *string + ResourceType *string + + noSmithyDocumentSerde +} + +func (e *ConflictException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ConflictException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ConflictException) ErrorCode() string { return "ConflictException" } +func (e *ConflictException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// This exception occurs when there is an internal failure in the AWS Resilience +// Hub service. +type InternalServerException struct { + Message *string + + noSmithyDocumentSerde +} + +func (e *InternalServerException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *InternalServerException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *InternalServerException) ErrorCode() string { return "InternalServerException" } +func (e *InternalServerException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } + +// The specified resource could not be found. +type ResourceNotFoundException struct { + Message *string + + ResourceId *string + ResourceType *string + + noSmithyDocumentSerde +} + +func (e *ResourceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ResourceNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ResourceNotFoundException) ErrorCode() string { return "ResourceNotFoundException" } +func (e *ResourceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// You have exceeded your service quota. To perform the requested action, remove +// some of the relevant resources, or use Service Quotas to request a service quota +// increase. +type ServiceQuotaExceededException struct { + Message *string + + noSmithyDocumentSerde +} + +func (e *ServiceQuotaExceededException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ServiceQuotaExceededException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ServiceQuotaExceededException) ErrorCode() string { return "ServiceQuotaExceededException" } +func (e *ServiceQuotaExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The limit on the number of requests per second was exceeded. +type ThrottlingException struct { + Message *string + + RetryAfterSeconds *int32 + + noSmithyDocumentSerde +} + +func (e *ThrottlingException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ThrottlingException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ThrottlingException) ErrorCode() string { return "ThrottlingException" } +func (e *ThrottlingException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// Indicates that a request was not valid. +type ValidationException struct { + Message *string + + noSmithyDocumentSerde +} + +func (e *ValidationException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ValidationException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ValidationException) ErrorCode() string { return "ValidationException" } +func (e *ValidationException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/service/resiliencehub/types/types.go b/service/resiliencehub/types/types.go new file mode 100644 index 00000000000..2c06daae67d --- /dev/null +++ b/service/resiliencehub/types/types.go @@ -0,0 +1,836 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + smithydocument "github.com/aws/smithy-go/document" + "time" +) + +// Defines a recommendation for a CloudWatch alarm. +type AlarmRecommendation struct { + + // The name of the alarm recommendation. + // + // This member is required. + Name *string + + // The identifier of the alarm recommendation. + // + // This member is required. + RecommendationId *string + + // The reference identifier of the alarm recommendation. + // + // This member is required. + ReferenceId *string + + // The type of alarm recommendation. + // + // This member is required. + Type AlarmType + + // The application component for the CloudWatch alarm recommendation. + AppComponentName *string + + // The description of the recommendation. + Description *string + + // The list of CloudWatch alarm recommendations. + Items []RecommendationItem + + // The prerequisite for the alarm recommendation. + Prerequisite *string + + noSmithyDocumentSerde +} + +// Defines a Resilience Hub application. +type App struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The timestamp for when the app was created. + // + // This member is required. + CreationTime *time.Time + + // The name for the application. + // + // This member is required. + Name *string + + // The current status of compliance for the resiliency policy. + ComplianceStatus AppComplianceStatusType + + // The optional description for an app. + Description *string + + // The timestamp for the most recent compliance evaluation. + LastAppComplianceEvaluationTime *time.Time + + // The timestamp for the most recent resiliency score evaluation. + LastResiliencyScoreEvaluationTime *time.Time + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + PolicyArn *string + + // The current resiliency score for the application. + ResiliencyScore float64 + + // The status of the action. + Status AppStatusType + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +// Defines an application assessment. +type AppAssessment struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The current status of the assessment for the resiliency policy. + // + // This member is required. + AssessmentStatus AssessmentStatus + + // The entity that invoked the assessment. + // + // This member is required. + Invoker AssessmentInvoker + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The version of the application. + AppVersion *string + + // The name of the assessment. + AssessmentName *string + + // The application compliance against the resiliency policy. + Compliance map[string]DisruptionCompliance + + // The current status of the compliance for the resiliency policy. + ComplianceStatus ComplianceStatus + + // The cost for the application. + Cost *Cost + + // The end time for the action. + EndTime *time.Time + + // Error or warning message from the assessment execution + Message *string + + // The resiliency policy. + Policy *ResiliencyPolicy + + // The current resiliency score for the application. + ResiliencyScore *ResiliencyScore + + // The starting time for the action. + StartTime *time.Time + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + noSmithyDocumentSerde +} + +// Defines an application assessment summary. +type AppAssessmentSummary struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The current status of the assessment for the resiliency policy. + // + // This member is required. + AssessmentStatus AssessmentStatus + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The version of the application. + AppVersion *string + + // The name of the assessment. + AssessmentName *string + + // The current status of compliance for the resiliency policy. + ComplianceStatus ComplianceStatus + + // The cost for the application. + Cost *Cost + + // The end time for the action. + EndTime *time.Time + + // The entity that invoked the assessment. + Invoker AssessmentInvoker + + // The message from the assessment run. + Message *string + + // The current resiliency score for the application. + ResiliencyScore float64 + + // The starting time for the action. + StartTime *time.Time + + noSmithyDocumentSerde +} + +// Defines an application component. +type AppComponent struct { + + // The name of the application component. + // + // This member is required. + Name *string + + // The type of application component. + // + // This member is required. + Type *string + + noSmithyDocumentSerde +} + +// Defines the compliance of an application component against the resiliency +// policy. +type AppComponentCompliance struct { + + // The name of the application component. + AppComponentName *string + + // The compliance of the application component against the resiliency policy. + Compliance map[string]DisruptionCompliance + + // The cost for the application. + Cost *Cost + + // The compliance message. + Message *string + + // The current resiliency score for the application. + ResiliencyScore *ResiliencyScore + + // The status of the action. + Status ComplianceStatus + + noSmithyDocumentSerde +} + +// Defines an application summary. +type AppSummary struct { + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AppArn *string + + // The timestamp for when the app was created. + // + // This member is required. + CreationTime *time.Time + + // The name of the application. + // + // This member is required. + Name *string + + // The current status of compliance for the resiliency policy. + ComplianceStatus AppComplianceStatusType + + // The optional description for an app. + Description *string + + // The current resiliency score for the application. + ResiliencyScore float64 + + noSmithyDocumentSerde +} + +// The version of the application. +type AppVersionSummary struct { + + // The version of the application. + // + // This member is required. + AppVersion *string + + noSmithyDocumentSerde +} + +// Defines recommendations for a Resilience Hub application component, returned as +// an object. This object contains component names, configuration recommendations, +// and recommendation statuses. +type ComponentRecommendation struct { + + // The name of the application component. + // + // This member is required. + AppComponentName *string + + // The list of recommendations. + // + // This member is required. + ConfigRecommendations []ConfigRecommendation + + // The recommendation status. + // + // This member is required. + RecommendationStatus RecommendationComplianceStatus + + noSmithyDocumentSerde +} + +// Defines a configuration recommendation. +type ConfigRecommendation struct { + + // The name of the recommendation configuration. + // + // This member is required. + Name *string + + // The type of optimization. + // + // This member is required. + OptimizationType ConfigRecommendationOptimizationType + + // The reference identifier for the recommendation configuration. + // + // This member is required. + ReferenceId *string + + // The application component name. + AppComponentName *string + + // The current compliance against the resiliency policy before applying the + // configuration change. + Compliance map[string]DisruptionCompliance + + // The cost for the application. + Cost *Cost + + // The optional description for an app. + Description *string + + // The architecture type. + HaArchitecture HaArchitecture + + // The expected compliance against the resiliency policy after applying the + // configuration change. + RecommendationCompliance map[string]RecommendationDisruptionCompliance + + // List of the suggested configuration changes. + SuggestedChanges []string + + noSmithyDocumentSerde +} + +// Defines a cost object. +type Cost struct { + + // The cost amount. + // + // This member is required. + Amount float64 + + // The cost currency, for example USD. + // + // This member is required. + Currency *string + + // The cost frequency. + // + // This member is required. + Frequency CostFrequency + + noSmithyDocumentSerde +} + +// Defines the compliance against the resiliency policy for a disruption. +type DisruptionCompliance struct { + + // The current status of compliance for the resiliency policy. + // + // This member is required. + ComplianceStatus ComplianceStatus + + // The Recovery Point Objective (RPO) that is achievable, in seconds. + AchievableRpoInSecs int32 + + // The Recovery Time Objective (RTO) that is achievable, in seconds + AchievableRtoInSecs int32 + + // The current RPO, in seconds. + CurrentRpoInSecs int32 + + // The current RTO, in seconds. + CurrentRtoInSecs int32 + + // The disruption compliance message. + Message *string + + // The RPO description. + RpoDescription *string + + // The RPO reference identifier. + RpoReferenceId *string + + // The RTO description. + RtoDescription *string + + // The RTO reference identifier. + RtoReferenceId *string + + noSmithyDocumentSerde +} + +// Defines a failure policy. +type FailurePolicy struct { + + // The Recovery Point Objective (RPO), in seconds. + // + // This member is required. + RpoInSecs int32 + + // The Recovery Time Objective (RTO), in seconds. + // + // This member is required. + RtoInSecs int32 + + noSmithyDocumentSerde +} + +// Defines a logical resource identifier. +type LogicalResourceId struct { + + // The identifier of the resource. + // + // This member is required. + Identifier *string + + // The name of the CloudFormation stack this resource belongs to. + LogicalStackName *string + + // The name of the resource group that this resource belongs to. + ResourceGroupName *string + + noSmithyDocumentSerde +} + +// Defines a physical resource. A physical resource is a resource that exists in +// your account. It can be identified using an Amazon Resource Name (ARN) or a +// Resilience Hub-native identifier. +type PhysicalResource struct { + + // The logical identifier of the resource. + // + // This member is required. + LogicalResourceId *LogicalResourceId + + // The physical identifier of the resource. + // + // This member is required. + PhysicalResourceId *PhysicalResourceId + + // The type of resource. + // + // This member is required. + ResourceType *string + + // The application components that belong to this resource. + AppComponents []AppComponent + + // The name of the resource. + ResourceName *string + + noSmithyDocumentSerde +} + +// Defines a physical resource identifier. +type PhysicalResourceId struct { + + // The identifier of the physical resource. + // + // This member is required. + Identifier *string + + // Specifies the type of physical resource identifier. Arn The resource identifier + // is an Amazon Resource Name (ARN) . Native The resource identifier is a + // Resilience Hub-native identifier. + // + // This member is required. + Type PhysicalIdentifierType + + // The Amazon Web Services account that owns the physical resource. + AwsAccountId *string + + // The Amazon Web Services Region that the physical resource is located in. + AwsRegion *string + + noSmithyDocumentSerde +} + +// Defines a disruption compliance recommendation. +type RecommendationDisruptionCompliance struct { + + // The expected compliance status after applying the recommended configuration + // change. + // + // This member is required. + ExpectedComplianceStatus ComplianceStatus + + // The expected Recovery Point Objective (RPO) description after applying the + // recommended configuration change. + ExpectedRpoDescription *string + + // The expected RPO after applying the recommended configuration change. + ExpectedRpoInSecs int32 + + // The expected Recovery Time Objective (RTO) description after applying the + // recommended configuration change. + ExpectedRtoDescription *string + + // The expected RTO after applying the recommended configuration change. + ExpectedRtoInSecs int32 + + noSmithyDocumentSerde +} + +// Defines a recommendation. +type RecommendationItem struct { + + // Specifies if the recommendation has already been implemented. + AlreadyImplemented *bool + + // The resource identifier. + ResourceId *string + + // The target account identifier. + TargetAccountId *string + + // The target region. + TargetRegion *string + + noSmithyDocumentSerde +} + +// Defines a recommendation template created with the CreateRecommendationTemplate +// action. +type RecommendationTemplate struct { + + // The Amazon Resource Name (ARN) of the assessment. The format for this ARN is: + // arn:partition:dcps:region:account:app-assessment/app-id. For more information + // about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + // + // This member is required. + AssessmentArn *string + + // The format of the recommendation template. CfnJson The template is + // CloudFormation JSON. CfnYaml The template is CloudFormation YAML. + // + // This member is required. + Format TemplateFormat + + // The name for the recommendation template. + // + // This member is required. + Name *string + + // The Amazon Resource Name (ARN) for the recommendation template. + // + // This member is required. + RecommendationTemplateArn *string + + // An array of strings that specify the recommendation template type or types. + // Alarm The template is an AlarmRecommendation template. Sop The template is a + // SopRecommendation template. Test The template is a TestRecommendation template. + // + // This member is required. + RecommendationTypes []RenderRecommendationType + + // The status of the action. + // + // This member is required. + Status RecommendationTemplateStatus + + // The Amazon Resource Name (ARN) of the application. The format for this ARN is: + // arn:partition:dcps:region:account:app/app-id. For more information about ARNs, + // see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + AppArn *string + + // The end time for the action. + EndTime *time.Time + + // The message for the recommendation template. + Message *string + + // Indicates if replacements are needed. + NeedsReplacements *bool + + // Identifiers for the recommendations used in the recommendation template. + RecommendationIds []string + + // The start time for the action. + StartTime *time.Time + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + // The file location of the template. + TemplatesLocation *S3Location + + noSmithyDocumentSerde +} + +// Defines a resiliency policy. +type ResiliencyPolicy struct { + + // The timestamp for when the resiliency policy was created. + CreationTime *time.Time + + // Specifies a high-level geographical location constraint for where your + // resilience policy data can be stored. + DataLocationConstraint DataLocationConstraint + + // Specifies the estimated cost tier of the resiliency policy. + EstimatedCostTier EstimatedCostTier + + // The resiliency policy. + Policy map[string]FailurePolicy + + // The Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN + // is: arn:partition:dcps:region:account:resiliency-policy/policy-id. For more + // information about ARNs, see Amazon Resource Names (ARNs) + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the AWS General Reference. + PolicyArn *string + + // The description for the policy. + PolicyDescription *string + + // The name of the policy + PolicyName *string + + // The tags assigned to the resource. A tag is a label that you assign to an Amazon + // Web Services resource. Each tag consists of a key/value pair. + Tags map[string]string + + // The tier for this resiliency policy, ranging from the highest severity + // (MissionCritical) to lowest (NonCritical). + Tier ResiliencyPolicyTier + + noSmithyDocumentSerde +} + +// The overall resiliency score, returned as an object that includes the disruption +// score and outage score. +type ResiliencyScore struct { + + // The disruption score for a valid key. + // + // This member is required. + DisruptionScore map[string]float64 + + // The outage score for a valid key. + // + // This member is required. + Score float64 + + noSmithyDocumentSerde +} + +// Defines a resource mapping. +type ResourceMapping struct { + + // Specifies the type of resource mapping. AppRegistryApp The resource is mapped to + // another application. The name of the application is contained in the + // appRegistryAppName property. CfnStack The resource is mapped to a CloudFormation + // stack. The name of the CloudFormation stack is contained in the logicalStackName + // property. Resource The resource is mapped to another resource. The name of the + // resource is contained in the resourceName property. ResourceGroup The resource + // is mapped to a resource group. The name of the resource group is contained in + // the resourceGroupName property. + // + // This member is required. + MappingType ResourceMappingType + + // The identifier of this resource. + // + // This member is required. + PhysicalResourceId *PhysicalResourceId + + // The name of the application this resource is mapped to. + AppRegistryAppName *string + + // The name of the CloudFormation stack this resource is mapped to. + LogicalStackName *string + + // The name of the resource group this resource is mapped to. + ResourceGroupName *string + + // The name of the resource this resource is mapped to. + ResourceName *string + + noSmithyDocumentSerde +} + +// The location of the Amazon S3 bucket. +type S3Location struct { + + // The name of the Amazon S3 bucket. + Bucket *string + + // The prefix for the Amazon S3 bucket. + Prefix *string + + noSmithyDocumentSerde +} + +// Defines a standard operating procedure (SOP) recommendation. +type SopRecommendation struct { + + // Identifier for the SOP recommendation. + // + // This member is required. + RecommendationId *string + + // The reference identifier for the SOP recommendation. + // + // This member is required. + ReferenceId *string + + // The service type. + // + // This member is required. + ServiceType SopServiceType + + // The application component name. + AppComponentName *string + + // The description of the SOP recommendation. + Description *string + + // The recommendation items. + Items []RecommendationItem + + // The name of the SOP recommendation. + Name *string + + // The prerequisite for the SOP recommendation. + Prerequisite *string + + noSmithyDocumentSerde +} + +// Defines a test recommendation. +type TestRecommendation struct { + + // The reference identifier for the test recommendation. + // + // This member is required. + ReferenceId *string + + // The name of the application component. + AppComponentName *string + + // The description for the test recommendation. + Description *string + + // The intent of the test recommendation. + Intent *string + + // The test recommendation items. + Items []RecommendationItem + + // The name of the test recommendation. + Name *string + + // The prerequisite of the test recommendation. + Prerequisite *string + + // Identifier for the test recommendation. + RecommendationId *string + + // The level of risk for this test recommendation. + Risk TestRisk + + // The type of test recommendation. + Type TestType + + noSmithyDocumentSerde +} + +// Defines a resource that is not supported by Resilience Hub. +type UnsupportedResource struct { + + // The logical resource identifier for the unsupported resource. + // + // This member is required. + LogicalResourceId *LogicalResourceId + + // The physical resource identifier for the unsupported resource. + // + // This member is required. + PhysicalResourceId *PhysicalResourceId + + // The type of resource. + // + // This member is required. + ResourceType *string + + noSmithyDocumentSerde +} + +type noSmithyDocumentSerde = smithydocument.NoSerde diff --git a/service/resiliencehub/validators.go b/service/resiliencehub/validators.go new file mode 100644 index 00000000000..1225e43ca1e --- /dev/null +++ b/service/resiliencehub/validators.go @@ -0,0 +1,1524 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package resiliencehub + +import ( + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/resiliencehub/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/middleware" +) + +type validateOpAddDraftAppVersionResourceMappings struct { +} + +func (*validateOpAddDraftAppVersionResourceMappings) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpAddDraftAppVersionResourceMappings) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*AddDraftAppVersionResourceMappingsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpAddDraftAppVersionResourceMappingsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateApp struct { +} + +func (*validateOpCreateApp) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateAppInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateAppInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateRecommendationTemplate struct { +} + +func (*validateOpCreateRecommendationTemplate) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateRecommendationTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateRecommendationTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateRecommendationTemplateInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateResiliencyPolicy struct { +} + +func (*validateOpCreateResiliencyPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateResiliencyPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteAppAssessment struct { +} + +func (*validateOpDeleteAppAssessment) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteAppAssessment) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteAppAssessmentInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteAppAssessmentInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteApp struct { +} + +func (*validateOpDeleteApp) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteAppInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteAppInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteRecommendationTemplate struct { +} + +func (*validateOpDeleteRecommendationTemplate) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteRecommendationTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteRecommendationTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteRecommendationTemplateInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteResiliencyPolicy struct { +} + +func (*validateOpDeleteResiliencyPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteResiliencyPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeAppAssessment struct { +} + +func (*validateOpDescribeAppAssessment) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeAppAssessment) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeAppAssessmentInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeAppAssessmentInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeApp struct { +} + +func (*validateOpDescribeApp) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeAppInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeAppInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeAppVersionResourcesResolutionStatus struct { +} + +func (*validateOpDescribeAppVersionResourcesResolutionStatus) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeAppVersionResourcesResolutionStatus) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeAppVersionResourcesResolutionStatusInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeAppVersionResourcesResolutionStatusInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeAppVersionTemplate struct { +} + +func (*validateOpDescribeAppVersionTemplate) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeAppVersionTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeAppVersionTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeAppVersionTemplateInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeDraftAppVersionResourcesImportStatus struct { +} + +func (*validateOpDescribeDraftAppVersionResourcesImportStatus) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeDraftAppVersionResourcesImportStatus) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeDraftAppVersionResourcesImportStatusInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeDraftAppVersionResourcesImportStatusInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeResiliencyPolicy struct { +} + +func (*validateOpDescribeResiliencyPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeResiliencyPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpImportResourcesToDraftAppVersion struct { +} + +func (*validateOpImportResourcesToDraftAppVersion) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpImportResourcesToDraftAppVersion) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ImportResourcesToDraftAppVersionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpImportResourcesToDraftAppVersionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAlarmRecommendations struct { +} + +func (*validateOpListAlarmRecommendations) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAlarmRecommendations) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAlarmRecommendationsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAlarmRecommendationsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAppComponentCompliances struct { +} + +func (*validateOpListAppComponentCompliances) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAppComponentCompliances) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAppComponentCompliancesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAppComponentCompliancesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAppComponentRecommendations struct { +} + +func (*validateOpListAppComponentRecommendations) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAppComponentRecommendations) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAppComponentRecommendationsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAppComponentRecommendationsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAppVersionResourceMappings struct { +} + +func (*validateOpListAppVersionResourceMappings) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAppVersionResourceMappings) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAppVersionResourceMappingsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAppVersionResourceMappingsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAppVersionResources struct { +} + +func (*validateOpListAppVersionResources) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAppVersionResources) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAppVersionResourcesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAppVersionResourcesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAppVersions struct { +} + +func (*validateOpListAppVersions) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAppVersions) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAppVersionsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAppVersionsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListRecommendationTemplates struct { +} + +func (*validateOpListRecommendationTemplates) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListRecommendationTemplates) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListRecommendationTemplatesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListRecommendationTemplatesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListSopRecommendations struct { +} + +func (*validateOpListSopRecommendations) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListSopRecommendations) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListSopRecommendationsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListSopRecommendationsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListTagsForResource struct { +} + +func (*validateOpListTagsForResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListTagsForResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListTagsForResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListTagsForResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListTestRecommendations struct { +} + +func (*validateOpListTestRecommendations) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListTestRecommendations) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListTestRecommendationsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListTestRecommendationsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListUnsupportedAppVersionResources struct { +} + +func (*validateOpListUnsupportedAppVersionResources) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListUnsupportedAppVersionResources) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListUnsupportedAppVersionResourcesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListUnsupportedAppVersionResourcesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPublishAppVersion struct { +} + +func (*validateOpPublishAppVersion) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPublishAppVersion) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PublishAppVersionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPublishAppVersionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPutDraftAppVersionTemplate struct { +} + +func (*validateOpPutDraftAppVersionTemplate) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPutDraftAppVersionTemplate) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PutDraftAppVersionTemplateInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPutDraftAppVersionTemplateInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpRemoveDraftAppVersionResourceMappings struct { +} + +func (*validateOpRemoveDraftAppVersionResourceMappings) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpRemoveDraftAppVersionResourceMappings) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*RemoveDraftAppVersionResourceMappingsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpRemoveDraftAppVersionResourceMappingsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpResolveAppVersionResources struct { +} + +func (*validateOpResolveAppVersionResources) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpResolveAppVersionResources) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ResolveAppVersionResourcesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpResolveAppVersionResourcesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartAppAssessment struct { +} + +func (*validateOpStartAppAssessment) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartAppAssessment) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartAppAssessmentInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartAppAssessmentInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpTagResource struct { +} + +func (*validateOpTagResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpTagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*TagResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpTagResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUntagResource struct { +} + +func (*validateOpUntagResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUntagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UntagResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUntagResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateApp struct { +} + +func (*validateOpUpdateApp) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateApp) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateAppInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateAppInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateResiliencyPolicy struct { +} + +func (*validateOpUpdateResiliencyPolicy) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateResiliencyPolicy) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateResiliencyPolicyInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateResiliencyPolicyInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +func addOpAddDraftAppVersionResourceMappingsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpAddDraftAppVersionResourceMappings{}, middleware.After) +} + +func addOpCreateAppValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateApp{}, middleware.After) +} + +func addOpCreateRecommendationTemplateValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateRecommendationTemplate{}, middleware.After) +} + +func addOpCreateResiliencyPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateResiliencyPolicy{}, middleware.After) +} + +func addOpDeleteAppAssessmentValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteAppAssessment{}, middleware.After) +} + +func addOpDeleteAppValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteApp{}, middleware.After) +} + +func addOpDeleteRecommendationTemplateValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteRecommendationTemplate{}, middleware.After) +} + +func addOpDeleteResiliencyPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteResiliencyPolicy{}, middleware.After) +} + +func addOpDescribeAppAssessmentValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeAppAssessment{}, middleware.After) +} + +func addOpDescribeAppValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeApp{}, middleware.After) +} + +func addOpDescribeAppVersionResourcesResolutionStatusValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeAppVersionResourcesResolutionStatus{}, middleware.After) +} + +func addOpDescribeAppVersionTemplateValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeAppVersionTemplate{}, middleware.After) +} + +func addOpDescribeDraftAppVersionResourcesImportStatusValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeDraftAppVersionResourcesImportStatus{}, middleware.After) +} + +func addOpDescribeResiliencyPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeResiliencyPolicy{}, middleware.After) +} + +func addOpImportResourcesToDraftAppVersionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpImportResourcesToDraftAppVersion{}, middleware.After) +} + +func addOpListAlarmRecommendationsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAlarmRecommendations{}, middleware.After) +} + +func addOpListAppComponentCompliancesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAppComponentCompliances{}, middleware.After) +} + +func addOpListAppComponentRecommendationsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAppComponentRecommendations{}, middleware.After) +} + +func addOpListAppVersionResourceMappingsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAppVersionResourceMappings{}, middleware.After) +} + +func addOpListAppVersionResourcesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAppVersionResources{}, middleware.After) +} + +func addOpListAppVersionsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAppVersions{}, middleware.After) +} + +func addOpListRecommendationTemplatesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListRecommendationTemplates{}, middleware.After) +} + +func addOpListSopRecommendationsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListSopRecommendations{}, middleware.After) +} + +func addOpListTagsForResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListTagsForResource{}, middleware.After) +} + +func addOpListTestRecommendationsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListTestRecommendations{}, middleware.After) +} + +func addOpListUnsupportedAppVersionResourcesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListUnsupportedAppVersionResources{}, middleware.After) +} + +func addOpPublishAppVersionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPublishAppVersion{}, middleware.After) +} + +func addOpPutDraftAppVersionTemplateValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPutDraftAppVersionTemplate{}, middleware.After) +} + +func addOpRemoveDraftAppVersionResourceMappingsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpRemoveDraftAppVersionResourceMappings{}, middleware.After) +} + +func addOpResolveAppVersionResourcesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpResolveAppVersionResources{}, middleware.After) +} + +func addOpStartAppAssessmentValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartAppAssessment{}, middleware.After) +} + +func addOpTagResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpTagResource{}, middleware.After) +} + +func addOpUntagResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUntagResource{}, middleware.After) +} + +func addOpUpdateAppValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateApp{}, middleware.After) +} + +func addOpUpdateResiliencyPolicyValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateResiliencyPolicy{}, middleware.After) +} + +func validateDisruptionPolicy(v map[string]types.FailurePolicy) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DisruptionPolicy"} + for key := range v { + value := v[key] + if err := validateFailurePolicy(&value); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%q]", key), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateFailurePolicy(v *types.FailurePolicy) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "FailurePolicy"} + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validatePhysicalResourceId(v *types.PhysicalResourceId) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PhysicalResourceId"} + if v.Identifier == nil { + invalidParams.Add(smithy.NewErrParamRequired("Identifier")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateResourceMapping(v *types.ResourceMapping) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ResourceMapping"} + if len(v.MappingType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("MappingType")) + } + if v.PhysicalResourceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("PhysicalResourceId")) + } else if v.PhysicalResourceId != nil { + if err := validatePhysicalResourceId(v.PhysicalResourceId); err != nil { + invalidParams.AddNested("PhysicalResourceId", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateResourceMappingList(v []types.ResourceMapping) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ResourceMappingList"} + for i := range v { + if err := validateResourceMapping(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpAddDraftAppVersionResourceMappingsInput(v *AddDraftAppVersionResourceMappingsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AddDraftAppVersionResourceMappingsInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.ResourceMappings == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceMappings")) + } else if v.ResourceMappings != nil { + if err := validateResourceMappingList(v.ResourceMappings); err != nil { + invalidParams.AddNested("ResourceMappings", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateAppInput(v *CreateAppInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateAppInput"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateRecommendationTemplateInput(v *CreateRecommendationTemplateInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateRecommendationTemplateInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateResiliencyPolicyInput(v *CreateResiliencyPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateResiliencyPolicyInput"} + if v.PolicyName == nil { + invalidParams.Add(smithy.NewErrParamRequired("PolicyName")) + } + if len(v.Tier) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Tier")) + } + if v.Policy == nil { + invalidParams.Add(smithy.NewErrParamRequired("Policy")) + } else if v.Policy != nil { + if err := validateDisruptionPolicy(v.Policy); err != nil { + invalidParams.AddNested("Policy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteAppAssessmentInput(v *DeleteAppAssessmentInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteAppAssessmentInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteAppInput(v *DeleteAppInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteAppInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteRecommendationTemplateInput(v *DeleteRecommendationTemplateInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteRecommendationTemplateInput"} + if v.RecommendationTemplateArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("RecommendationTemplateArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteResiliencyPolicyInput(v *DeleteResiliencyPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteResiliencyPolicyInput"} + if v.PolicyArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("PolicyArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeAppAssessmentInput(v *DescribeAppAssessmentInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeAppAssessmentInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeAppInput(v *DescribeAppInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeAppInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeAppVersionResourcesResolutionStatusInput(v *DescribeAppVersionResourcesResolutionStatusInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeAppVersionResourcesResolutionStatusInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeAppVersionTemplateInput(v *DescribeAppVersionTemplateInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeAppVersionTemplateInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeDraftAppVersionResourcesImportStatusInput(v *DescribeDraftAppVersionResourcesImportStatusInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeDraftAppVersionResourcesImportStatusInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeResiliencyPolicyInput(v *DescribeResiliencyPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeResiliencyPolicyInput"} + if v.PolicyArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("PolicyArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpImportResourcesToDraftAppVersionInput(v *ImportResourcesToDraftAppVersionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ImportResourcesToDraftAppVersionInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.SourceArns == nil { + invalidParams.Add(smithy.NewErrParamRequired("SourceArns")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAlarmRecommendationsInput(v *ListAlarmRecommendationsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAlarmRecommendationsInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAppComponentCompliancesInput(v *ListAppComponentCompliancesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAppComponentCompliancesInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAppComponentRecommendationsInput(v *ListAppComponentRecommendationsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAppComponentRecommendationsInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAppVersionResourceMappingsInput(v *ListAppVersionResourceMappingsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAppVersionResourceMappingsInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAppVersionResourcesInput(v *ListAppVersionResourcesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAppVersionResourcesInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAppVersionsInput(v *ListAppVersionsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAppVersionsInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListRecommendationTemplatesInput(v *ListRecommendationTemplatesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListRecommendationTemplatesInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListSopRecommendationsInput(v *ListSopRecommendationsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListSopRecommendationsInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListTagsForResourceInput(v *ListTagsForResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListTagsForResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListTestRecommendationsInput(v *ListTestRecommendationsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListTestRecommendationsInput"} + if v.AssessmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListUnsupportedAppVersionResourcesInput(v *ListUnsupportedAppVersionResourcesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListUnsupportedAppVersionResourcesInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPublishAppVersionInput(v *PublishAppVersionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PublishAppVersionInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPutDraftAppVersionTemplateInput(v *PutDraftAppVersionTemplateInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PutDraftAppVersionTemplateInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppTemplateBody == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppTemplateBody")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpRemoveDraftAppVersionResourceMappingsInput(v *RemoveDraftAppVersionResourceMappingsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "RemoveDraftAppVersionResourceMappingsInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpResolveAppVersionResourcesInput(v *ResolveAppVersionResourcesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ResolveAppVersionResourcesInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartAppAssessmentInput(v *StartAppAssessmentInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartAppAssessmentInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if v.AppVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppVersion")) + } + if v.AssessmentName == nil { + invalidParams.Add(smithy.NewErrParamRequired("AssessmentName")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpTagResourceInput(v *TagResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TagResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if v.Tags == nil { + invalidParams.Add(smithy.NewErrParamRequired("Tags")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUntagResourceInput(v *UntagResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UntagResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if v.TagKeys == nil { + invalidParams.Add(smithy.NewErrParamRequired("TagKeys")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateAppInput(v *UpdateAppInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateAppInput"} + if v.AppArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AppArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateResiliencyPolicyInput(v *UpdateResiliencyPolicyInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateResiliencyPolicyInput"} + if v.PolicyArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("PolicyArn")) + } + if v.Policy != nil { + if err := validateDisruptionPolicy(v.Policy); err != nil { + invalidParams.AddNested("Policy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} diff --git a/service/resourcegroupstaggingapi/api_op_GetComplianceSummary.go b/service/resourcegroupstaggingapi/api_op_GetComplianceSummary.go index acec0e9ebe0..1927d1a1d56 100644 --- a/service/resourcegroupstaggingapi/api_op_GetComplianceSummary.go +++ b/service/resourcegroupstaggingapi/api_op_GetComplianceSummary.go @@ -15,7 +15,7 @@ import ( // Returns a table that shows counts of resources that are noncompliant with their // tag policies. For more information on tag policies, see Tag Policies // (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) -// in the AWS Organizations User Guide. You can call this operation only from the +// in the Organizations User Guide. You can call this operation only from the // organization's management account and from the us-east-1 Region. This operation // supports pagination, where the response can be sent in multiple pages. You // should check the PaginationToken response parameter to determine if there are @@ -55,9 +55,9 @@ type GetComplianceSummaryInput struct { // initial request. PaginationToken *string - // Specifies a list of AWS Regions to limit the output by. If you use this - // parameter, the count of returned noncompliant resources includes only resources - // in the specified Regions. + // Specifies a list of Amazon Web Services Regions to limit the output to. If you + // use this parameter, the count of returned noncompliant resources includes only + // resources in the specified Regions. RegionFilters []string // Specifies that you want the response to include information for only resources @@ -66,10 +66,11 @@ type GetComplianceSummaryInput struct { // all Amazon EC2 resources (which includes EC2 instances). Specifying a resource // type of ec2:instance returns only EC2 instances. The string for each service // name and resource type is the same as that embedded in a resource's Amazon - // Resource Name (ARN). Consult the AWS General Reference for the following: + // Resource Name (ARN). Consult the Amazon Web Services General Reference + // (https://docs.aws.amazon.com/general/latest/gr/) for the following: // - // * For - // a list of service name strings, see AWS Service Namespaces + // * For a + // list of service name strings, see Amazon Web Services Service Namespaces // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces). // // * @@ -77,8 +78,8 @@ type GetComplianceSummaryInput struct { // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax). // // * - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces + // For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web + // Services Service Namespaces // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). // // You diff --git a/service/resourcegroupstaggingapi/api_op_GetResources.go b/service/resourcegroupstaggingapi/api_op_GetResources.go index 1dbf1305c58..64b15c00fad 100644 --- a/service/resourcegroupstaggingapi/api_op_GetResources.go +++ b/service/resourcegroupstaggingapi/api_op_GetResources.go @@ -13,21 +13,21 @@ import ( ) // Returns all the tagged or previously tagged resources that are located in the -// specified Region for the AWS account. Depending on what information you want -// returned, you can also specify the following: +// specified Amazon Web Services Region for the account. Depending on what +// information you want returned, you can also specify the following: // -// * Filters that specify what tags -// and resource types you want returned. The response includes all tags that are -// associated with the requested resources. +// * Filters +// that specify what tags and resource types you want returned. The response +// includes all tags that are associated with the requested resources. // -// * Information about compliance with -// the account's effective tag policy. For more information on tag policies, see -// Tag Policies +// * +// Information about compliance with the account's effective tag policy. For more +// information on tag policies, see Tag Policies // (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) -// in the AWS Organizations User Guide. +// in the Organizations User Guide. // -// This operation supports pagination, where -// the response can be sent in multiple pages. You should check the PaginationToken +// This operation supports pagination, where the +// response can be sent in multiple pages. You should check the PaginationToken // response parameter to determine if there are additional results available to // return. Repeat the query, passing the PaginationToken response parameter value // as an input to the next request until you recieve a null value. A null value for @@ -71,10 +71,10 @@ type GetResourcesInput struct { // specify both, you get an Invalid Parameter exception. If a resource specified by // this parameter doesn't exist, it doesn't generate an error; it simply isn't // included in the response. An ARN (Amazon Resource Name) uniquely identifies a - // resource. For more information, see Amazon Resource Names (ARNs) and AWS Service - // Namespaces - // (http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the AWS General Reference. + // resource. For more information, see Amazon Resource Names (ARNs) and Amazon Web + // Services Service Namespaces + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the Amazon Web Services General Reference. ResourceARNList []string // Specifies the resource types that you want included in the response. The format @@ -82,13 +82,15 @@ type GetResourcesInput struct { // resource type of ec2 returns all Amazon EC2 resources (which includes EC2 // instances). Specifying a resource type of ec2:instance returns only EC2 // instances. The string for each service name and resource type is the same as - // that embedded in a resource's Amazon Resource Name (ARN). Consult the AWS - // General Reference for the following: For more information about ARNs, see Amazon - // Resource Names (ARNs) and AWS Service Namespaces - // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). + // that embedded in a resource's Amazon Resource Name (ARN). For the list of + // services whose resources you can use in this parameter, see Services that + // support the Resource Groups Tagging API + // (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/supported-services.html). // You can specify multiple resource types by using an array. The array can include // up to 100 items. Note that the length constraint requirement applies to each - // resource type filter. + // resource type filter. For example, the following string would limit the response + // to only Amazon EC2 instances, Amazon S3 buckets, or any Audit Manager resource: + // ec2:instance,s3:bucket,auditmanager ResourceTypeFilters []string // Specifies the maximum number of results to be returned in each page. A query can @@ -98,26 +100,26 @@ type GetResourcesInput struct { ResourcesPerPage *int32 // Specifies a list of TagFilters (keys and values) to restrict the output to only - // those resources that have the specified tag and, if included, the specified - // value. Each TagFilter must contain a key with values optional. A request can - // include up to 50 keys, and each key can include up to 20 values. Note the - // following when deciding how to use TagFilters: + // those resources that have tags with the specified keys and, if included, the + // specified values. Each TagFilter must contain a key with values optional. A + // request can include up to 50 keys, and each key can include up to 20 values. + // Note the following when deciding how to use TagFilters: // - // * If you don't specify a - // TagFilter, the response includes all resources that are currently tagged or ever - // had a tag. Resources that currently don't have tags are shown with an empty tag - // set, like this: "Tags": []. + // * If you don't specify + // a TagFilter, the response includes all resources that are currently tagged or + // ever had a tag. Resources that currently don't have tags are shown with an empty + // tag set, like this: "Tags": []. // - // * If you specify more than one filter in a single - // request, the response returns only those resources that satisfy all filters. + // * If you specify more than one filter in a + // single request, the response returns only those resources that satisfy all + // filters. // - // * - // If you specify a filter that contains more than one value for a key, the - // response returns resources that match any of the specified values for that + // * If you specify a filter that contains more than one value for a key, + // the response returns resources that match any of the specified values for that // key. // - // * If you don't specify any values for a key, the response returns - // resources that are tagged with that key and any or no value. For example, for + // * If you don't specify a value for a key, the response returns all + // resources that are tagged with that key, with any or no value. For example, for // the following filters: filter1= {keyA,{value1}}, // filter2={keyB,{value2,value3,value4}}, filter3= {keyC}: // @@ -137,19 +139,20 @@ type GetResourcesInput struct { // no value) TagFilters []types.TagFilter - // AWS recommends using ResourcesPerPage instead of this parameter. A limit that - // restricts the number of tags (key and value pairs) returned by GetResources in - // paginated output. A resource with no tags is counted as having one tag (one key - // and value pair). GetResources does not split a resource and its associated tags - // across pages. If the specified TagsPerPage would cause such a break, a - // PaginationToken is returned in place of the affected resource and its tags. Use - // that token in another request to get the remaining data. For example, if you - // specify a TagsPerPage of 100 and the account has 22 resources with 10 tags each - // (meaning that each resource has 10 key and value pairs), the output will consist - // of three pages. The first page displays the first 10 resources, each with its 10 - // tags. The second page displays the next 10 resources, each with its 10 tags. The - // third page displays the remaining 2 resources, each with its 10 tags. You can - // set TagsPerPage to a minimum of 100 items up to a maximum of 500 items. + // Amazon Web Services recommends using ResourcesPerPage instead of this parameter. + // A limit that restricts the number of tags (key and value pairs) returned by + // GetResources in paginated output. A resource with no tags is counted as having + // one tag (one key and value pair). GetResources does not split a resource and its + // associated tags across pages. If the specified TagsPerPage would cause such a + // break, a PaginationToken is returned in place of the affected resource and its + // tags. Use that token in another request to get the remaining data. For example, + // if you specify a TagsPerPage of 100 and the account has 22 resources with 10 + // tags each (meaning that each resource has 10 key and value pairs), the output + // will consist of three pages. The first page displays the first 10 resources, + // each with its 10 tags. The second page displays the next 10 resources, each with + // its 10 tags. The third page displays the remaining 2 resources, each with its 10 + // tags. You can set TagsPerPage to a minimum of 100 items up to a maximum of 500 + // items. TagsPerPage *int32 noSmithyDocumentSerde @@ -162,8 +165,7 @@ type GetResourcesOutput struct { // as the PaginationToken value in the request for the next page. PaginationToken *string - // A list of resource ARNs and the tags (keys and values) associated with those - // ARNs. + // A list of resource ARNs and the tags (keys and values) associated with each. ResourceTagMappingList []types.ResourceTagMapping // Metadata pertaining to the operation's result. diff --git a/service/resourcegroupstaggingapi/api_op_GetTagKeys.go b/service/resourcegroupstaggingapi/api_op_GetTagKeys.go index 202eef120b0..4ed184cfb0d 100644 --- a/service/resourcegroupstaggingapi/api_op_GetTagKeys.go +++ b/service/resourcegroupstaggingapi/api_op_GetTagKeys.go @@ -11,13 +11,13 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns all tag keys currently in use in the specified Region for the calling -// AWS account. This operation supports pagination, where the response can be sent -// in multiple pages. You should check the PaginationToken response parameter to -// determine if there are additional results available to return. Repeat the query, -// passing the PaginationToken response parameter value as an input to the next -// request until you recieve a null value. A null value for PaginationToken -// indicates that there are no more results waiting to be returned. +// Returns all tag keys currently in use in the specified Amazon Web Services +// Region for the calling account. This operation supports pagination, where the +// response can be sent in multiple pages. You should check the PaginationToken +// response parameter to determine if there are additional results available to +// return. Repeat the query, passing the PaginationToken response parameter value +// as an input to the next request until you recieve a null value. A null value for +// PaginationToken indicates that there are no more results waiting to be returned. func (c *Client) GetTagKeys(ctx context.Context, params *GetTagKeysInput, optFns ...func(*Options)) (*GetTagKeysOutput, error) { if params == nil { params = &GetTagKeysInput{} @@ -50,7 +50,7 @@ type GetTagKeysOutput struct { // as the PaginationToken value in the request for the next page. PaginationToken *string - // A list of all tag keys in the AWS account. + // A list of all tag keys in the Amazon Web Services account. TagKeys []string // Metadata pertaining to the operation's result. diff --git a/service/resourcegroupstaggingapi/api_op_GetTagValues.go b/service/resourcegroupstaggingapi/api_op_GetTagValues.go index 4befa5de587..2101f28484b 100644 --- a/service/resourcegroupstaggingapi/api_op_GetTagValues.go +++ b/service/resourcegroupstaggingapi/api_op_GetTagValues.go @@ -11,13 +11,14 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Returns all tag values for the specified key that are used in the specified AWS -// Region for the calling AWS account. This operation supports pagination, where -// the response can be sent in multiple pages. You should check the PaginationToken -// response parameter to determine if there are additional results available to -// return. Repeat the query, passing the PaginationToken response parameter value -// as an input to the next request until you recieve a null value. A null value for -// PaginationToken indicates that there are no more results waiting to be returned. +// Returns all tag values for the specified key that are used in the specified +// Amazon Web Services Region for the calling account. This operation supports +// pagination, where the response can be sent in multiple pages. You should check +// the PaginationToken response parameter to determine if there are additional +// results available to return. Repeat the query, passing the PaginationToken +// response parameter value as an input to the next request until you recieve a +// null value. A null value for PaginationToken indicates that there are no more +// results waiting to be returned. func (c *Client) GetTagValues(ctx context.Context, params *GetTagValuesInput, optFns ...func(*Options)) (*GetTagValuesOutput, error) { if params == nil { params = &GetTagValuesInput{} @@ -36,7 +37,8 @@ func (c *Client) GetTagValues(ctx context.Context, params *GetTagValuesInput, op type GetTagValuesInput struct { // Specifies the tag key for which you want to list all existing values that are - // currently used in the specified AWS Region for the calling AWS account. + // currently used in the specified Amazon Web Services Region for the calling + // account. // // This member is required. Key *string @@ -57,7 +59,7 @@ type GetTagValuesOutput struct { PaginationToken *string // A list of all tag values for the specified key currently used in the specified - // AWS Region for the calling AWS account. + // Amazon Web Services Region for the calling account. TagValues []string // Metadata pertaining to the operation's result. diff --git a/service/resourcegroupstaggingapi/api_op_TagResources.go b/service/resourcegroupstaggingapi/api_op_TagResources.go index 115adfea56f..982ff5b946c 100644 --- a/service/resourcegroupstaggingapi/api_op_TagResources.go +++ b/service/resourcegroupstaggingapi/api_op_TagResources.go @@ -18,25 +18,37 @@ import ( // tagging using this operation, see Services that support the Resource Groups // Tagging API // (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/supported-services.html). +// If the resource doesn't yet support this operation, the resource's service might +// support tagging using its own API operations. For more information, refer to the +// documentation for that service. // -// * -// Each resource can have up to 50 tags. For other limits, see Tag Naming and Usage -// Conventions +// * Each resource can have up to 50 tags. For +// other limits, see Tag Naming and Usage Conventions // (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html#tag-conventions) -// in the AWS General Reference. +// in the Amazon Web Services General Reference. +// +// * You can only tag resources that +// are located in the specified Amazon Web Services Region for the Amazon Web +// Services account. // -// * You can only tag resources that are located in -// the specified AWS Region for the AWS account. +// * To add tags to a resource, you need the necessary +// permissions for the service that the resource belongs to as well as permissions +// for adding tags. For more information, see the documentation for each +// service. // -// * To add tags to a resource, you -// need the necessary permissions for the service that the resource belongs to as -// well as permissions for adding tags. For more information, see the documentation -// for each service. +// Do not store personally identifiable information (PII) or other +// confidential or sensitive information in tags. We use tags to provide you with +// billing and administration services. Tags are not intended to be used for +// private or sensitive data. Minimum permissions In addition to the +// tag:TagResources permission required by this operation, you must also have the +// tagging permission defined by the service that created the resource. For +// example, to tag an Amazon EC2 instance using the TagResources operation, you +// must have both of the following permissions: // -// Do not store personally identifiable information (PII) or -// other confidential or sensitive information in tags. We use tags to provide you -// with billing and administration services. Tags are not intended to be used for -// private or sensitive data. +// * tag:TagResource +// +// * +// ec2:CreateTags func (c *Client) TagResources(ctx context.Context, params *TagResourcesInput, optFns ...func(*Options)) (*TagResourcesOutput, error) { if params == nil { params = &TagResourcesInput{} @@ -56,9 +68,9 @@ type TagResourcesInput struct { // Specifies the list of ARNs of the resources that you want to apply tags to. An // ARN (Amazon Resource Name) uniquely identifies a resource. For more information, - // see Amazon Resource Names (ARNs) and AWS Service Namespaces - // (http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the AWS General Reference. + // see Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the Amazon Web Services General Reference. // // This member is required. ResourceARNList []string diff --git a/service/resourcegroupstaggingapi/api_op_UntagResources.go b/service/resourcegroupstaggingapi/api_op_UntagResources.go index 47a368fbd2c..0ce1d7b3947 100644 --- a/service/resourcegroupstaggingapi/api_op_UntagResources.go +++ b/service/resourcegroupstaggingapi/api_op_UntagResources.go @@ -22,7 +22,19 @@ import ( // the service whose resource you want to untag. // // * You can only tag resources that -// are located in the specified AWS Region for the calling AWS account. +// are located in the specified Amazon Web Services Region for the calling Amazon +// Web Services account. +// +// Minimum permissions In addition to the tag:UntagResources +// permission required by this operation, you must also have the remove tags +// permission defined by the service that created the resource. For example, to +// remove the tags from an Amazon EC2 instance using the UntagResources operation, +// you must have both of the following permissions: +// +// * tag:UntagResource +// +// * +// ec2:DeleteTags func (c *Client) UntagResources(ctx context.Context, params *UntagResourcesInput, optFns ...func(*Options)) (*UntagResourcesOutput, error) { if params == nil { params = &UntagResourcesInput{} @@ -42,9 +54,9 @@ type UntagResourcesInput struct { // Specifies a list of ARNs of the resources that you want to remove tags from. An // ARN (Amazon Resource Name) uniquely identifies a resource. For more information, - // see Amazon Resource Names (ARNs) and AWS Service Namespaces - // (http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in - // the AWS General Reference. + // see Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces + // (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in + // the Amazon Web Services General Reference. // // This member is required. ResourceARNList []string diff --git a/service/resourcegroupstaggingapi/types/errors.go b/service/resourcegroupstaggingapi/types/errors.go index 340ab6497aa..23d59890929 100644 --- a/service/resourcegroupstaggingapi/types/errors.go +++ b/service/resourcegroupstaggingapi/types/errors.go @@ -35,13 +35,13 @@ func (e *ConcurrentModificationException) ErrorFault() smithy.ErrorFault { retur // // * You must meet the prerequisites for using tag policies. For // information, see Prerequisites and Permissions for Using Tag Policies -// (http://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies-prereqs.html) -// in the AWS Organizations User Guide. +// (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies-prereqs.html) +// in the Organizations User Guide. // // * You must enable the tag policies service -// principal (tagpolicies.tag.amazonaws.com) to integrate with AWS Organizations -// For information, see EnableAWSServiceAccess -// (http://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). +// principal (tagpolicies.tag.amazonaws.com) to integrate with Organizations For +// information, see EnableAWSServiceAccess +// (https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). // // * // You must have a tag policy attached to the organization root, an OU, or an @@ -100,8 +100,8 @@ func (e *InternalServiceException) ErrorFault() smithy.ErrorFault { return smith // * You can't access the Amazon S3 bucket for // report storage. For more information, see Additional Requirements for // Organization-wide Tag Compliance Reports -// (http://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies-prereqs.html#bucket-policies-org-report) -// in the AWS Organizations User Guide. +// (https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies-prereqs.html#bucket-policies-org-report) +// in the Organizations User Guide. type InvalidParameterException struct { Message *string diff --git a/service/resourcegroupstaggingapi/types/types.go b/service/resourcegroupstaggingapi/types/types.go index 1b1c059d91a..c1222b9e1ca 100644 --- a/service/resourcegroupstaggingapi/types/types.go +++ b/service/resourcegroupstaggingapi/types/types.go @@ -25,34 +25,36 @@ type ComplianceDetails struct { // Information about the errors that are returned for each failed resource. This // information can include InternalServiceException and InvalidParameterException -// errors. It can also include any valid error code returned by the AWS service -// that hosts the resource that the ARN key represents. The following are common -// error codes that you might receive from other AWS services: +// errors. It can also include any valid error code returned by the Amazon Web +// Services service that hosts the resource that the ARN key represents. The +// following are common error codes that you might receive from other Amazon Web +// Services services: // -// * -// InternalServiceException – This can mean that the Resource Groups Tagging API -// didn't receive a response from another AWS service. It can also mean the the -// resource type in the request is not supported by the Resource Groups Tagging -// API. In these cases, it's safe to retry the request and then call GetResources -// (http://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html) +// * InternalServiceException – This can mean that the Resource +// Groups Tagging API didn't receive a response from another Amazon Web Services +// service. It can also mean that the resource type in the request is not supported +// by the Resource Groups Tagging API. In these cases, it's safe to retry the +// request and then call GetResources +// (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html) // to verify the changes. // // * AccessDeniedException – This can mean that you need -// permission to calling tagging operations in the AWS service that contains the -// resource. For example, to use the Resource Groups Tagging API to tag a -// CloudWatch alarm resource, you need permission to call TagResources -// (http://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html) +// permission to call the tagging operations in the Amazon Web Services service +// that contains the resource. For example, to use the Resource Groups Tagging API +// to tag a Amazon CloudWatch alarm resource, you need permission to call both +// TagResources +// (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html) // and TagResource -// (http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_TagResource.html) +// (https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_TagResource.html) // in the CloudWatch API. // // For more information on errors that are generated from -// other AWS services, see the documentation for that service. +// other Amazon Web Services services, see the documentation for that service. type FailureInfo struct { // The code of the common error. Valid values include InternalServiceException, - // InvalidParameterException, and any valid error code returned by the AWS service - // that hosts the resource that you want to tag. + // InvalidParameterException, and any valid error code returned by the Amazon Web + // Services service that hosts the resource that you want to tag. ErrorCode ErrorCode // The message of the common error. @@ -75,7 +77,7 @@ type ResourceTagMapping struct { // The ARN of the resource. ResourceARN *string - // The tags that have been applied to one or more AWS resources. + // The tags that have been applied to one or more Amazon Web Services resources. Tags []Tag noSmithyDocumentSerde @@ -90,15 +92,15 @@ type Summary struct { // The count of noncompliant resources. NonCompliantResources int64 - // The AWS Region that the summary applies to. + // The Amazon Web Services Region that the summary applies to. Region *string - // The AWS resource type. + // The Amazon Web Services resource type. ResourceType *string // The account identifier or the root identifier of the organization. If you don't - // know the root ID, you can call the AWS Organizations ListRoots - // (http://docs.aws.amazon.com/organizations/latest/APIReference/API_ListRoots.html) + // know the root ID, you can call the Organizations ListRoots + // (https://docs.aws.amazon.com/organizations/latest/APIReference/API_ListRoots.html) // API. TargetId *string @@ -108,11 +110,11 @@ type Summary struct { noSmithyDocumentSerde } -// The metadata that you apply to AWS resources to help you categorize and organize -// them. Each tag consists of a key and a value, both of which you define. For more -// information, see Tagging AWS Resources -// (http://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in the AWS -// General Reference. +// The metadata that you apply to Amazon Web Services resources to help you +// categorize and organize them. Each tag consists of a key and a value, both of +// which you define. For more information, see Tagging Amazon Web Services +// Resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in +// the Amazon Web Services General Reference. type Tag struct { // One part of a key-value pair that makes up a tag. A key is a general label that diff --git a/service/s3control/internal/customizations/update_endpoint_test.go b/service/s3control/internal/customizations/update_endpoint_test.go index 118787f1442..ae96e266e15 100644 --- a/service/s3control/internal/customizations/update_endpoint_test.go +++ b/service/s3control/internal/customizations/update_endpoint_test.go @@ -40,9 +40,9 @@ func TestUpdateEndpointBuild(t *testing.T) { "DualStack": { useDualstack: true, tests: []s3controlEndpointTest{ - {"abc", "123456789012", "https://123456789012.s3-control.mock-region.api.aws/v20180820/bucket/abc", ""}, - {"a.b.c", "123456789012", "https://123456789012.s3-control.mock-region.api.aws/v20180820/bucket/a.b.c", ""}, - {"a$b$c", "123456789012", "https://123456789012.s3-control.mock-region.api.aws/v20180820/bucket/a%24b%24c", ""}, + {"abc", "123456789012", "https://123456789012.s3-control.dualstack.mock-region.amazonaws.com/v20180820/bucket/abc", ""}, + {"a.b.c", "123456789012", "https://123456789012.s3-control.dualstack.mock-region.amazonaws.com/v20180820/bucket/a.b.c", ""}, + {"a$b$c", "123456789012", "https://123456789012.s3-control.dualstack.mock-region.amazonaws.com/v20180820/bucket/a%24b%24c", ""}, }, }, }, diff --git a/service/s3control/internal/endpoints/endpoints.go b/service/s3control/internal/endpoints/endpoints.go index f776ac2347e..05d28ff0200 100644 --- a/service/s3control/internal/endpoints/endpoints.go +++ b/service/s3control/internal/endpoints/endpoints.go @@ -106,7 +106,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.DualStackVariant, }: { - Hostname: "s3-control.{region}.api.aws", + Hostname: "s3-control.dualstack.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"s3v4"}, }, @@ -120,7 +120,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, }: { - Hostname: "s3-control-fips.{region}.api.aws", + Hostname: "s3-control-fips.dualstack.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"s3v4"}, }, @@ -616,7 +616,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.DualStackVariant, }: { - Hostname: "s3-control.{region}.api.amazonwebservices.com.cn", + Hostname: "s3-control.dualstack.{region}.amazonaws.com.cn", Protocols: []string{"https"}, SignatureVersions: []string{"s3v4"}, }, @@ -733,7 +733,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.DualStackVariant, }: { - Hostname: "s3-control.{region}.api.aws", + Hostname: "s3-control.dualstack.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"s3v4"}, }, @@ -747,7 +747,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, }: { - Hostname: "s3-control-fips.{region}.api.aws", + Hostname: "s3-control-fips.dualstack.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"s3v4"}, }, diff --git a/service/sagemaker/api_op_CreateEndpoint.go b/service/sagemaker/api_op_CreateEndpoint.go index 5aac035e019..3ebb3935440 100644 --- a/service/sagemaker/api_op_CreateEndpoint.go +++ b/service/sagemaker/api_op_CreateEndpoint.go @@ -95,6 +95,10 @@ type CreateEndpointInput struct { // This member is required. EndpointName *string + // The deployment configuration for an endpoint, which contains the desired + // deployment strategy and rollback configurations. + DeploymentConfig *types.DeploymentConfig + // An array of key-value pairs. You can use tags to categorize your Amazon Web // Services resources in different ways, for example, by purpose, owner, or // environment. For more information, see Tagging Amazon Web Services Resources diff --git a/service/sagemaker/api_op_DescribeDevice.go b/service/sagemaker/api_op_DescribeDevice.go index 8e3f09cd1d2..977d6168fce 100644 --- a/service/sagemaker/api_op_DescribeDevice.go +++ b/service/sagemaker/api_op_DescribeDevice.go @@ -63,6 +63,9 @@ type DescribeDeviceOutput struct { // This member is required. RegistrationTime *time.Time + // Edge Manager agent version. + AgentVersion *string + // A description of the device. Description *string diff --git a/service/sagemaker/api_op_DescribeEndpoint.go b/service/sagemaker/api_op_DescribeEndpoint.go index 24eb22d25bc..c7cf4130841 100644 --- a/service/sagemaker/api_op_DescribeEndpoint.go +++ b/service/sagemaker/api_op_DescribeEndpoint.go @@ -123,6 +123,10 @@ type DescribeEndpointOutput struct { // The most recent deployment configuration for the endpoint. LastDeploymentConfig *types.DeploymentConfig + // Returns the summary of an in-progress deployment. This field is only returned + // when the endpoint is creating or updating with a new endpoint configuration. + PendingDeploymentSummary *types.PendingDeploymentSummary + // An array of ProductionVariantSummary objects, one for each model hosted behind // this endpoint. ProductionVariants []types.ProductionVariantSummary diff --git a/service/sagemaker/api_op_UpdateEndpoint.go b/service/sagemaker/api_op_UpdateEndpoint.go index 6be233fa96c..f9d3bbb83b1 100644 --- a/service/sagemaker/api_op_UpdateEndpoint.go +++ b/service/sagemaker/api_op_UpdateEndpoint.go @@ -50,7 +50,8 @@ type UpdateEndpointInput struct { // This member is required. EndpointName *string - // The deployment configuration for the endpoint to be updated. + // The deployment configuration for an endpoint, which contains the desired + // deployment strategy and rollback configurations. DeploymentConfig *types.DeploymentConfig // When you are updating endpoint resources with @@ -70,6 +71,10 @@ type UpdateEndpointInput struct { // false. RetainAllVariantProperties bool + // Specifies whether to reuse the last deployment configuration. The default value + // is false (the configuration is not reused). + RetainDeploymentConfig bool + noSmithyDocumentSerde } diff --git a/service/sagemaker/deserializers.go b/service/sagemaker/deserializers.go index d03650071e3..2511d6a87c6 100644 --- a/service/sagemaker/deserializers.go +++ b/service/sagemaker/deserializers.go @@ -32711,6 +32711,15 @@ func awsAwsjson11_deserializeDocumentDeviceSummary(v **types.DeviceSummary, valu for key, value := range shape { switch key { + case "AgentVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EdgeVersion to be of type string, got %T instead", value) + } + sv.AgentVersion = ptr.String(jtv) + } + case "Description": if value != nil { jtv, ok := value.(string) @@ -44474,6 +44483,263 @@ func awsAwsjson11_deserializeDocumentParents(v *[]types.Parent, value interface{ return nil } +func awsAwsjson11_deserializeDocumentPendingDeploymentSummary(v **types.PendingDeploymentSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PendingDeploymentSummary + if *v == nil { + sv = &types.PendingDeploymentSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "EndpointConfigName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EndpointConfigName to be of type string, got %T instead", value) + } + sv.EndpointConfigName = ptr.String(jtv) + } + + case "ProductionVariants": + if err := awsAwsjson11_deserializeDocumentPendingProductionVariantSummaryList(&sv.ProductionVariants, value); err != nil { + return err + } + + case "StartTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPendingProductionVariantSummary(v **types.PendingProductionVariantSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PendingProductionVariantSummary + if *v == nil { + sv = &types.PendingProductionVariantSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AcceleratorType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ProductionVariantAcceleratorType to be of type string, got %T instead", value) + } + sv.AcceleratorType = types.ProductionVariantAcceleratorType(jtv) + } + + case "CurrentInstanceCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected TaskCount to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.CurrentInstanceCount = ptr.Int32(int32(i64)) + } + + case "CurrentWeight": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CurrentWeight = ptr.Float32(float32(f64)) + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.CurrentWeight = ptr.Float32(float32(f64)) + + default: + return fmt.Errorf("expected VariantWeight to be a JSON Number, got %T instead", value) + + } + } + + case "DeployedImages": + if err := awsAwsjson11_deserializeDocumentDeployedImages(&sv.DeployedImages, value); err != nil { + return err + } + + case "DesiredInstanceCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected TaskCount to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.DesiredInstanceCount = ptr.Int32(int32(i64)) + } + + case "DesiredWeight": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.DesiredWeight = ptr.Float32(float32(f64)) + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.DesiredWeight = ptr.Float32(float32(f64)) + + default: + return fmt.Errorf("expected VariantWeight to be a JSON Number, got %T instead", value) + + } + } + + case "InstanceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ProductionVariantInstanceType to be of type string, got %T instead", value) + } + sv.InstanceType = types.ProductionVariantInstanceType(jtv) + } + + case "VariantName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected VariantName to be of type string, got %T instead", value) + } + sv.VariantName = ptr.String(jtv) + } + + case "VariantStatus": + if err := awsAwsjson11_deserializeDocumentProductionVariantStatusList(&sv.VariantStatus, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPendingProductionVariantSummaryList(v *[]types.PendingProductionVariantSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.PendingProductionVariantSummary + if *v == nil { + cv = []types.PendingProductionVariantSummary{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.PendingProductionVariantSummary + destAddr := &col + if err := awsAwsjson11_deserializeDocumentPendingProductionVariantSummary(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsAwsjson11_deserializeDocumentPipeline(v **types.Pipeline, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -46519,6 +46785,105 @@ func awsAwsjson11_deserializeDocumentProductionVariantList(v *[]types.Production return nil } +func awsAwsjson11_deserializeDocumentProductionVariantStatus(v **types.ProductionVariantStatus, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ProductionVariantStatus + if *v == nil { + sv = &types.ProductionVariantStatus{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "StartTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "Status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected VariantStatus to be of type string, got %T instead", value) + } + sv.Status = types.VariantStatus(jtv) + } + + case "StatusMessage": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected VariantStatusMessage to be of type string, got %T instead", value) + } + sv.StatusMessage = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentProductionVariantStatusList(v *[]types.ProductionVariantStatus, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ProductionVariantStatus + if *v == nil { + cv = []types.ProductionVariantStatus{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ProductionVariantStatus + destAddr := &col + if err := awsAwsjson11_deserializeDocumentProductionVariantStatus(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsAwsjson11_deserializeDocumentProductionVariantSummary(v **types.ProductionVariantSummary, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -46649,6 +47014,11 @@ func awsAwsjson11_deserializeDocumentProductionVariantSummary(v **types.Producti sv.VariantName = ptr.String(jtv) } + case "VariantStatus": + if err := awsAwsjson11_deserializeDocumentProductionVariantStatusList(&sv.VariantStatus, value); err != nil { + return err + } + default: _, _ = key, value @@ -49875,6 +50245,11 @@ func awsAwsjson11_deserializeDocumentTrafficRoutingConfig(v **types.TrafficRouti return err } + case "LinearStepSize": + if err := awsAwsjson11_deserializeDocumentCapacitySize(&sv.LinearStepSize, value); err != nil { + return err + } + case "Type": if value != nil { jtv, ok := value.(string) @@ -57775,6 +58150,15 @@ func awsAwsjson11_deserializeOpDocumentDescribeDeviceOutput(v **DescribeDeviceOu for key, value := range shape { switch key { + case "AgentVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EdgeVersion to be of type string, got %T instead", value) + } + sv.AgentVersion = ptr.String(jtv) + } + case "Description": if value != nil { jtv, ok := value.(string) @@ -58476,6 +58860,11 @@ func awsAwsjson11_deserializeOpDocumentDescribeEndpointOutput(v **DescribeEndpoi } } + case "PendingDeploymentSummary": + if err := awsAwsjson11_deserializeDocumentPendingDeploymentSummary(&sv.PendingDeploymentSummary, value); err != nil { + return err + } + case "ProductionVariants": if err := awsAwsjson11_deserializeDocumentProductionVariantSummaryList(&sv.ProductionVariants, value); err != nil { return err diff --git a/service/sagemaker/serializers.go b/service/sagemaker/serializers.go index d6900258f4e..d3192765c9f 100644 --- a/service/sagemaker/serializers.go +++ b/service/sagemaker/serializers.go @@ -18918,6 +18918,13 @@ func awsAwsjson11_serializeDocumentTrafficRoutingConfig(v *types.TrafficRoutingC } } + if v.LinearStepSize != nil { + ok := object.Key("LinearStepSize") + if err := awsAwsjson11_serializeDocumentCapacitySize(v.LinearStepSize, ok); err != nil { + return err + } + } + if len(v.Type) > 0 { ok := object.Key("Type") ok.String(string(v.Type)) @@ -20292,6 +20299,13 @@ func awsAwsjson11_serializeOpDocumentCreateEndpointInput(v *CreateEndpointInput, object := value.Object() defer object.Close() + if v.DeploymentConfig != nil { + ok := object.Key("DeploymentConfig") + if err := awsAwsjson11_serializeDocumentDeploymentConfig(v.DeploymentConfig, ok); err != nil { + return err + } + } + if v.EndpointConfigName != nil { ok := object.Key("EndpointConfigName") ok.String(*v.EndpointConfigName) @@ -26223,6 +26237,11 @@ func awsAwsjson11_serializeOpDocumentUpdateEndpointInput(v *UpdateEndpointInput, ok.Boolean(v.RetainAllVariantProperties) } + if v.RetainDeploymentConfig { + ok := object.Key("RetainDeploymentConfig") + ok.Boolean(v.RetainDeploymentConfig) + } + return nil } diff --git a/service/sagemaker/types/enums.go b/service/sagemaker/types/enums.go index 227e14c4100..cf5137ee6e6 100644 --- a/service/sagemaker/types/enums.go +++ b/service/sagemaker/types/enums.go @@ -3820,6 +3820,7 @@ type TrafficRoutingConfigType string const ( TrafficRoutingConfigTypeAllAtOnce TrafficRoutingConfigType = "ALL_AT_ONCE" TrafficRoutingConfigTypeCanary TrafficRoutingConfigType = "CANARY" + TrafficRoutingConfigTypeLinear TrafficRoutingConfigType = "LINEAR" ) // Values returns all known values for TrafficRoutingConfigType. Note that this can @@ -3829,6 +3830,7 @@ func (TrafficRoutingConfigType) Values() []TrafficRoutingConfigType { return []TrafficRoutingConfigType{ "ALL_AT_ONCE", "CANARY", + "LINEAR", } } @@ -4199,3 +4201,27 @@ func (VariantPropertyType) Values() []VariantPropertyType { "DataCaptureConfig", } } + +type VariantStatus string + +// Enum values for VariantStatus +const ( + VariantStatusCreating VariantStatus = "Creating" + VariantStatusUpdating VariantStatus = "Updating" + VariantStatusDeleting VariantStatus = "Deleting" + VariantStatusActivatingTraffic VariantStatus = "ActivatingTraffic" + VariantStatusBaking VariantStatus = "Baking" +) + +// Values returns all known values for VariantStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (VariantStatus) Values() []VariantStatus { + return []VariantStatus{ + "Creating", + "Updating", + "Deleting", + "ActivatingTraffic", + "Baking", + } +} diff --git a/service/sagemaker/types/types.go b/service/sagemaker/types/types.go index 0205cf0212b..11a0b06a51f 100644 --- a/service/sagemaker/types/types.go +++ b/service/sagemaker/types/types.go @@ -69,10 +69,10 @@ type AgentVersion struct { noSmithyDocumentSerde } -// This API is not supported. +// An Amazon CloudWatch alarm configured to monitor metrics on an endpoint. type Alarm struct { - // + // The name of a CloudWatch alarm in your account. AlarmName *string noSmithyDocumentSerde @@ -1797,10 +1797,13 @@ type AutoMLSecurityConfig struct { noSmithyDocumentSerde } -// Currently, the AutoRollbackConfig API is not supported. +// Automatic rollback configuration for handling endpoint deployment failures and +// recovery. type AutoRollbackConfig struct { - // + // List of CloudWatch alarms in your account that are configured to monitor metrics + // on an endpoint. If any alarms are tripped during a deployment, SageMaker rolls + // back the deployment. Alarms []Alarm noSmithyDocumentSerde @@ -1871,18 +1874,27 @@ type Bias struct { noSmithyDocumentSerde } -// Currently, the BlueGreenUpdatePolicy API is not supported. +// Update policy for a blue/green deployment. If this update policy is specified, +// SageMaker creates a new fleet during the deployment while maintaining the old +// fleet. SageMaker flips traffic to the new fleet according to the specified +// traffic routing configuration. Only one update policy should be used in the +// deployment configuration. If no update policy is specified, SageMaker uses a +// blue/green deployment strategy with all at once traffic shifting by default. type BlueGreenUpdatePolicy struct { - // + // Defines the traffic routing strategy to shift traffic from the old fleet to the + // new fleet during an endpoint deployment. // // This member is required. TrafficRoutingConfiguration *TrafficRoutingConfig - // + // Maximum execution timeout for the deployment. Note that the timeout value should + // be larger than the total waiting time specified in TerminationWaitInSeconds and + // WaitIntervalInSeconds. MaximumExecutionTimeoutInSeconds *int32 - // + // Additional waiting time in seconds after the completion of an endpoint + // deployment before terminating the old endpoint fleet. Default is 0. TerminationWaitInSeconds *int32 noSmithyDocumentSerde @@ -1937,15 +1949,22 @@ type CandidateProperties struct { noSmithyDocumentSerde } -// Currently, the CapacitySize API is not supported. +// Specifies the endpoint capacity to activate for production. type CapacitySize struct { - // This API is not supported. + // Specifies the endpoint capacity type. + // + // * INSTANCE_COUNT: The endpoint activates + // based on the number of instances. + // + // * CAPACITY_PERCENT: The endpoint activates + // based on the specified percentage of capacity. // // This member is required. Type CapacitySizeType - // + // Defines the capacity size, either as a number of instances or a capacity + // percentage. // // This member is required. Value *int32 @@ -2797,15 +2816,22 @@ type DeployedImage struct { noSmithyDocumentSerde } -// Currently, the DeploymentConfig API is not supported. +// The deployment configuration for an endpoint, which contains the desired +// deployment strategy and rollback configurations. type DeploymentConfig struct { - // + // Update policy for a blue/green deployment. If this update policy is specified, + // SageMaker creates a new fleet during the deployment while maintaining the old + // fleet. SageMaker flips traffic to the new fleet according to the specified + // traffic routing configuration. Only one update policy should be used in the + // deployment configuration. If no update policy is specified, SageMaker uses a + // blue/green deployment strategy with all at once traffic shifting by default. // // This member is required. BlueGreenUpdatePolicy *BlueGreenUpdatePolicy - // + // Automatic rollback configuration for handling endpoint deployment failures and + // recovery. AutoRollbackConfiguration *AutoRollbackConfig noSmithyDocumentSerde @@ -2896,6 +2922,9 @@ type DeviceSummary struct { // This member is required. DeviceName *string + // Edge Manager agent version. + AgentVersion *string + // A description of the device. Description *string @@ -5097,8 +5126,9 @@ type HumanTaskConfig struct { // * For 3D point cloud // (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud.html) and video // frame (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video.html) labeling - // jobs, the maximum is 7 days (604,800 seconds). If you want to change these - // limits, contact Amazon Web Services Support. + // jobs, the maximum is 30 days (2952,000 seconds) for non-AL mode. For most users, + // the maximum is also 30 days. If you want to change these limits, contact Amazon + // Web Services Support. // // This member is required. TaskTimeLimitInSeconds *int32 @@ -5137,8 +5167,8 @@ type HumanTaskConfig struct { // seconds). // // * If you choose a private or vendor workforce, the default value is - // 10 days (864,000 seconds). For most users, the maximum is also 10 days. If you - // want to change this limit, contact Amazon Web Services Support. + // 30 days (2592,000 seconds) for non-AL mode. For most users, the maximum is also + // 30 days. If you want to change this limit, contact Amazon Web Services Support. TaskAvailabilityLifetimeInSeconds *int32 // Keywords used to describe the task so that workers on Amazon Mechanical Turk can @@ -8360,6 +8390,71 @@ type ParentHyperParameterTuningJob struct { noSmithyDocumentSerde } +// The summary of an in-progress deployment when an endpoint is creating or +// updating with a new endpoint configuration. +type PendingDeploymentSummary struct { + + // The name of the endpoint configuration used in the deployment. + // + // This member is required. + EndpointConfigName *string + + // List of PendingProductionVariantSummary objects. + ProductionVariants []PendingProductionVariantSummary + + // The start time of the deployment. + StartTime *time.Time + + noSmithyDocumentSerde +} + +// The production variant summary for a deployment when an endpoint is creating or +// updating with the CreateEndpoint or UpdateEndpoint operations. Describes the +// VariantStatus , weight and capacity for a production variant associated with an +// endpoint. +type PendingProductionVariantSummary struct { + + // The name of the variant. + // + // This member is required. + VariantName *string + + // The size of the Elastic Inference (EI) instance to use for the production + // variant. EI instances provide on-demand GPU computing for inference. For more + // information, see Using Elastic Inference in Amazon SageMaker + // (https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html). + AcceleratorType ProductionVariantAcceleratorType + + // The number of instances associated with the variant. + CurrentInstanceCount *int32 + + // The weight associated with the variant. + CurrentWeight *float32 + + // An array of DeployedImage objects that specify the Amazon EC2 Container Registry + // paths of the inference images deployed on instances of this ProductionVariant. + DeployedImages []DeployedImage + + // The number of instances requested in this deployment, as specified in the + // endpoint configuration for the endpoint. The value is taken from the request to + // the CreateEndpointConfig operation. + DesiredInstanceCount *int32 + + // The requested weight for the variant in this deployment, as specified in the + // endpoint configuration for the endpoint. The value is taken from the request to + // the CreateEndpointConfig operation. + DesiredWeight *float32 + + // The type of instances associated with the variant. + InstanceType ProductionVariantInstanceType + + // The endpoint variant status which describes the current deployment stage status + // or operational status. + VariantStatus []ProductionVariantStatus + + noSmithyDocumentSerde +} + // A SageMaker Model Building Pipeline instance. type Pipeline struct { @@ -9038,6 +9133,39 @@ type ProductionVariantCoreDumpConfig struct { noSmithyDocumentSerde } +// Describes the status of the production variant. +type ProductionVariantStatus struct { + + // The endpoint variant status which describes the current deployment stage status + // or operational status. + // + // * Creating: Creating inference resources for the + // production variant. + // + // * Deleting: Terminating inference resources for the + // production variant. + // + // * Updating: Updating capacity for the production + // variant. + // + // * ActivatingTraffic: Turning on traffic for the production variant. + // + // * + // Baking: Waiting period to monitor the CloudWatch alarms in the automatic + // rollback configuration. + // + // This member is required. + Status VariantStatus + + // The start time of the current status change. + StartTime *time.Time + + // A message that describes the status of the production variant. + StatusMessage *string + + noSmithyDocumentSerde +} + // Describes weight and capacities for a production variant associated with an // endpoint. If you sent a request to the UpdateEndpointWeightsAndCapacities API // and the endpoint status is Updating, you get different desired and current @@ -9067,6 +9195,10 @@ type ProductionVariantSummary struct { // request. DesiredWeight *float32 + // The endpoint variant status which describes the current deployment stage status + // or operational status. + VariantStatus []ProductionVariantStatus + noSmithyDocumentSerde } @@ -10523,22 +10655,39 @@ type TensorBoardOutputConfig struct { noSmithyDocumentSerde } -// Currently, the TrafficRoutingConfig API is not supported. +// Defines the traffic routing strategy during an endpoint deployment to shift +// traffic from the old fleet to the new fleet. type TrafficRoutingConfig struct { + // Traffic routing strategy type. + // + // * ALL_AT_ONCE: Endpoint traffic shifts to the + // new fleet in a single step. // + // * CANARY: Endpoint traffic shifts to the new fleet + // in two steps. The first step is the canary, which is a small portion of the + // traffic. The second step is the remainder of the traffic. + // + // * LINEAR: Endpoint + // traffic shifts to the new fleet in n steps of a configurable size. // // This member is required. Type TrafficRoutingConfigType - // + // The waiting time (in seconds) between incremental steps to turn on traffic on + // the new endpoint fleet. // // This member is required. WaitIntervalInSeconds *int32 - // + // Batch size for the first step to turn on traffic on the new endpoint fleet. + // Value must be less than or equal to 50% of the variant's total instance count. CanarySize *CapacitySize + // Batch size for each step to turn on traffic on the new endpoint fleet. Value + // must be 10-50% of the variant's total instance count. + LinearStepSize *CapacitySize + noSmithyDocumentSerde } diff --git a/service/sagemaker/validators.go b/service/sagemaker/validators.go index 3d3cbf90d55..9d835df4f30 100644 --- a/service/sagemaker/validators.go +++ b/service/sagemaker/validators.go @@ -8206,6 +8206,11 @@ func validateTrafficRoutingConfig(v *types.TrafficRoutingConfig) error { invalidParams.AddNested("CanarySize", err.(smithy.InvalidParamsError)) } } + if v.LinearStepSize != nil { + if err := validateCapacitySize(v.LinearStepSize); err != nil { + invalidParams.AddNested("LinearStepSize", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -9130,6 +9135,11 @@ func validateOpCreateEndpointInput(v *CreateEndpointInput) error { if v.EndpointConfigName == nil { invalidParams.Add(smithy.NewErrParamRequired("EndpointConfigName")) } + if v.DeploymentConfig != nil { + if err := validateDeploymentConfig(v.DeploymentConfig); err != nil { + invalidParams.AddNested("DeploymentConfig", err.(smithy.InvalidParamsError)) + } + } if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) diff --git a/service/sagemakerruntime/internal/endpoints/endpoints.go b/service/sagemakerruntime/internal/endpoints/endpoints.go index f7d919a34bb..51c8a534338 100644 --- a/service/sagemakerruntime/internal/endpoints/endpoints.go +++ b/service/sagemakerruntime/internal/endpoints/endpoints.go @@ -363,7 +363,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "runtime.sagemaker-fips.{region}.amazonaws.com", + Hostname: "runtime.sagemaker.{region}.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/ssmincidents/internal/endpoints/endpoints.go b/service/ssmincidents/internal/endpoints/endpoints.go index b56babe1965..a54a566c66c 100644 --- a/service/ssmincidents/internal/endpoints/endpoints.go +++ b/service/ssmincidents/internal/endpoints/endpoints.go @@ -138,12 +138,21 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ap-northeast-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-south-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-southeast-1", }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-southeast-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ca-central-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{}, @@ -153,12 +162,24 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-west-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-west-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-west-3", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "sa-east-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "us-east-1", }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "us-east-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-west-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "us-west-2", }: endpoints.Endpoint{}, diff --git a/service/transcribe/internal/endpoints/endpoints.go b/service/transcribe/internal/endpoints/endpoints.go index 4a494b4e74b..d5cc8259bdb 100644 --- a/service/transcribe/internal/endpoints/endpoints.go +++ b/service/transcribe/internal/endpoints/endpoints.go @@ -159,6 +159,12 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ca-central-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ca-central-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "fips.transcribe.ca-central-1.amazonaws.com", + }, endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{}, @@ -174,6 +180,15 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-west-3", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "fips-ca-central-1", + }: endpoints.Endpoint{ + Hostname: "fips.transcribe.ca-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ca-central-1", + }, + Deprecated: aws.TrueTernary, + }, endpoints.EndpointKey{ Region: "fips-us-east-1", }: endpoints.Endpoint{ diff --git a/service/translate/api_op_CreateParallelData.go b/service/translate/api_op_CreateParallelData.go index 77cbc3c0547..ce4e26b5cef 100644 --- a/service/translate/api_op_CreateParallelData.go +++ b/service/translate/api_op_CreateParallelData.go @@ -13,9 +13,9 @@ import ( ) // Creates a parallel data resource in Amazon Translate by importing an input file -// from Amazon S3. Parallel data files contain examples of source phrases and their -// translations from your translation memory. By adding parallel data, you can -// influence the style, tone, and word choice in your translation output. +// from Amazon S3. Parallel data files contain examples that show how you want +// segments of text to be translated. By adding parallel data, you can influence +// the style, tone, and word choice in your translation output. func (c *Client) CreateParallelData(ctx context.Context, params *CreateParallelDataInput, optFns ...func(*Options)) (*CreateParallelDataOutput, error) { if params == nil { params = &CreateParallelDataInput{} diff --git a/service/translate/api_op_DescribeTextTranslationJob.go b/service/translate/api_op_DescribeTextTranslationJob.go index 26244488fb7..51545c45748 100644 --- a/service/translate/api_op_DescribeTextTranslationJob.go +++ b/service/translate/api_op_DescribeTextTranslationJob.go @@ -11,7 +11,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Gets the properties associated with an asycnhronous batch translation job +// Gets the properties associated with an asynchronous batch translation job // including name, ID, status, source and target languages, input/output S3 // buckets, and so on. func (c *Client) DescribeTextTranslationJob(ctx context.Context, params *DescribeTextTranslationJobInput, optFns ...func(*Options)) (*DescribeTextTranslationJobOutput, error) { diff --git a/service/translate/api_op_GetParallelData.go b/service/translate/api_op_GetParallelData.go index 87e64393dd6..ed0c52a6daa 100644 --- a/service/translate/api_op_GetParallelData.go +++ b/service/translate/api_op_GetParallelData.go @@ -45,9 +45,16 @@ type GetParallelDataOutput struct { // presigned URL to that has a 30 minute expiration. AuxiliaryDataLocation *types.ParallelDataDataLocation - // The location of the most recent parallel data input file that was successfully - // imported into Amazon Translate. The location is returned as a presigned URL that - // has a 30 minute expiration. + // The Amazon S3 location of the most recent parallel data input file that was + // successfully imported into Amazon Translate. The location is returned as a + // presigned URL that has a 30 minute expiration. Amazon Translate doesn't scan + // parallel data input files for the risk of CSV injection attacks. CSV injection + // occurs when a .csv or .tsv file is altered so that a record contains malicious + // code. The record begins with a special character, such as =, +, -, or @. When + // the file is opened in a spreadsheet program, the program might interpret the + // record as a formula and run the code within it. Before you download a parallel + // data input file from Amazon S3, ensure that you recognize the file and trust its + // creator. DataLocation *types.ParallelDataDataLocation // The Amazon S3 location of a file that provides any errors or warnings that were diff --git a/service/translate/api_op_GetTerminology.go b/service/translate/api_op_GetTerminology.go index 265488c6c21..e4016c10ad8 100644 --- a/service/translate/api_op_GetTerminology.go +++ b/service/translate/api_op_GetTerminology.go @@ -34,9 +34,12 @@ type GetTerminologyInput struct { // This member is required. Name *string - // The data format of the custom terminology being retrieved, either CSV or TMX. - // - // This member is required. + // The data format of the custom terminology being retrieved. If you don't specify + // this parameter, Amazon Translate returns a file that has the same format as the + // file that was imported to create the terminology. If you specify this parameter + // when you retrieve a multi-directional terminology resource, you must specify the + // same format as that of the input file that was imported to create it. Otherwise, + // Amazon Translate throws an error. TerminologyDataFormat types.TerminologyDataFormat noSmithyDocumentSerde @@ -44,6 +47,12 @@ type GetTerminologyInput struct { type GetTerminologyOutput struct { + // The Amazon S3 location of a file that provides any errors or warnings that were + // produced by your input file. This file was created when Amazon Translate + // attempted to create a terminology resource. The location is returned as a + // presigned URL to that has a 30 minute expiration. + AuxiliaryDataLocation *types.TerminologyDataLocation + // The data location of the custom terminology being retrieved. The custom // terminology file is returned in a presigned url that has a 30 minute expiration. TerminologyDataLocation *types.TerminologyDataLocation diff --git a/service/translate/api_op_ImportTerminology.go b/service/translate/api_op_ImportTerminology.go index d4ac00412ff..225903e689b 100644 --- a/service/translate/api_op_ImportTerminology.go +++ b/service/translate/api_op_ImportTerminology.go @@ -65,6 +65,12 @@ type ImportTerminologyInput struct { type ImportTerminologyOutput struct { + // The Amazon S3 location of a file that provides any errors or warnings that were + // produced by your input file. This file was created when Amazon Translate + // attempted to create a terminology resource. The location is returned as a + // presigned URL to that has a 30 minute expiration. + AuxiliaryDataLocation *types.TerminologyDataLocation + // The properties of the custom terminology being imported. TerminologyProperties *types.TerminologyProperties diff --git a/service/translate/api_op_ListTextTranslationJobs.go b/service/translate/api_op_ListTextTranslationJobs.go index f68e67c28ed..549f184dfcb 100644 --- a/service/translate/api_op_ListTextTranslationJobs.go +++ b/service/translate/api_op_ListTextTranslationJobs.go @@ -46,7 +46,7 @@ type ListTextTranslationJobsInput struct { type ListTextTranslationJobsOutput struct { - // The token to use to retreive the next page of results. This value is null when + // The token to use to retrieve the next page of results. This value is null when // there are no more results to return. NextToken *string diff --git a/service/translate/api_op_StartTextTranslationJob.go b/service/translate/api_op_StartTextTranslationJob.go index 45e9e81aae3..bb42645ae14 100644 --- a/service/translate/api_op_StartTextTranslationJob.go +++ b/service/translate/api_op_StartTextTranslationJob.go @@ -44,7 +44,7 @@ type StartTextTranslationJobInput struct { // The Amazon Resource Name (ARN) of an AWS Identity Access and Management (IAM) // role that grants Amazon Translate read access to your input data. For more - // nformation, see identity-and-access-management. + // information, see identity-and-access-management. // // This member is required. DataAccessRoleArn *string @@ -75,13 +75,22 @@ type StartTextTranslationJobInput struct { // The name of the batch translation job to be performed. JobName *string - // The names of the parallel data resources to use in the batch translation job. - // For a list of available parallel data resources, use the ListParallelData - // operation. + // The name of a parallel data resource to add to the translation job. This + // resource consists of examples that show how you want segments of text to be + // translated. When you add parallel data to a translation job, you create an + // Active Custom Translation job. This parameter accepts only one parallel data + // resource. Active Custom Translation jobs are priced at a higher rate than other + // jobs that don't use parallel data. For more information, see Amazon Translate + // pricing (http://aws.amazon.com/translate/pricing/). For a list of available + // parallel data resources, use the ListParallelData operation. For more + // information, see customizing-translations-parallel-data. ParallelDataNames []string - // The name of the terminology to use in the batch translation job. For a list of - // available terminologies, use the ListTerminologies operation. + // The name of a custom terminology resource to add to the translation job. This + // resource lists examples source terms and the desired translation for each term. + // This parameter accepts only one custom terminology resource. For a list of + // available custom terminology resources, use the ListTerminologies operation. For + // more information, see how-custom-terminology. TerminologyNames []string noSmithyDocumentSerde diff --git a/service/translate/deserializers.go b/service/translate/deserializers.go index ccba2c15290..95eca98c793 100644 --- a/service/translate/deserializers.go +++ b/service/translate/deserializers.go @@ -1296,6 +1296,9 @@ func awsAwsjson11_deserializeOpErrorStartTextTranslationJob(response *smithyhttp case strings.EqualFold("InternalServerException", errorCode): return awsAwsjson11_deserializeErrorInternalServerException(response, errorBody) + case strings.EqualFold("InvalidParameterValueException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterValueException(response, errorBody) + case strings.EqualFold("InvalidRequestException", errorCode): return awsAwsjson11_deserializeErrorInvalidRequestException(response, errorBody) @@ -2788,6 +2791,11 @@ func awsAwsjson11_deserializeDocumentOutputDataConfig(v **types.OutputDataConfig for key, value := range shape { switch key { + case "EncryptionKey": + if err := awsAwsjson11_deserializeDocumentEncryptionKey(&sv.EncryptionKey, value); err != nil { + return err + } + case "S3Uri": if value != nil { jtv, ok := value.(string) @@ -3453,11 +3461,29 @@ func awsAwsjson11_deserializeDocumentTerminologyProperties(v **types.Terminology sv.Description = ptr.String(jtv) } + case "Directionality": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Directionality to be of type string, got %T instead", value) + } + sv.Directionality = types.Directionality(jtv) + } + case "EncryptionKey": if err := awsAwsjson11_deserializeDocumentEncryptionKey(&sv.EncryptionKey, value); err != nil { return err } + case "Format": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TerminologyDataFormat to be of type string, got %T instead", value) + } + sv.Format = types.TerminologyDataFormat(jtv) + } + case "LastUpdatedAt": if value != nil { switch jtv := value.(type) { @@ -3474,6 +3500,15 @@ func awsAwsjson11_deserializeDocumentTerminologyProperties(v **types.Terminology } } + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UnboundedLengthString to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + case "Name": if value != nil { jtv, ok := value.(string) @@ -3496,6 +3531,19 @@ func awsAwsjson11_deserializeDocumentTerminologyProperties(v **types.Terminology sv.SizeBytes = ptr.Int32(int32(i64)) } + case "SkippedTermCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SkippedTermCount = ptr.Int32(int32(i64)) + } + case "SourceLanguageCode": if value != nil { jtv, ok := value.(string) @@ -4126,6 +4174,11 @@ func awsAwsjson11_deserializeOpDocumentGetTerminologyOutput(v **GetTerminologyOu for key, value := range shape { switch key { + case "AuxiliaryDataLocation": + if err := awsAwsjson11_deserializeDocumentTerminologyDataLocation(&sv.AuxiliaryDataLocation, value); err != nil { + return err + } + case "TerminologyDataLocation": if err := awsAwsjson11_deserializeDocumentTerminologyDataLocation(&sv.TerminologyDataLocation, value); err != nil { return err @@ -4167,6 +4220,11 @@ func awsAwsjson11_deserializeOpDocumentImportTerminologyOutput(v **ImportTermino for key, value := range shape { switch key { + case "AuxiliaryDataLocation": + if err := awsAwsjson11_deserializeDocumentTerminologyDataLocation(&sv.AuxiliaryDataLocation, value); err != nil { + return err + } + case "TerminologyProperties": if err := awsAwsjson11_deserializeDocumentTerminologyProperties(&sv.TerminologyProperties, value); err != nil { return err diff --git a/service/translate/serializers.go b/service/translate/serializers.go index 33b203dff60..61ff27b69f3 100644 --- a/service/translate/serializers.go +++ b/service/translate/serializers.go @@ -823,6 +823,13 @@ func awsAwsjson11_serializeDocumentOutputDataConfig(v *types.OutputDataConfig, v object := value.Object() defer object.Close() + if v.EncryptionKey != nil { + ok := object.Key("EncryptionKey") + if err := awsAwsjson11_serializeDocumentEncryptionKey(v.EncryptionKey, ok); err != nil { + return err + } + } + if v.S3Uri != nil { ok := object.Key("S3Uri") ok.String(*v.S3Uri) @@ -874,6 +881,11 @@ func awsAwsjson11_serializeDocumentTerminologyData(v *types.TerminologyData, val object := value.Object() defer object.Close() + if len(v.Directionality) > 0 { + ok := object.Key("Directionality") + ok.String(string(v.Directionality)) + } + if v.File != nil { ok := object.Key("File") ok.Base64EncodeBytes(v.File) diff --git a/service/translate/types/enums.go b/service/translate/types/enums.go index f37fad1a81e..0ed584c603c 100644 --- a/service/translate/types/enums.go +++ b/service/translate/types/enums.go @@ -2,6 +2,24 @@ package types +type Directionality string + +// Enum values for Directionality +const ( + DirectionalityUni Directionality = "UNI" + DirectionalityMulti Directionality = "MULTI" +) + +// Values returns all known values for Directionality. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (Directionality) Values() []Directionality { + return []Directionality{ + "UNI", + "MULTI", + } +} + type EncryptionKeyType string // Enum values for EncryptionKeyType @@ -112,6 +130,7 @@ type TerminologyDataFormat string const ( TerminologyDataFormatCsv TerminologyDataFormat = "CSV" TerminologyDataFormatTmx TerminologyDataFormat = "TMX" + TerminologyDataFormatTsv TerminologyDataFormat = "TSV" ) // Values returns all known values for TerminologyDataFormat. Note that this can be @@ -121,5 +140,6 @@ func (TerminologyDataFormat) Values() []TerminologyDataFormat { return []TerminologyDataFormat{ "CSV", "TMX", + "TSV", } } diff --git a/service/translate/types/types.go b/service/translate/types/types.go index 4355ac9f2f1..1930018b680 100644 --- a/service/translate/types/types.go +++ b/service/translate/types/types.go @@ -70,11 +70,16 @@ type InputDataConfig struct { // application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: The input // data consists of one or more Excel Workbook files (.xlsx). // - // If you structure - // your input data as HTML, ensure that you set this parameter to text/html. By - // doing so, you cut costs by limiting the translation to the contents of the html - // element in each file. Otherwise, if you set this parameter to text/plain, your - // costs will cover the translation of every character. + // * + // application/x-xliff+xml: The input data consists of one or more XML Localization + // Interchange File Format (XLIFF) files (.xlf). Amazon Translate supports only + // XLIFF version 1.2. + // + // If you structure your input data as HTML, ensure that you + // set this parameter to text/html. By doing so, you cut costs by limiting the + // translation to the contents of the html element in each file. Otherwise, if you + // set this parameter to text/plain, your costs will cover the translation of every + // character. // // This member is required. ContentType *string @@ -113,6 +118,9 @@ type OutputDataConfig struct { // This member is required. S3Uri *string + // The encryption key used to encrypt this object. + EncryptionKey *EncryptionKey + noSmithyDocumentSerde } @@ -138,7 +146,14 @@ type ParallelDataConfig struct { type ParallelDataDataLocation struct { // The Amazon S3 location of the parallel data input file. The location is returned - // as a presigned URL to that has a 30 minute expiration. + // as a presigned URL to that has a 30 minute expiration. Amazon Translate doesn't + // scan parallel data input files for the risk of CSV injection attacks. CSV + // injection occurs when a .csv or .tsv file is altered so that a record contains + // malicious code. The record begins with a special character, such as =, +, -, or + // @. When the file is opened in a spreadsheet program, the program might interpret + // the record as a formula and run the code within it. Before you download a + // parallel data input file from Amazon S3, ensure that you recognize the file and + // trust its creator. // // This member is required. Location *string @@ -238,11 +253,25 @@ type TerminologyData struct { // This member is required. File []byte - // The data format of the custom terminology. Either CSV or TMX. + // The data format of the custom terminology. // // This member is required. Format TerminologyDataFormat + // The directionality of your terminology resource indicates whether it has one + // source language (uni-directional) or multiple (multi-directional). UNI The + // terminology resource has one source language (for example, the first column in a + // CSV file), and all of its other languages are target languages. MULTI Any + // language in the terminology resource can be the source language or a target + // language. A single multi-directional terminology resource can be used for jobs + // that translate different language pairs. For example, if the terminology + // contains terms in English and Spanish, then it can be used for jobs that + // translate English to Spanish and jobs that translate Spanish to English. When + // you create a custom terminology resource without specifying the directionality, + // it behaves as uni-directional terminology, although this parameter will have a + // null value. + Directionality Directionality + noSmithyDocumentSerde } @@ -274,25 +303,42 @@ type TerminologyProperties struct { // The description of the custom terminology properties. Description *string + // The directionality of your terminology resource indicates whether it has one + // source language (uni-directional) or multiple (multi-directional). UNI The + // terminology resource has one source language (the first column in a CSV file), + // and all of its other languages are target languages. MULTI Any language in the + // terminology resource can be the source language. + Directionality Directionality + // The encryption key for the custom terminology. EncryptionKey *EncryptionKey + // The format of the custom terminology input file. + Format TerminologyDataFormat + // The time at which the custom terminology was last update, based on the // timestamp. LastUpdatedAt *time.Time + // Additional information from Amazon Translate about the terminology resource. + Message *string + // The name of the custom terminology. Name *string // The size of the file used when importing a custom terminology. SizeBytes *int32 + // The number of terms in the input file that Amazon Translate skipped when you + // created or updated the terminology resource. + SkippedTermCount *int32 + // The language code for the source text of the translation request for which the // custom terminology is being used. SourceLanguageCode *string // The language codes for the target languages available with the custom - // terminology file. All possible target languages are returned in array. + // terminology resource. All possible target languages are returned in array. TargetLanguageCodes []string // The number of terms included in the custom terminology. @@ -351,7 +397,7 @@ type TextTranslationJobProperties struct { // The status of the translation job. JobStatus JobStatus - // An explanation of any errors that may have occured during the translation job. + // An explanation of any errors that may have occurred during the translation job. Message *string // The output configuration properties that were specified when the job was diff --git a/service/translate/validators.go b/service/translate/validators.go index cbf6825ac1a..ca9367e1688 100644 --- a/service/translate/validators.go +++ b/service/translate/validators.go @@ -318,6 +318,11 @@ func validateOutputDataConfig(v *types.OutputDataConfig) error { if v.S3Uri == nil { invalidParams.Add(smithy.NewErrParamRequired("S3Uri")) } + if v.EncryptionKey != nil { + if err := validateEncryptionKey(v.EncryptionKey); err != nil { + invalidParams.AddNested("EncryptionKey", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -459,9 +464,6 @@ func validateOpGetTerminologyInput(v *GetTerminologyInput) error { if v.Name == nil { invalidParams.Add(smithy.NewErrParamRequired("Name")) } - if len(v.TerminologyDataFormat) == 0 { - invalidParams.Add(smithy.NewErrParamRequired("TerminologyDataFormat")) - } if invalidParams.Len() > 0 { return invalidParams } else { diff --git a/service/wafv2/api_op_CreateWebACL.go b/service/wafv2/api_op_CreateWebACL.go index a42c54b8ad1..08949ffcb2a 100644 --- a/service/wafv2/api_op_CreateWebACL.go +++ b/service/wafv2/api_op_CreateWebACL.go @@ -68,6 +68,11 @@ type CreateWebACLInput struct { // This member is required. VisibilityConfig *types.VisibilityConfig + // Specifies how WAF should handle CAPTCHA evaluations for rules that don't have + // their own CaptchaConfig settings. If you don't specify this, WAF uses its + // default settings for CaptchaConfig. + CaptchaConfig *types.CaptchaConfig + // A map of custom response keys and content bodies. When you create a rule with a // block action, you can send a custom response to the web request. You define // these for the web ACL, and then use them in the rules and default actions that diff --git a/service/wafv2/api_op_ListLoggingConfigurations.go b/service/wafv2/api_op_ListLoggingConfigurations.go index a7f496a2e15..bcf9cd573ce 100644 --- a/service/wafv2/api_op_ListLoggingConfigurations.go +++ b/service/wafv2/api_op_ListLoggingConfigurations.go @@ -29,17 +29,6 @@ func (c *Client) ListLoggingConfigurations(ctx context.Context, params *ListLogg type ListLoggingConfigurationsInput struct { - // The maximum number of objects that you want WAF to return for this request. If - // more objects are available, in the response, WAF provides a NextMarker value - // that you can use in a subsequent call to get the next batch of objects. - Limit *int32 - - // When you request a list of objects with a Limit setting, if the number of - // objects that are still available for retrieval exceeds the limit, WAF returns a - // NextMarker value in the response. To retrieve the next batch of objects, provide - // the marker from the prior call in your next request. - NextMarker *string - // Specifies whether this is for an Amazon CloudFront distribution or for a // regional application. A regional application can be an Application Load Balancer // (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API. To work with @@ -51,8 +40,21 @@ type ListLoggingConfigurationsInput struct { // // * API and SDKs - For all calls, use the // Region endpoint us-east-1. + // + // This member is required. Scope types.Scope + // The maximum number of objects that you want WAF to return for this request. If + // more objects are available, in the response, WAF provides a NextMarker value + // that you can use in a subsequent call to get the next batch of objects. + Limit *int32 + + // When you request a list of objects with a Limit setting, if the number of + // objects that are still available for retrieval exceeds the limit, WAF returns a + // NextMarker value in the response. To retrieve the next batch of objects, provide + // the marker from the prior call in your next request. + NextMarker *string + noSmithyDocumentSerde } @@ -118,6 +120,9 @@ func (c *Client) addOperationListLoggingConfigurationsMiddlewares(stack *middlew if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } + if err = addOpListLoggingConfigurationsValidationMiddleware(stack); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListLoggingConfigurations(options.Region), middleware.Before); err != nil { return err } diff --git a/service/wafv2/api_op_UpdateWebACL.go b/service/wafv2/api_op_UpdateWebACL.go index fb18609a5cf..a9c39272a7d 100644 --- a/service/wafv2/api_op_UpdateWebACL.go +++ b/service/wafv2/api_op_UpdateWebACL.go @@ -89,6 +89,11 @@ type UpdateWebACLInput struct { // This member is required. VisibilityConfig *types.VisibilityConfig + // Specifies how WAF should handle CAPTCHA evaluations for rules that don't have + // their own CaptchaConfig settings. If you don't specify this, WAF uses its + // default settings for CaptchaConfig. + CaptchaConfig *types.CaptchaConfig + // A map of custom response keys and content bodies. When you create a rule with a // block action, you can send a custom response to the web request. You define // these for the web ACL, and then use them in the rules and default actions that diff --git a/service/wafv2/deserializers.go b/service/wafv2/deserializers.go index 4d215ff96ca..afb6c8721ec 100644 --- a/service/wafv2/deserializers.go +++ b/service/wafv2/deserializers.go @@ -6488,6 +6488,144 @@ func awsAwsjson11_deserializeDocumentByteMatchStatement(v **types.ByteMatchState return nil } +func awsAwsjson11_deserializeDocumentCaptchaAction(v **types.CaptchaAction, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CaptchaAction + if *v == nil { + sv = &types.CaptchaAction{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "CustomRequestHandling": + if err := awsAwsjson11_deserializeDocumentCustomRequestHandling(&sv.CustomRequestHandling, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentCaptchaConfig(v **types.CaptchaConfig, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CaptchaConfig + if *v == nil { + sv = &types.CaptchaConfig{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ImmunityTimeProperty": + if err := awsAwsjson11_deserializeDocumentImmunityTimeProperty(&sv.ImmunityTimeProperty, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentCaptchaResponse(v **types.CaptchaResponse, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CaptchaResponse + if *v == nil { + sv = &types.CaptchaResponse{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "FailureReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FailureReason to be of type string, got %T instead", value) + } + sv.FailureReason = types.FailureReason(jtv) + } + + case "ResponseCode": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ResponseCode to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ResponseCode = ptr.Int32(int32(i64)) + } + + case "SolveTimestamp": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected SolveTimestamp to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SolveTimestamp = ptr.Int64(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentCondition(v **types.Condition, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -7567,6 +7705,50 @@ func awsAwsjson11_deserializeDocumentHTTPRequest(v **types.HTTPRequest, value in return nil } +func awsAwsjson11_deserializeDocumentImmunityTimeProperty(v **types.ImmunityTimeProperty, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ImmunityTimeProperty + if *v == nil { + sv = &types.ImmunityTimeProperty{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "ImmunityTime": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected TimeWindowSecond to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ImmunityTime = ptr.Int64(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentIPAddresses(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -9819,6 +10001,11 @@ func awsAwsjson11_deserializeDocumentRule(v **types.Rule, value interface{}) err return err } + case "CaptchaConfig": + if err := awsAwsjson11_deserializeDocumentCaptchaConfig(&sv.CaptchaConfig, value); err != nil { + return err + } + case "Name": if value != nil { jtv, ok := value.(string) @@ -9902,6 +10089,11 @@ func awsAwsjson11_deserializeDocumentRuleAction(v **types.RuleAction, value inte return err } + case "Captcha": + if err := awsAwsjson11_deserializeDocumentCaptchaAction(&sv.Captcha, value); err != nil { + return err + } + case "Count": if err := awsAwsjson11_deserializeDocumentCountAction(&sv.Count, value); err != nil { return err @@ -10329,6 +10521,11 @@ func awsAwsjson11_deserializeDocumentSampledHTTPRequest(v **types.SampledHTTPReq sv.Action = ptr.String(jtv) } + case "CaptchaResponse": + if err := awsAwsjson11_deserializeDocumentCaptchaResponse(&sv.CaptchaResponse, value); err != nil { + return err + } + case "Labels": if err := awsAwsjson11_deserializeDocumentLabels(&sv.Labels, value); err != nil { return err @@ -11840,6 +12037,11 @@ func awsAwsjson11_deserializeDocumentWebACL(v **types.WebACL, value interface{}) sv.Capacity = i64 } + case "CaptchaConfig": + if err := awsAwsjson11_deserializeDocumentCaptchaConfig(&sv.CaptchaConfig, value); err != nil { + return err + } + case "CustomResponseBodies": if err := awsAwsjson11_deserializeDocumentCustomResponseBodies(&sv.CustomResponseBodies, value); err != nil { return err diff --git a/service/wafv2/serializers.go b/service/wafv2/serializers.go index 91113d18d7f..5ee053e4c4a 100644 --- a/service/wafv2/serializers.go +++ b/service/wafv2/serializers.go @@ -2596,6 +2596,34 @@ func awsAwsjson11_serializeDocumentByteMatchStatement(v *types.ByteMatchStatemen return nil } +func awsAwsjson11_serializeDocumentCaptchaAction(v *types.CaptchaAction, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CustomRequestHandling != nil { + ok := object.Key("CustomRequestHandling") + if err := awsAwsjson11_serializeDocumentCustomRequestHandling(v.CustomRequestHandling, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentCaptchaConfig(v *types.CaptchaConfig, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ImmunityTimeProperty != nil { + ok := object.Key("ImmunityTimeProperty") + if err := awsAwsjson11_serializeDocumentImmunityTimeProperty(v.ImmunityTimeProperty, ok); err != nil { + return err + } + } + + return nil +} + func awsAwsjson11_serializeDocumentCondition(v *types.Condition, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -2938,6 +2966,18 @@ func awsAwsjson11_serializeDocumentGeoMatchStatement(v *types.GeoMatchStatement, return nil } +func awsAwsjson11_serializeDocumentImmunityTimeProperty(v *types.ImmunityTimeProperty, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ImmunityTime != nil { + ok := object.Key("ImmunityTime") + ok.Long(*v.ImmunityTime) + } + + return nil +} + func awsAwsjson11_serializeDocumentIPAddresses(v []string, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -3406,6 +3446,13 @@ func awsAwsjson11_serializeDocumentRule(v *types.Rule, value smithyjson.Value) e } } + if v.CaptchaConfig != nil { + ok := object.Key("CaptchaConfig") + if err := awsAwsjson11_serializeDocumentCaptchaConfig(v.CaptchaConfig, ok); err != nil { + return err + } + } + if v.Name != nil { ok := object.Key("Name") ok.String(*v.Name) @@ -3465,6 +3512,13 @@ func awsAwsjson11_serializeDocumentRuleAction(v *types.RuleAction, value smithyj } } + if v.Captcha != nil { + ok := object.Key("Captcha") + if err := awsAwsjson11_serializeDocumentCaptchaAction(v.Captcha, ok); err != nil { + return err + } + } + if v.Count != nil { ok := object.Key("Count") if err := awsAwsjson11_serializeDocumentCountAction(v.Count, ok); err != nil { @@ -4049,6 +4103,13 @@ func awsAwsjson11_serializeOpDocumentCreateWebACLInput(v *CreateWebACLInput, val object := value.Object() defer object.Close() + if v.CaptchaConfig != nil { + ok := object.Key("CaptchaConfig") + if err := awsAwsjson11_serializeDocumentCaptchaConfig(v.CaptchaConfig, ok); err != nil { + return err + } + } + if v.CustomResponseBodies != nil { ok := object.Key("CustomResponseBodies") if err := awsAwsjson11_serializeDocumentCustomResponseBodies(v.CustomResponseBodies, ok); err != nil { @@ -5012,6 +5073,13 @@ func awsAwsjson11_serializeOpDocumentUpdateWebACLInput(v *UpdateWebACLInput, val object := value.Object() defer object.Close() + if v.CaptchaConfig != nil { + ok := object.Key("CaptchaConfig") + if err := awsAwsjson11_serializeDocumentCaptchaConfig(v.CaptchaConfig, ok); err != nil { + return err + } + } + if v.CustomResponseBodies != nil { ok := object.Key("CustomResponseBodies") if err := awsAwsjson11_serializeDocumentCustomResponseBodies(v.CustomResponseBodies, ok); err != nil { diff --git a/service/wafv2/types/enums.go b/service/wafv2/types/enums.go index 997b697e770..9c765120e9c 100644 --- a/service/wafv2/types/enums.go +++ b/service/wafv2/types/enums.go @@ -6,9 +6,11 @@ type ActionValue string // Enum values for ActionValue const ( - ActionValueAllow ActionValue = "ALLOW" - ActionValueBlock ActionValue = "BLOCK" - ActionValueCount ActionValue = "COUNT" + ActionValueAllow ActionValue = "ALLOW" + ActionValueBlock ActionValue = "BLOCK" + ActionValueCount ActionValue = "COUNT" + ActionValueCaptcha ActionValue = "CAPTCHA" + ActionValueExcludedAsCount ActionValue = "EXCLUDED_AS_COUNT" ) // Values returns all known values for ActionValue. Note that this can be expanded @@ -19,6 +21,8 @@ func (ActionValue) Values() []ActionValue { "ALLOW", "BLOCK", "COUNT", + "CAPTCHA", + "EXCLUDED_AS_COUNT", } } @@ -580,6 +584,24 @@ func (CountryCode) Values() []CountryCode { } } +type FailureReason string + +// Enum values for FailureReason +const ( + FailureReasonTokenMissing FailureReason = "TOKEN_MISSING" + FailureReasonTokenExpired FailureReason = "TOKEN_EXPIRED" +) + +// Values returns all known values for FailureReason. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (FailureReason) Values() []FailureReason { + return []FailureReason{ + "TOKEN_MISSING", + "TOKEN_EXPIRED", + } +} + type FallbackBehavior string // Enum values for FallbackBehavior diff --git a/service/wafv2/types/types.go b/service/wafv2/types/types.go index a5e73f34c2c..7d7c00717cb 100644 --- a/service/wafv2/types/types.go +++ b/service/wafv2/types/types.go @@ -165,6 +165,73 @@ type ByteMatchStatement struct { noSmithyDocumentSerde } +// Specifies that WAF should run a CAPTCHA check against the request: +// +// * If the +// request includes a valid, unexpired CAPTCHA token, WAF allows the web request +// inspection to proceed to the next rule, similar to a CountAction. +// +// * If the +// request doesn't include a valid, unexpired CAPTCHA token, WAF discontinues the +// web ACL evaluation of the request and blocks it from going to its intended +// destination. WAF generates a response that it sends back to the client, which +// includes the following: +// +// * The header x-amzn-waf-action with a value of +// captcha. +// +// * The HTTP status code 405 Method Not Allowed. +// +// * If the request +// contains an Accept header with a value of text/html, the response includes a +// CAPTCHA challenge. +// +// You can configure the expiration time in the +// CaptchaConfigImmunityTimeProperty setting at the rule and web ACL level. The +// rule setting overrides the web ACL setting. This action option is available for +// rules. It isn't available for web ACL default actions. This is used in the +// context of other settings, for example to specify values for RuleAction and web +// ACL DefaultAction. +type CaptchaAction struct { + + // Defines custom handling for the web request. For information about customizing + // web requests and responses, see Customizing web requests and responses in WAF + // (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html) + // in the WAF Developer Guide + // (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html). + CustomRequestHandling *CustomRequestHandling + + noSmithyDocumentSerde +} + +// Specifies how WAF should handle CAPTCHA evaluations. This is available at the +// web ACL level and in each rule. +type CaptchaConfig struct { + + // Determines how long a CAPTCHA token remains valid after the client successfully + // solves a CAPTCHA puzzle. + ImmunityTimeProperty *ImmunityTimeProperty + + noSmithyDocumentSerde +} + +// The result from the inspection of the web request for a valid CAPTCHA token. +type CaptchaResponse struct { + + // The reason for failure, populated when the evaluation of the token fails. + FailureReason FailureReason + + // The HTTP response code indicating the status of the CAPTCHA token in the web + // request. If the token is missing, invalid, or expired, this code is 405 Method + // Not Allowed. + ResponseCode *int32 + + // The time that the CAPTCHA puzzle was solved for the supplied token. + SolveTimestamp *int64 + + noSmithyDocumentSerde +} + // A single match condition for a Filter. type Condition struct { @@ -309,12 +376,13 @@ type DefaultAction struct { noSmithyDocumentSerde } -// Specifies a single rule to exclude from the rule group. Excluding a rule -// overrides its action setting for the rule group in the web ACL, setting it to -// COUNT. This effectively excludes the rule from acting on web requests. +// Specifies a single rule in a rule group whose action you want to override to +// Count. When you exclude a rule, WAF evaluates it exactly as it would if the rule +// action setting were Count. This is a useful option for testing the rules in a +// rule group without modifying how they handle your web traffic. type ExcludedRule struct { - // The name of the rule to exclude. + // The name of the rule whose action you want to override to Count. // // This member is required. Name *string @@ -426,19 +494,15 @@ type FirewallManagerRuleGroup struct { // This member is required. Name *string - // The override action to apply to the rules in a rule group. Used only for rule - // statements that reference a rule group, like RuleGroupReferenceStatement and - // ManagedRuleGroupStatement. Set the override action to none to leave the rule - // actions in effect. Set it to count to only count matches, regardless of the rule - // action settings. In a Rule, you must specify either this OverrideAction setting - // or the rule Action setting, but not both: - // - // * If the rule statement references a - // rule group, use this override action setting and not the action setting. - // - // * If - // the rule statement does not reference a rule group, use the rule action setting - // and not this rule override action setting. + // The action to use in the place of the action that results from the rule group + // evaluation. Set the override action to none to leave the result of the rule + // group alone. Set it to count to override the result to count only. You can only + // use this for rule statements that reference a rule group, like + // RuleGroupReferenceStatement and ManagedRuleGroupStatement. This option is + // usually set to none. It does not affect how the rules in the rule group are + // evaluated. If you want the rules in the rule group to only count matches, do not + // use this and instead exclude those rules in your rule group reference statement + // settings. // // This member is required. OverrideAction *OverrideAction @@ -585,6 +649,19 @@ type HTTPRequest struct { noSmithyDocumentSerde } +// Determines how long a CAPTCHA token remains valid after the client successfully +// solves a CAPTCHA puzzle. +type ImmunityTimeProperty struct { + + // The amount of time, in seconds, that a CAPTCHA token is valid. The default + // setting is 300. + // + // This member is required. + ImmunityTime *int64 + + noSmithyDocumentSerde +} + // Contains one or more IP addresses or blocks of IP addresses specified in // Classless Inter-Domain Routing (CIDR) notation. WAF supports all IPv4 and IPv6 // CIDR ranges except for /0. For information about CIDR notation, see the @@ -995,9 +1072,10 @@ type ManagedRuleGroupStatement struct { // This member is required. VendorName *string - // The rules whose actions are set to COUNT by the web ACL, regardless of the - // action that is set on the rule. This effectively excludes the rule from acting - // on web requests. + // The rules in the referenced rule group whose actions are set to Count. When you + // exclude a rule, WAF evaluates it exactly as it would if the rule action setting + // were Count. This is a useful option for testing the rules in a rule group + // without modifying how they handle your web traffic. ExcludedRules []ExcludedRule // An optional nested statement that narrows the scope of the web requests that are @@ -1209,8 +1287,8 @@ type Method struct { noSmithyDocumentSerde } -// Specifies that WAF should do nothing. This is generally used to try out a rule -// without performing any actions. You set the OverrideAction on the Rule. This is +// Specifies that WAF should do nothing. This is used for the OverrideAction +// setting on a Rule when the rule uses a rule group reference statement. This is // used in the context of other settings, for example to specify values for // RuleAction and web ACL DefaultAction. JSON specification: "None": {} type NoneAction struct { @@ -1242,25 +1320,25 @@ type OrStatement struct { noSmithyDocumentSerde } -// The override action to apply to the rules in a rule group. Used only for rule -// statements that reference a rule group, like RuleGroupReferenceStatement and -// ManagedRuleGroupStatement. Set the override action to none to leave the rule -// actions in effect. Set it to count to only count matches, regardless of the rule -// action settings. In a Rule, you must specify either this OverrideAction setting -// or the rule Action setting, but not both: -// -// * If the rule statement references a -// rule group, use this override action setting and not the action setting. -// -// * If -// the rule statement does not reference a rule group, use the rule action setting -// and not this rule override action setting. +// The action to use in the place of the action that results from the rule group +// evaluation. Set the override action to none to leave the result of the rule +// group alone. Set it to count to override the result to count only. You can only +// use this for rule statements that reference a rule group, like +// RuleGroupReferenceStatement and ManagedRuleGroupStatement. This option is +// usually set to none. It does not affect how the rules in the rule group are +// evaluated. If you want the rules in the rule group to only count matches, do not +// use this and instead exclude those rules in your rule group reference statement +// settings. type OverrideAction struct { - // Override the rule action setting to count. + // Override the rule group evaluation result to count only. This option is usually + // set to none. It does not affect how the rules in the rule group are evaluated. + // If you want the rules in the rule group to only count matches, do not use this + // and instead exclude those rules in your rule group reference statement settings. Count *CountAction - // Don't override the rule action setting. + // Don't override the rule group evaluation result. This is the most common + // setting. None *NoneAction noSmithyDocumentSerde @@ -1531,19 +1609,19 @@ type Rule struct { // override action setting and not this action setting. Action *RuleAction - // The override action to apply to the rules in a rule group. Used only for rule - // statements that reference a rule group, like RuleGroupReferenceStatement and - // ManagedRuleGroupStatement. Set the override action to none to leave the rule - // actions in effect. Set it to count to only count matches, regardless of the rule - // action settings. In a Rule, you must specify either this OverrideAction setting - // or the rule Action setting, but not both: - // - // * If the rule statement references a - // rule group, use this override action setting and not the action setting. - // - // * If - // the rule statement does not reference a rule group, use the rule action setting - // and not this rule override action setting. + // Specifies how WAF should handle CAPTCHA evaluations. If you don't specify this, + // WAF uses the CAPTCHA configuration that's defined for the web ACL. + CaptchaConfig *CaptchaConfig + + // The action to use in the place of the action that results from the rule group + // evaluation. Set the override action to none to leave the result of the rule + // group alone. Set it to count to override the result to count only. You can only + // use this for rule statements that reference a rule group, like + // RuleGroupReferenceStatement and ManagedRuleGroupStatement. This option is + // usually set to none. It does not affect how the rules in the rule group are + // evaluated. If you want the rules in the rule group to only count matches, do not + // use this and instead exclude those rules in your rule group reference statement + // settings. OverrideAction *OverrideAction // Labels to apply to web requests that match the rule match statement. WAF applies @@ -1583,6 +1661,9 @@ type RuleAction struct { // Instructs WAF to block the web request. Block *BlockAction + // Instructs WAF to run a CAPTCHA check against the web request. + Captcha *CaptchaAction + // Instructs WAF to count the web request and allow it. Count *CountAction @@ -1692,8 +1773,10 @@ type RuleGroupReferenceStatement struct { // This member is required. ARN *string - // The names of rules that are in the referenced rule group, but that you want WAF - // to exclude from processing for this rule statement. + // The rules in the referenced rule group whose actions are set to Count. When you + // exclude a rule, WAF evaluates it exactly as it would if the rule action setting + // were Count. This is a useful option for testing the rules in a rule group + // without modifying how they handle your web traffic. ExcludedRules []ExcludedRule noSmithyDocumentSerde @@ -1766,9 +1849,12 @@ type SampledHTTPRequest struct { // This member is required. Weight int64 - // The action for the Rule that the request matched: ALLOW, BLOCK, or COUNT. + // The action for the Rule that the request matched: Allow, Block, or Count. Action *string + // The CAPTCHA response for the request. + CaptchaResponse *CaptchaResponse + // Labels applied to the web request by matching rules. WAF applies fully qualified // labels to matching web requests. A fully qualified label is the concatenation of // a label namespace and a rule label. The rule's rule group or web ACL defines the @@ -2337,6 +2423,11 @@ type WebACL struct { // 1,500. Capacity int64 + // Specifies how WAF should handle CAPTCHA evaluations for rules that don't have + // their own CaptchaConfig settings. If you don't specify this, WAF uses its + // default settings for CaptchaConfig. + CaptchaConfig *CaptchaConfig + // A map of custom response keys and content bodies. When you create a rule with a // block action, you can send a custom response to the web request. You define // these for the web ACL, and then use them in the rules and default actions that diff --git a/service/wafv2/validators.go b/service/wafv2/validators.go index 84bd03e6340..df91ab78c6d 100644 --- a/service/wafv2/validators.go +++ b/service/wafv2/validators.go @@ -550,6 +550,26 @@ func (m *validateOpListIPSets) HandleInitialize(ctx context.Context, in middlewa return next.HandleInitialize(ctx, in) } +type validateOpListLoggingConfigurations struct { +} + +func (*validateOpListLoggingConfigurations) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListLoggingConfigurations) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListLoggingConfigurationsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListLoggingConfigurationsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpListManagedRuleSets struct { } @@ -978,6 +998,10 @@ func addOpListIPSetsValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListIPSets{}, middleware.After) } +func addOpListLoggingConfigurationsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListLoggingConfigurations{}, middleware.After) +} + func addOpListManagedRuleSetsValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpListManagedRuleSets{}, middleware.After) } @@ -1142,6 +1166,40 @@ func validateByteMatchStatement(v *types.ByteMatchStatement) error { } } +func validateCaptchaAction(v *types.CaptchaAction) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CaptchaAction"} + if v.CustomRequestHandling != nil { + if err := validateCustomRequestHandling(v.CustomRequestHandling); err != nil { + invalidParams.AddNested("CustomRequestHandling", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateCaptchaConfig(v *types.CaptchaConfig) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CaptchaConfig"} + if v.ImmunityTimeProperty != nil { + if err := validateImmunityTimeProperty(v.ImmunityTimeProperty); err != nil { + invalidParams.AddNested("ImmunityTimeProperty", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateCondition(v *types.Condition) error { if v == nil { return nil @@ -1466,6 +1524,21 @@ func validateGeoMatchStatement(v *types.GeoMatchStatement) error { } } +func validateImmunityTimeProperty(v *types.ImmunityTimeProperty) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ImmunityTimeProperty"} + if v.ImmunityTime == nil { + invalidParams.Add(smithy.NewErrParamRequired("ImmunityTime")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateIPSetForwardedIPConfig(v *types.IPSetForwardedIPConfig) error { if v == nil { return nil @@ -1860,6 +1933,11 @@ func validateRule(v *types.Rule) error { invalidParams.AddNested("VisibilityConfig", err.(smithy.InvalidParamsError)) } } + if v.CaptchaConfig != nil { + if err := validateCaptchaConfig(v.CaptchaConfig); err != nil { + invalidParams.AddNested("CaptchaConfig", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -1887,6 +1965,11 @@ func validateRuleAction(v *types.RuleAction) error { invalidParams.AddNested("Count", err.(smithy.InvalidParamsError)) } } + if v.Captcha != nil { + if err := validateCaptchaAction(v.Captcha); err != nil { + invalidParams.AddNested("Captcha", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -2421,6 +2504,11 @@ func validateOpCreateWebACLInput(v *CreateWebACLInput) error { invalidParams.AddNested("CustomResponseBodies", err.(smithy.InvalidParamsError)) } } + if v.CaptchaConfig != nil { + if err := validateCaptchaConfig(v.CaptchaConfig); err != nil { + invalidParams.AddNested("CaptchaConfig", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -2840,6 +2928,21 @@ func validateOpListIPSetsInput(v *ListIPSetsInput) error { } } +func validateOpListLoggingConfigurationsInput(v *ListLoggingConfigurationsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListLoggingConfigurationsInput"} + if len(v.Scope) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Scope")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpListManagedRuleSetsInput(v *ListManagedRuleSetsInput) error { if v == nil { return nil @@ -3197,6 +3300,11 @@ func validateOpUpdateWebACLInput(v *UpdateWebACLInput) error { invalidParams.AddNested("CustomResponseBodies", err.(smithy.InvalidParamsError)) } } + if v.CaptchaConfig != nil { + if err := validateCaptchaConfig(v.CaptchaConfig); err != nil { + invalidParams.AddNested("CaptchaConfig", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else {