diff --git a/aws-models/chatbot.json b/aws-models/chatbot.json
index a1f088d5c74f..874c61f60e91 100644
--- a/aws-models/chatbot.json
+++ b/aws-models/chatbot.json
@@ -49,6 +49,16 @@
"smithy.api#documentation": "Preferences which apply for AWS Chatbot usage in the calling AWS account."
}
},
+ "com.amazonaws.chatbot#AmazonResourceName": {
+ "type": "string",
+ "traits": {
+ "smithy.api#length": {
+ "min": 1,
+ "max": 1011
+ },
+ "smithy.api#pattern": "^arn:aws:(wheatley|chatbot):[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$"
+ }
+ },
"com.amazonaws.chatbot#Arn": {
"type": "string",
"traits": {
@@ -124,6 +134,12 @@
"traits": {
"smithy.api#documentation": "Specifies the logging level for this configuration. This property affects the log entries pushed to Amazon CloudWatch Logs.Logging levels include ERROR, INFO, or NONE."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags applied to the configuration."
+ }
}
},
"traits": {
@@ -302,6 +318,12 @@
"traits": {
"smithy.api#documentation": "Logging levels include ERROR, INFO, or NONE."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags to apply to the configuration."
+ }
}
},
"traits": {
@@ -463,6 +485,12 @@
"traits": {
"smithy.api#documentation": "Enables use of a user role requirement in your chat configuration."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags to apply to the configuration."
+ }
}
},
"traits": {
@@ -569,6 +597,12 @@
"traits": {
"smithy.api#documentation": "Enables use of a user role requirement in your chat configuration."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags to apply to the configuration."
+ }
}
},
"traits": {
@@ -1574,6 +1608,19 @@
"target": "com.amazonaws.chatbot#GuardrailPolicyArn"
}
},
+ "com.amazonaws.chatbot#InternalServiceError": {
+ "type": "structure",
+ "members": {
+ "Message": {
+ "target": "com.amazonaws.chatbot#ErrorMessage"
+ }
+ },
+ "traits": {
+ "smithy.api#documentation": "Customer/consumer-facing internal service exception.\n https://w.amazon.com/index.php/AWS/API_Standards/Exceptions#InternalServiceError",
+ "smithy.api#error": "server",
+ "smithy.api#httpError": 500
+ }
+ },
"com.amazonaws.chatbot#InvalidParameterException": {
"type": "structure",
"members": {
@@ -1824,6 +1871,63 @@
"smithy.api#output": {}
}
},
+ "com.amazonaws.chatbot#ListTagsForResource": {
+ "type": "operation",
+ "input": {
+ "target": "com.amazonaws.chatbot#ListTagsForResourceRequest"
+ },
+ "output": {
+ "target": "com.amazonaws.chatbot#ListTagsForResourceResponse"
+ },
+ "errors": [
+ {
+ "target": "com.amazonaws.chatbot#InternalServiceError"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ResourceNotFoundException"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ServiceUnavailableException"
+ }
+ ],
+ "traits": {
+ "smithy.api#documentation": "Retrieves the list of tags applied to a configuration.",
+ "smithy.api#http": {
+ "method": "POST",
+ "uri": "/list-tags-for-resource",
+ "code": 200
+ }
+ }
+ },
+ "com.amazonaws.chatbot#ListTagsForResourceRequest": {
+ "type": "structure",
+ "members": {
+ "ResourceARN": {
+ "target": "com.amazonaws.chatbot#AmazonResourceName",
+ "traits": {
+ "smithy.api#documentation": "The ARN of the configuration.",
+ "smithy.api#required": {}
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#input": {}
+ }
+ },
+ "com.amazonaws.chatbot#ListTagsForResourceResponse": {
+ "type": "structure",
+ "members": {
+ "Tags": {
+ "target": "com.amazonaws.chatbot#TagList",
+ "traits": {
+ "smithy.api#documentation": "A list of tags applied to the configuration."
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#output": {}
+ }
+ },
"com.amazonaws.chatbot#ListTeamsChannelConfigurationsException": {
"type": "structure",
"members": {
@@ -1915,6 +2019,19 @@
"smithy.api#httpError": 404
}
},
+ "com.amazonaws.chatbot#ServiceUnavailableException": {
+ "type": "structure",
+ "members": {
+ "message": {
+ "target": "com.amazonaws.chatbot#ErrorMessage"
+ }
+ },
+ "traits": {
+ "smithy.api#documentation": "We can’t process your request right now because of a server issue. Try again later.",
+ "smithy.api#error": "client",
+ "smithy.api#httpError": 429
+ }
+ },
"com.amazonaws.chatbot#SlackChannelConfiguration": {
"type": "structure",
"members": {
@@ -1990,6 +2107,12 @@
"traits": {
"smithy.api#documentation": "Enables use of a user role requirement in your chat configuration."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags applied to the configuration."
+ }
}
},
"traits": {
@@ -2135,6 +2258,136 @@
"com.amazonaws.chatbot#String": {
"type": "string"
},
+ "com.amazonaws.chatbot#Tag": {
+ "type": "structure",
+ "members": {
+ "TagKey": {
+ "target": "com.amazonaws.chatbot#TagKey",
+ "traits": {
+ "smithy.api#documentation": "The tag key.",
+ "smithy.api#required": {}
+ }
+ },
+ "TagValue": {
+ "target": "com.amazonaws.chatbot#TagValue",
+ "traits": {
+ "smithy.api#documentation": "The tag value.",
+ "smithy.api#required": {}
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#documentation": "A tag applied to the configuration."
+ }
+ },
+ "com.amazonaws.chatbot#TagKey": {
+ "type": "string",
+ "traits": {
+ "smithy.api#length": {
+ "min": 1,
+ "max": 128
+ }
+ }
+ },
+ "com.amazonaws.chatbot#TagKeyList": {
+ "type": "list",
+ "member": {
+ "target": "com.amazonaws.chatbot#TagKey"
+ },
+ "traits": {
+ "smithy.api#length": {
+ "min": 0,
+ "max": 200
+ }
+ }
+ },
+ "com.amazonaws.chatbot#TagList": {
+ "type": "list",
+ "member": {
+ "target": "com.amazonaws.chatbot#Tag"
+ },
+ "traits": {
+ "smithy.api#length": {
+ "min": 0,
+ "max": 200
+ }
+ }
+ },
+ "com.amazonaws.chatbot#TagResource": {
+ "type": "operation",
+ "input": {
+ "target": "com.amazonaws.chatbot#TagResourceRequest"
+ },
+ "output": {
+ "target": "com.amazonaws.chatbot#TagResourceResponse"
+ },
+ "errors": [
+ {
+ "target": "com.amazonaws.chatbot#InternalServiceError"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ResourceNotFoundException"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ServiceUnavailableException"
+ },
+ {
+ "target": "com.amazonaws.chatbot#TooManyTagsException"
+ }
+ ],
+ "traits": {
+ "smithy.api#documentation": "Applies the supplied tags to a configuration.",
+ "smithy.api#http": {
+ "method": "POST",
+ "uri": "/tag-resource",
+ "code": 200
+ }
+ }
+ },
+ "com.amazonaws.chatbot#TagResourceRequest": {
+ "type": "structure",
+ "members": {
+ "ResourceARN": {
+ "target": "com.amazonaws.chatbot#AmazonResourceName",
+ "traits": {
+ "smithy.api#documentation": "The ARN of the configuration.",
+ "smithy.api#required": {}
+ }
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#TagList",
+ "traits": {
+ "smithy.api#documentation": "A list of tags to apply to the configuration.",
+ "smithy.api#required": {}
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#input": {}
+ }
+ },
+ "com.amazonaws.chatbot#TagResourceResponse": {
+ "type": "structure",
+ "members": {},
+ "traits": {
+ "smithy.api#output": {}
+ }
+ },
+ "com.amazonaws.chatbot#TagValue": {
+ "type": "string",
+ "traits": {
+ "smithy.api#length": {
+ "min": 1,
+ "max": 256
+ }
+ }
+ },
+ "com.amazonaws.chatbot#Tags": {
+ "type": "list",
+ "member": {
+ "target": "com.amazonaws.chatbot#Tag"
+ }
+ },
"com.amazonaws.chatbot#TeamChannelConfigurationsList": {
"type": "list",
"member": {
@@ -2231,6 +2484,12 @@
"traits": {
"smithy.api#documentation": "Enables use of a user role requirement in your chat configuration."
}
+ },
+ "Tags": {
+ "target": "com.amazonaws.chatbot#Tags",
+ "traits": {
+ "smithy.api#documentation": "A list of tags applied to the configuration."
+ }
}
},
"traits": {
@@ -2316,6 +2575,19 @@
"smithy.api#documentation": "Identifes a user level permission for a channel configuration."
}
},
+ "com.amazonaws.chatbot#TooManyTagsException": {
+ "type": "structure",
+ "members": {
+ "message": {
+ "target": "com.amazonaws.chatbot#ErrorMessage"
+ }
+ },
+ "traits": {
+ "smithy.api#documentation": "The supplied list of tags contains too many tags.",
+ "smithy.api#error": "client",
+ "smithy.api#httpError": 400
+ }
+ },
"com.amazonaws.chatbot#UUID": {
"type": "string",
"traits": {
@@ -2326,6 +2598,63 @@
"smithy.api#pattern": "^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$"
}
},
+ "com.amazonaws.chatbot#UntagResource": {
+ "type": "operation",
+ "input": {
+ "target": "com.amazonaws.chatbot#UntagResourceRequest"
+ },
+ "output": {
+ "target": "com.amazonaws.chatbot#UntagResourceResponse"
+ },
+ "errors": [
+ {
+ "target": "com.amazonaws.chatbot#InternalServiceError"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ResourceNotFoundException"
+ },
+ {
+ "target": "com.amazonaws.chatbot#ServiceUnavailableException"
+ }
+ ],
+ "traits": {
+ "smithy.api#documentation": "Removes the supplied tags from a configuration",
+ "smithy.api#http": {
+ "method": "POST",
+ "uri": "/untag-resource",
+ "code": 200
+ }
+ }
+ },
+ "com.amazonaws.chatbot#UntagResourceRequest": {
+ "type": "structure",
+ "members": {
+ "ResourceARN": {
+ "target": "com.amazonaws.chatbot#AmazonResourceName",
+ "traits": {
+ "smithy.api#documentation": "The ARN of the configuration.",
+ "smithy.api#required": {}
+ }
+ },
+ "TagKeys": {
+ "target": "com.amazonaws.chatbot#TagKeyList",
+ "traits": {
+ "smithy.api#documentation": "A list of tag keys to remove from the configuration.",
+ "smithy.api#required": {}
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#input": {}
+ }
+ },
+ "com.amazonaws.chatbot#UntagResourceResponse": {
+ "type": "structure",
+ "members": {},
+ "traits": {
+ "smithy.api#output": {}
+ }
+ },
"com.amazonaws.chatbot#UpdateAccountPreferences": {
"type": "operation",
"input": {
@@ -2797,6 +3126,15 @@
{
"target": "com.amazonaws.chatbot#ListMicrosoftTeamsUserIdentities"
},
+ {
+ "target": "com.amazonaws.chatbot#ListTagsForResource"
+ },
+ {
+ "target": "com.amazonaws.chatbot#TagResource"
+ },
+ {
+ "target": "com.amazonaws.chatbot#UntagResource"
+ },
{
"target": "com.amazonaws.chatbot#UpdateAccountPreferences"
},
diff --git a/aws-models/cloudformation.json b/aws-models/cloudformation.json
index 6ea959868ab2..a2160e7f7e4f 100644
--- a/aws-models/cloudformation.json
+++ b/aws-models/cloudformation.json
@@ -3417,6 +3417,12 @@
"traits": {
"smithy.api#documentation": "
A unique identifier for this DeleteStack request. Specify this token if you plan to retry requests\n so that CloudFormation knows that you're not attempting to delete a stack with the same name. You might retry\n DeleteStack requests to ensure that CloudFormation successfully received them.
\n
All events initiated by a given stack operation are assigned the same client request token, which you can use to\n track operations. For example, if you execute a CreateStack operation with the token\n token1, then all the StackEvents generated by that operation will have\n ClientRequestToken set as token1.
\n
In the console, stack operations display the client request token on the Events tab. Stack operations that are\n initiated from the console use the token format Console-StackOperation-ID, which helps you\n easily identify the stack operation . For example, if you create a stack using the console, each stack event would be\n assigned the same token in the following format:\n Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002.
When set to true, newly created resources are deleted when the operation rolls back. This includes\n newly created resources marked with a deletion policy of Retain.
Specifies how the concurrency level behaves during the operation execution.
\n
\n
\n
\n STRICT_FAILURE_TOLERANCE: This option dynamically lowers the concurrency level to ensure the\n number of failed accounts never exceeds the value of FailureToleranceCount +1. The initial actual\n concurrency is set to the lower of either the value of the MaxConcurrentCount, or the value of\n MaxConcurrentCount +1. The actual concurrency is then reduced proportionally by the number of\n failures. This is the default behavior.
\n
If failure tolerance or Maximum concurrent accounts are set to percentages, the behavior is similar.
\n
\n
\n
\n SOFT_FAILURE_TOLERANCE: This option decouples FailureToleranceCount from the actual\n concurrency. This allows stack set operations to run at the concurrency level set by the\n MaxConcurrentCount value, or MaxConcurrentPercentage, regardless of the number of\n failures.
\n
\n
"
+ "smithy.api#documentation": "
Specifies how the concurrency level behaves during the operation execution.
\n
\n
\n
\n STRICT_FAILURE_TOLERANCE: This option dynamically lowers the concurrency level to ensure the\n number of failed accounts never exceeds the value of FailureToleranceCount +1. The initial actual\n concurrency is set to the lower of either the value of the MaxConcurrentCount, or the value of\n FailureToleranceCount +1. The actual concurrency is then reduced proportionally by the number of\n failures. This is the default behavior.
\n
If failure tolerance or Maximum concurrent accounts are set to percentages, the behavior is similar.
\n
\n
\n
\n SOFT_FAILURE_TOLERANCE: This option decouples FailureToleranceCount from the actual\n concurrency. This allows stack set operations to run at the concurrency level set by the\n MaxConcurrentCount value, or MaxConcurrentPercentage, regardless of the number of\n failures.
Returns the public key and an import token you need to import or reimport key material for\n a KMS key.
\n
By default, KMS keys are created with key material that KMS generates. This operation\n supports Importing key\n material, an advanced feature that lets you generate and import the cryptographic\n key material for a KMS key. For more information about importing key material into KMS, see\n Importing key\n material in the Key Management Service Developer Guide.
\n
Before calling GetParametersForImport, use the CreateKey\n operation with an Origin value of EXTERNAL to create a KMS key with\n no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key,\n asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material\n into a multi-Region key of any supported type. However, you can't import key material into\n a KMS key in a custom key store. You can also use GetParametersForImport to get a\n public key and import token to reimport the original key\n material into a KMS key whose key material expired or was deleted.
\n
\n GetParametersForImport returns the items that you need to import your key\n material.
\n
\n
\n
The public key (or \"wrapping key\") of an RSA key pair that KMS generates.
\n
You will use this public key to encrypt (\"wrap\") your key material while it's in\n transit to KMS.
\n
\n
\n
A import token that ensures that KMS can decrypt your key material and associate it\n with the correct KMS key.
\n
\n
\n
The public key and its import token are permanently linked and must be used together. Each\n public key and import token set is valid for 24 hours. The expiration date and time appear in\n the ParametersValidTo field in the GetParametersForImport response.\n You cannot use an expired public key or import token in an ImportKeyMaterial\n request. If your key and token expire, send another GetParametersForImport\n request.
\n
\n GetParametersForImport requires the following information:
\n
\n
\n
The key ID of the KMS key for which you are importing the key material.
\n
\n
\n
The key spec of the public key (\"wrapping key\") that you will use to encrypt your key\n material during import.
\n
\n
\n
The wrapping algorithm that you will use with the public key to encrypt your key\n material.
\n
\n
\n
You can use the same or a different public key spec and wrapping algorithm each time you\n import or reimport the same key material.
\n
The KMS key that you use for this operation must be in a compatible key state. For\ndetails, see Key states of KMS keys in the Key Management Service Developer Guide.
\n
\n Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account.
\n Eventual consistency: The KMS API follows an eventual consistency model. \n For more information, see KMS eventual consistency.
"
+ "smithy.api#documentation": "
Returns the public key and an import token you need to import or reimport key material for\n a KMS key.
\n
By default, KMS keys are created with key material that KMS generates. This operation\n supports Importing key\n material, an advanced feature that lets you generate and import the cryptographic\n key material for a KMS key. For more information about importing key material into KMS, see\n Importing key\n material in the Key Management Service Developer Guide.
\n
Before calling GetParametersForImport, use the CreateKey\n operation with an Origin value of EXTERNAL to create a KMS key with\n no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key,\n asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material\n into a multi-Region key of any supported type. However, you can't import key material into\n a KMS key in a custom key store. You can also use GetParametersForImport to get a\n public key and import token to reimport the original key\n material into a KMS key whose key material expired or was deleted.
\n
\n GetParametersForImport returns the items that you need to import your key\n material.
\n
\n
\n
The public key (or \"wrapping key\") of an asymmetric key pair that KMS generates.
\n
You will use this public key to encrypt (\"wrap\") your key material while it's in\n transit to KMS.
\n
\n
\n
A import token that ensures that KMS can decrypt your key material and associate it\n with the correct KMS key.
\n
\n
\n
The public key and its import token are permanently linked and must be used together. Each\n public key and import token set is valid for 24 hours. The expiration date and time appear in\n the ParametersValidTo field in the GetParametersForImport response.\n You cannot use an expired public key or import token in an ImportKeyMaterial\n request. If your key and token expire, send another GetParametersForImport\n request.
\n
\n GetParametersForImport requires the following information:
\n
\n
\n
The key ID of the KMS key for which you are importing the key material.
\n
\n
\n
The key spec of the public key (\"wrapping key\") that you will use to encrypt your key\n material during import.
\n
\n
\n
The wrapping algorithm that you will use with the public key to encrypt your key\n material.
\n
\n
\n
You can use the same or a different public key spec and wrapping algorithm each time you\n import or reimport the same key material.
\n
The KMS key that you use for this operation must be in a compatible key state. For\ndetails, see Key states of KMS keys in the Key Management Service Developer Guide.
\n
\n Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account.
The algorithm you will use with the RSA public key (PublicKey) in the\n response to protect your key material during import. For more information, see Select a wrapping algorithm in the Key Management Service Developer Guide.
\n
For RSA_AES wrapping algorithms, you encrypt your key material with an AES key that you\n generate, then encrypt your AES key with the RSA public key from KMS. For RSAES wrapping\n algorithms, you encrypt your key material directly with the RSA public key from KMS.
\n
The wrapping algorithms that you can use depend on the type of key material that you are\n importing. To import an RSA private key, you must use an RSA_AES wrapping algorithm.
\n RSAES_OAEP_SHA_256 — Supported for all types\n of key material, except RSA key material (private key).
\n
You cannot use the RSAES_OAEP_SHA_256 wrapping algorithm with the RSA_2048 wrapping\n key spec to wrap ECC_NIST_P521 key material.
\n
\n
\n
\n RSAES_OAEP_SHA_1 — Supported for all types of\n key material, except RSA key material (private key).
\n
You cannot use the RSAES_OAEP_SHA_1 wrapping algorithm with the RSA_2048 wrapping key\n spec to wrap ECC_NIST_P521 key material.
\n
\n
\n
\n RSAES_PKCS1_V1_5 (Deprecated) — As of October\n 10, 2023, KMS does not support the RSAES_PKCS1_V1_5 wrapping algorithm.
\n
\n
",
+ "smithy.api#documentation": "
The algorithm you will use with the asymmetric public key (PublicKey) in the\n response to protect your key material during import. For more information, see Select a wrapping algorithm in the Key Management Service Developer Guide.
\n
For RSA_AES wrapping algorithms, you encrypt your key material with an AES key that you\n generate, then encrypt your AES key with the RSA public key from KMS. For RSAES wrapping\n algorithms, you encrypt your key material directly with the RSA public key from KMS. \n For SM2PKE wrapping algorithms, you encrypt your key material directly with the SM2 public key \n from KMS.
\n
The wrapping algorithms that you can use depend on the type of key material that you are\n importing. To import an RSA private key, you must use an RSA_AES wrapping algorithm, except \n in China Regions, where you must use the SM2PKE wrapping algorithm to import an RSA private key.
\n
The SM2PKE wrapping algorithm is available only in China Regions. The \n RSA_AES_KEY_WRAP_SHA_256 and RSA_AES_KEY_WRAP_SHA_1 \n wrapping algorithms are not supported in China Regions.
The type of RSA public key to return in the response. You will use this wrapping key with\n the specified wrapping algorithm to protect your key material during import.
\n
Use the longest RSA wrapping key that is practical.
\n
You cannot use an RSA_2048 public key to directly wrap an ECC_NIST_P521 private key.\n Instead, use an RSA_AES wrapping algorithm or choose a longer RSA public key.
",
+ "smithy.api#documentation": "
The type of public key to return in the response. You will use this wrapping key with\n the specified wrapping algorithm to protect your key material during import.
\n
Use the longest wrapping key that is practical.
\n
You cannot use an RSA_2048 public key to directly wrap an ECC_NIST_P521 private key.\n Instead, use an RSA_AES wrapping algorithm or choose a longer RSA public key.
\n
The SM2 wrapping key spec is available only in China Regions.
A string value that you want WAF to search for. WAF searches only in the part of\n web requests that you designate for inspection in FieldToMatch. The\n maximum length of the value is 200 bytes.
\n
Valid values depend on the component that you specify for inspection in\n FieldToMatch:
\n
\n
\n
\n Method: The HTTP method that you want WAF to search for. This\n indicates the type of operation specified in the request.
\n
\n
\n
\n UriPath: The value that you want WAF to search for in the URI path,\n for example, /images/daily-ad.jpg.
\n
\n
\n
\n JA3Fingerprint: Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
\n
\n
\n HeaderOrder: The list of header names to match for. WAF creates a \n string that contains the ordered list of header names, from the headers in the web request, and then matches against that string.
\n
\n
\n
If SearchString includes alphabetic characters A-Z and a-z, note that the\n value is case sensitive.
\n
\n If you're using the WAF API\n
\n
Specify a base64-encoded version of the value. The maximum length of the value before\n you base64-encode it is 200 bytes.
\n
For example, suppose the value of Type is HEADER and the value\n of Data is User-Agent. If you want to search the\n User-Agent header for the value BadBot, you base64-encode\n BadBot using MIME base64-encoding and include the resulting value,\n QmFkQm90, in the value of SearchString.
\n
\n If you're using the CLI or one of the Amazon Web Services SDKs\n
\n
The value that you want WAF to search for. The SDK automatically base64 encodes the\n value.
",
+ "smithy.api#documentation": "
A string value that you want WAF to search for. WAF searches only in the part of\n web requests that you designate for inspection in FieldToMatch. The\n maximum length of the value is 200 bytes.
\n
Valid values depend on the component that you specify for inspection in\n FieldToMatch:
\n
\n
\n
\n Method: The HTTP method that you want WAF to search for. This\n indicates the type of operation specified in the request.
\n
\n
\n
\n UriPath: The value that you want WAF to search for in the URI path,\n for example, /images/daily-ad.jpg.
\n
\n
\n
\n JA3Fingerprint: Available for use with Amazon CloudFront distributions and Application Load Balancers. Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
\n
\n
\n HeaderOrder: The list of header names to match for. WAF creates a \n string that contains the ordered list of header names, from the headers in the web request, and then matches against that string.
\n
\n
\n
If SearchString includes alphabetic characters A-Z and a-z, note that the\n value is case sensitive.
\n
\n If you're using the WAF API\n
\n
Specify a base64-encoded version of the value. The maximum length of the value before\n you base64-encode it is 200 bytes.
\n
For example, suppose the value of Type is HEADER and the value\n of Data is User-Agent. If you want to search the\n User-Agent header for the value BadBot, you base64-encode\n BadBot using MIME base64-encoding and include the resulting value,\n QmFkQm90, in the value of SearchString.
\n
\n If you're using the CLI or one of the Amazon Web Services SDKs\n
\n
The value that you want WAF to search for. The SDK automatically base64 encodes the\n value.
The owner of the logging configuration, which must be set to CUSTOMER for the configurations that you manage.
\n
The log scope SECURITY_LAKE indicates a configuration that is managed through Amazon Security Lake. You can use Security Lake to collect log and event data from various sources for normalization, analysis, and management. For information, see \n Collecting data from Amazon Web Services services\n in the Amazon Security Lake user guide.
Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. WAF calculates and logs this fingerprint for each\n\t\t\t\t\t\trequest that has enough TLS Client Hello information for the calculation. Almost \n all web requests include this information.
\n \n
You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n \n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
Provide the JA3 fingerprint string from the logs in your string match statement\n\t\t\t\t\t\t\tspecification, to match with any future requests that have the same TLS configuration.
"
+ "smithy.api#documentation": "
Available for use with Amazon CloudFront distributions and Application Load Balancers. Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. WAF calculates and logs this fingerprint for each\n\t\t\t\t\t\trequest that has enough TLS Client Hello information for the calculation. Almost \n all web requests include this information.
\n \n
You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n \n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
Provide the JA3 fingerprint string from the logs in your string match statement\n\t\t\t\t\t\t\tspecification, to match with any future requests that have the same TLS configuration.
Specifies a web request component to be used in a rule match statement or in a logging configuration.
\n
\n
\n
In a rule statement, this is the part of the web request that you want WAF to inspect. Include the single\n FieldToMatch type that you want to inspect, with additional specifications\n as needed, according to the type. You specify a single request component in\n FieldToMatch for each rule statement that requires it. To inspect more than\n one component of the web request, create a separate rule statement for each\n component.
\n
Example JSON for a QueryString field to match:
\n
\n \"FieldToMatch\": { \"QueryString\": {} }\n
\n
Example JSON for a Method field to match specification:
In a logging configuration, this is used in the RedactedFields property to specify a field to \n redact from the logging records. For this use case, note the following:
\n
\n
\n
Even though all FieldToMatch settings \n are available, the only valid settings for field redaction are UriPath, QueryString, SingleHeader, and Method.
\n
\n
\n
In this documentation, the descriptions of the individual fields talk about specifying the web request component to inspect, \n but for field redaction, you are specifying the component type to redact from the logs.
\n
\n
\n
\n
"
+ "smithy.api#documentation": "
Specifies a web request component to be used in a rule match statement or in a logging configuration.
\n
\n
\n
In a rule statement, this is the part of the web request that you want WAF to inspect. Include the single\n FieldToMatch type that you want to inspect, with additional specifications\n as needed, according to the type. You specify a single request component in\n FieldToMatch for each rule statement that requires it. To inspect more than\n one component of the web request, create a separate rule statement for each\n component.
\n
Example JSON for a QueryString field to match:
\n
\n \"FieldToMatch\": { \"QueryString\": {} }\n
\n
Example JSON for a Method field to match specification:
In a logging configuration, this is used in the RedactedFields property to specify a field to \n redact from the logging records. For this use case, note the following:
\n
\n
\n
Even though all FieldToMatch settings \n are available, the only valid settings for field redaction are UriPath, QueryString, SingleHeader, and Method.
\n
\n
\n
In this documentation, the descriptions of the individual fields talk about specifying the web request component to inspect, \n but for field redaction, you are specifying the component type to redact from the logs.
\n
\n
\n
If you have request sampling enabled, the redacted fields configuration for logging has no impact on sampling. \n The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
The owner of the logging configuration, which must be set to CUSTOMER for the configurations that you manage.
\n
The log scope SECURITY_LAKE indicates a configuration that is managed through Amazon Security Lake. You can use Security Lake to collect log and event data from various sources for normalization, analysis, and management. For information, see \n Collecting data from Amazon Web Services services\n in the Amazon Security Lake user guide.
Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. WAF calculates and logs this fingerprint for each\n\t\t\t\t\t\trequest that has enough TLS Client Hello information for the calculation. Almost \n all web requests include this information.
\n \n
You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n \n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
Provide the JA3 fingerprint string from the logs in your string match statement\n\t\t\t\t\t\t\tspecification, to match with any future requests that have the same TLS configuration.
"
+ "smithy.api#documentation": "
Available for use with Amazon CloudFront distributions and Application Load Balancers. Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. WAF calculates and logs this fingerprint for each\n\t\t\t\t\t\trequest that has enough TLS Client Hello information for the calculation. Almost \n all web requests include this information.
\n \n
You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to \n EXACTLY.
\n \n
You can obtain the JA3 fingerprint for client requests from the web ACL logs. \n\t\t\t\t\t\tIf WAF is able to calculate the fingerprint, it includes it in the logs. \n\t\t\t\t\t\tFor information about the logging fields, \nsee Log fields in the WAF Developer Guide.
\n
Provide the JA3 fingerprint string from the logs in your string match statement\n\t\t\t\t\t\t\tspecification, to match with any future requests that have the same TLS configuration.
The maximum number of objects that you want WAF to return for this request. If more \n objects are available, in the response, WAF provides a \n NextMarker value that you can use in a subsequent call to get the next batch of objects.
The owner of the logging configuration, which must be set to CUSTOMER for the configurations that you manage.
\n
The log scope SECURITY_LAKE indicates a configuration that is managed through Amazon Security Lake. You can use Security Lake to collect log and event data from various sources for normalization, analysis, and management. For information, see \n Collecting data from Amazon Web Services services\n in the Amazon Security Lake user guide.
The parts of the request that you want to keep out of the logs.
\n
For example, if you\n redact the SingleHeader field, the HEADER field in the logs will\n be REDACTED for all rules that use the SingleHeader\n FieldToMatch setting.
\n
Redaction applies only to the component that's specified in the rule's FieldToMatch setting, so the SingleHeader redaction \n doesn't apply to rules that use the Headers\n FieldToMatch.
\n \n
You can specify only the following fields for redaction: UriPath,\n QueryString, SingleHeader, and Method.
\n "
+ "smithy.api#documentation": "
The parts of the request that you want to keep out of the logs.
\n
For example, if you\n redact the SingleHeader field, the HEADER field in the logs will\n be REDACTED for all rules that use the SingleHeader\n FieldToMatch setting.
\n
Redaction applies only to the component that's specified in the rule's FieldToMatch setting, so the SingleHeader redaction \n doesn't apply to rules that use the Headers\n FieldToMatch.
\n \n
You can specify only the following fields for redaction: UriPath,\n QueryString, SingleHeader, and Method.
\n \n \n
This setting has no impact on request sampling. With request sampling, \n the only way to exclude fields is by disabling sampling in the web ACL visibility configuration.
Filtering that specifies which web requests are kept in the logs and which are dropped.\n You can filter on the rule action and on the web request labels that were applied by\n matching rules during web ACL evaluation.
The owner of the logging configuration, which must be set to CUSTOMER for the configurations that you manage.
\n
The log scope SECURITY_LAKE indicates a configuration that is managed through Amazon Security Lake. You can use Security Lake to collect log and event data from various sources for normalization, analysis, and management. For information, see \n Collecting data from Amazon Web Services services\n in the Amazon Security Lake user guide.
Indicates whether WAF should store a sampling of the web requests that\n match the rules. You can view the sampled requests through the WAF console.
",
+ "smithy.api#documentation": "
Indicates whether WAF should store a sampling of the web requests that\n match the rules. You can view the sampled requests through the WAF console.
\n \n
Request sampling doesn't provide a field redaction option, and any field redaction that you specify in your logging configuration doesn't affect sampling. \n The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
\n ",
"smithy.api#required": {}
}
},
diff --git a/sdk/chatbot/src/client.rs b/sdk/chatbot/src/client.rs
index dcc798cff82d..438cf238d527 100644
--- a/sdk/chatbot/src/client.rs
+++ b/sdk/chatbot/src/client.rs
@@ -201,6 +201,12 @@ mod list_microsoft_teams_configured_teams;
mod list_microsoft_teams_user_identities;
+mod list_tags_for_resource;
+
+mod tag_resource;
+
+mod untag_resource;
+
mod update_account_preferences;
mod update_chime_webhook_configuration;
diff --git a/sdk/chatbot/src/client/create_chime_webhook_configuration.rs b/sdk/chatbot/src/client/create_chime_webhook_configuration.rs
index b0198e9caf71..072ea9c91c14 100644
--- a/sdk/chatbot/src/client/create_chime_webhook_configuration.rs
+++ b/sdk/chatbot/src/client/create_chime_webhook_configuration.rs
@@ -9,6 +9,7 @@ impl super::Client {
/// - [`iam_role_arn(impl Into)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::iam_role_arn) / [`set_iam_role_arn(Option)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::set_iam_role_arn): required: **true** This is a user-defined role that AWS Chatbot will assume. This is not the service-linked role. For more information, see IAM Policies for AWS Chatbot.
/// - [`configuration_name(impl Into)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::configuration_name) / [`set_configuration_name(Option)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::set_configuration_name): required: **true** The name of the configuration.
/// - [`logging_level(impl Into)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::logging_level) / [`set_logging_level(Option)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::set_logging_level): required: **false** Logging levels include ERROR, INFO, or NONE.
+ /// - [`tags(Tag)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::tags) / [`set_tags(Option>)`](crate::operation::create_chime_webhook_configuration::builders::CreateChimeWebhookConfigurationFluentBuilder::set_tags): required: **false** A list of tags to apply to the configuration.
/// - On success, responds with [`CreateChimeWebhookConfigurationOutput`](crate::operation::create_chime_webhook_configuration::CreateChimeWebhookConfigurationOutput) with field(s):
/// - [`webhook_configuration(Option)`](crate::operation::create_chime_webhook_configuration::CreateChimeWebhookConfigurationOutput::webhook_configuration): Chime webhook configuration.
/// - On failure, responds with [`SdkError`](crate::operation::create_chime_webhook_configuration::CreateChimeWebhookConfigurationError)
diff --git a/sdk/chatbot/src/client/create_microsoft_teams_channel_configuration.rs b/sdk/chatbot/src/client/create_microsoft_teams_channel_configuration.rs
index c254bd820535..ae27cc711589 100644
--- a/sdk/chatbot/src/client/create_microsoft_teams_channel_configuration.rs
+++ b/sdk/chatbot/src/client/create_microsoft_teams_channel_configuration.rs
@@ -14,6 +14,7 @@ impl super::Client {
/// - [`logging_level(impl Into)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::logging_level) / [`set_logging_level(Option)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::set_logging_level): required: **false** Logging levels include ERROR, INFO, or NONE.
/// - [`guardrail_policy_arns(impl Into)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::guardrail_policy_arns) / [`set_guardrail_policy_arns(Option>)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::set_guardrail_policy_arns): required: **false** The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied by default if this is not set.
/// - [`user_authorization_required(bool)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::user_authorization_required) / [`set_user_authorization_required(Option)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::set_user_authorization_required): required: **false** Enables use of a user role requirement in your chat configuration.
+ /// - [`tags(Tag)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::tags) / [`set_tags(Option>)`](crate::operation::create_microsoft_teams_channel_configuration::builders::CreateMicrosoftTeamsChannelConfigurationFluentBuilder::set_tags): required: **false** A list of tags to apply to the configuration.
/// - On success, responds with [`CreateMicrosoftTeamsChannelConfigurationOutput`](crate::operation::create_microsoft_teams_channel_configuration::CreateMicrosoftTeamsChannelConfigurationOutput) with field(s):
/// - [`channel_configuration(Option)`](crate::operation::create_microsoft_teams_channel_configuration::CreateMicrosoftTeamsChannelConfigurationOutput::channel_configuration): The configuration for a Microsoft Teams channel configured with AWS Chatbot.
/// - On failure, responds with [`SdkError`](crate::operation::create_microsoft_teams_channel_configuration::CreateMicrosoftTeamsChannelConfigurationError)
diff --git a/sdk/chatbot/src/client/create_slack_channel_configuration.rs b/sdk/chatbot/src/client/create_slack_channel_configuration.rs
index 56d43f600932..30de76410e1f 100644
--- a/sdk/chatbot/src/client/create_slack_channel_configuration.rs
+++ b/sdk/chatbot/src/client/create_slack_channel_configuration.rs
@@ -12,6 +12,7 @@ impl super::Client {
/// - [`logging_level(impl Into)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::logging_level) / [`set_logging_level(Option)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::set_logging_level): required: **false** Logging levels include ERROR, INFO, or NONE.
/// - [`guardrail_policy_arns(impl Into)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::guardrail_policy_arns) / [`set_guardrail_policy_arns(Option>)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::set_guardrail_policy_arns): required: **false** The list of IAM policy ARNs that are applied as channel guardrails. The AWS managed 'AdministratorAccess' policy is applied by default if this is not set.
/// - [`user_authorization_required(bool)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::user_authorization_required) / [`set_user_authorization_required(Option)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::set_user_authorization_required): required: **false** Enables use of a user role requirement in your chat configuration.
+ /// - [`tags(Tag)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::tags) / [`set_tags(Option>)`](crate::operation::create_slack_channel_configuration::builders::CreateSlackChannelConfigurationFluentBuilder::set_tags): required: **false** A list of tags to apply to the configuration.
/// - On success, responds with [`CreateSlackChannelConfigurationOutput`](crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationOutput) with field(s):
/// - [`channel_configuration(Option)`](crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationOutput::channel_configuration): The configuration for a Slack channel configured with AWS Chatbot.
/// - On failure, responds with [`SdkError`](crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError)
diff --git a/sdk/chatbot/src/client/list_tags_for_resource.rs b/sdk/chatbot/src/client/list_tags_for_resource.rs
new file mode 100644
index 000000000000..2f97bceffa37
--- /dev/null
+++ b/sdk/chatbot/src/client/list_tags_for_resource.rs
@@ -0,0 +1,13 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+impl super::Client {
+ /// Constructs a fluent builder for the [`ListTagsForResource`](crate::operation::list_tags_for_resource::builders::ListTagsForResourceFluentBuilder) operation.
+ ///
+ /// - The fluent builder is configurable:
+ /// - [`resource_arn(impl Into)`](crate::operation::list_tags_for_resource::builders::ListTagsForResourceFluentBuilder::resource_arn) / [`set_resource_arn(Option)`](crate::operation::list_tags_for_resource::builders::ListTagsForResourceFluentBuilder::set_resource_arn): required: **true** The ARN of the configuration.
+ /// - On success, responds with [`ListTagsForResourceOutput`](crate::operation::list_tags_for_resource::ListTagsForResourceOutput) with field(s):
+ /// - [`tags(Option>)`](crate::operation::list_tags_for_resource::ListTagsForResourceOutput::tags): A list of tags applied to the configuration.
+ /// - On failure, responds with [`SdkError`](crate::operation::list_tags_for_resource::ListTagsForResourceError)
+ pub fn list_tags_for_resource(&self) -> crate::operation::list_tags_for_resource::builders::ListTagsForResourceFluentBuilder {
+ crate::operation::list_tags_for_resource::builders::ListTagsForResourceFluentBuilder::new(self.handle.clone())
+ }
+}
diff --git a/sdk/chatbot/src/client/tag_resource.rs b/sdk/chatbot/src/client/tag_resource.rs
new file mode 100644
index 000000000000..6823d12acded
--- /dev/null
+++ b/sdk/chatbot/src/client/tag_resource.rs
@@ -0,0 +1,13 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+impl super::Client {
+ /// Constructs a fluent builder for the [`TagResource`](crate::operation::tag_resource::builders::TagResourceFluentBuilder) operation.
+ ///
+ /// - The fluent builder is configurable:
+ /// - [`resource_arn(impl Into)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::resource_arn) / [`set_resource_arn(Option)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::set_resource_arn): required: **true** The ARN of the configuration.
+ /// - [`tags(Tag)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::tags) / [`set_tags(Option>)`](crate::operation::tag_resource::builders::TagResourceFluentBuilder::set_tags): required: **true** A list of tags to apply to the configuration.
+ /// - On success, responds with [`TagResourceOutput`](crate::operation::tag_resource::TagResourceOutput)
+ /// - On failure, responds with [`SdkError`](crate::operation::tag_resource::TagResourceError)
+ pub fn tag_resource(&self) -> crate::operation::tag_resource::builders::TagResourceFluentBuilder {
+ crate::operation::tag_resource::builders::TagResourceFluentBuilder::new(self.handle.clone())
+ }
+}
diff --git a/sdk/chatbot/src/client/untag_resource.rs b/sdk/chatbot/src/client/untag_resource.rs
new file mode 100644
index 000000000000..fb461a45088c
--- /dev/null
+++ b/sdk/chatbot/src/client/untag_resource.rs
@@ -0,0 +1,13 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+impl super::Client {
+ /// Constructs a fluent builder for the [`UntagResource`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder) operation.
+ ///
+ /// - The fluent builder is configurable:
+ /// - [`resource_arn(impl Into)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::resource_arn) / [`set_resource_arn(Option)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::set_resource_arn): required: **true** The ARN of the configuration.
+ /// - [`tag_keys(impl Into)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::tag_keys) / [`set_tag_keys(Option>)`](crate::operation::untag_resource::builders::UntagResourceFluentBuilder::set_tag_keys): required: **true** A list of tag keys to remove from the configuration.
+ /// - On success, responds with [`UntagResourceOutput`](crate::operation::untag_resource::UntagResourceOutput)
+ /// - On failure, responds with [`SdkError`](crate::operation::untag_resource::UntagResourceError)
+ pub fn untag_resource(&self) -> crate::operation::untag_resource::builders::UntagResourceFluentBuilder {
+ crate::operation::untag_resource::builders::UntagResourceFluentBuilder::new(self.handle.clone())
+ }
+}
diff --git a/sdk/chatbot/src/error_meta.rs b/sdk/chatbot/src/error_meta.rs
index c5eac9be1240..1a899f52d24f 100644
--- a/sdk/chatbot/src/error_meta.rs
+++ b/sdk/chatbot/src/error_meta.rs
@@ -37,6 +37,8 @@ pub enum Error {
GetAccountPreferencesException(crate::types::error::GetAccountPreferencesException),
/// We can’t process your request right now because of a server issue. Try again later.
GetTeamsChannelConfigurationException(crate::types::error::GetTeamsChannelConfigurationException),
+ /// Customer/consumer-facing internal service exception. https://w.amazon.com/index.php/AWS/API_Standards/Exceptions#InternalServiceError
+ InternalServiceError(crate::types::error::InternalServiceError),
/// Your request input doesn't meet the constraints that AWS Chatbot requires.
InvalidParameterException(crate::types::error::InvalidParameterException),
/// Your request input doesn't meet the constraints that AWS Chatbot requires.
@@ -52,6 +54,10 @@ pub enum Error {
/// We were not able to find the resource for your request.
ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
/// We can’t process your request right now because of a server issue. Try again later.
+ ServiceUnavailableException(crate::types::error::ServiceUnavailableException),
+ /// The supplied list of tags contains too many tags.
+ TooManyTagsException(crate::types::error::TooManyTagsException),
+ /// We can’t process your request right now because of a server issue. Try again later.
UpdateAccountPreferencesException(crate::types::error::UpdateAccountPreferencesException),
/// We can’t process your request right now because of a server issue. Try again later.
UpdateChimeWebhookConfigurationException(crate::types::error::UpdateChimeWebhookConfigurationException),
@@ -88,6 +94,7 @@ impl ::std::fmt::Display for Error {
Error::DescribeSlackWorkspacesException(inner) => inner.fmt(f),
Error::GetAccountPreferencesException(inner) => inner.fmt(f),
Error::GetTeamsChannelConfigurationException(inner) => inner.fmt(f),
+ Error::InternalServiceError(inner) => inner.fmt(f),
Error::InvalidParameterException(inner) => inner.fmt(f),
Error::InvalidRequestException(inner) => inner.fmt(f),
Error::LimitExceededException(inner) => inner.fmt(f),
@@ -95,6 +102,8 @@ impl ::std::fmt::Display for Error {
Error::ListMicrosoftTeamsUserIdentitiesException(inner) => inner.fmt(f),
Error::ListTeamsChannelConfigurationsException(inner) => inner.fmt(f),
Error::ResourceNotFoundException(inner) => inner.fmt(f),
+ Error::ServiceUnavailableException(inner) => inner.fmt(f),
+ Error::TooManyTagsException(inner) => inner.fmt(f),
Error::UpdateAccountPreferencesException(inner) => inner.fmt(f),
Error::UpdateChimeWebhookConfigurationException(inner) => inner.fmt(f),
Error::UpdateSlackChannelConfigurationException(inner) => inner.fmt(f),
@@ -137,6 +146,7 @@ impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for Error {
Self::DescribeSlackWorkspacesException(inner) => inner.meta(),
Self::GetAccountPreferencesException(inner) => inner.meta(),
Self::GetTeamsChannelConfigurationException(inner) => inner.meta(),
+ Self::InternalServiceError(inner) => inner.meta(),
Self::InvalidParameterException(inner) => inner.meta(),
Self::InvalidRequestException(inner) => inner.meta(),
Self::LimitExceededException(inner) => inner.meta(),
@@ -144,6 +154,8 @@ impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for Error {
Self::ListMicrosoftTeamsUserIdentitiesException(inner) => inner.meta(),
Self::ListTeamsChannelConfigurationsException(inner) => inner.meta(),
Self::ResourceNotFoundException(inner) => inner.meta(),
+ Self::ServiceUnavailableException(inner) => inner.meta(),
+ Self::TooManyTagsException(inner) => inner.meta(),
Self::UpdateAccountPreferencesException(inner) => inner.meta(),
Self::UpdateChimeWebhookConfigurationException(inner) => inner.meta(),
Self::UpdateSlackChannelConfigurationException(inner) => inner.meta(),
@@ -858,6 +870,83 @@ impl From From<::aws_smithy_runtime_api::client::result::SdkError> for Error
+where
+ R: Send + Sync + std::fmt::Debug + 'static,
+{
+ fn from(err: ::aws_smithy_runtime_api::client::result::SdkError) -> Self {
+ match err {
+ ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
+ _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
+ source: err.into(),
+ }),
+ }
+ }
+}
+impl From for Error {
+ fn from(err: crate::operation::list_tags_for_resource::ListTagsForResourceError) -> Self {
+ match err {
+ crate::operation::list_tags_for_resource::ListTagsForResourceError::InternalServiceError(inner) => Error::InternalServiceError(inner),
+ crate::operation::list_tags_for_resource::ListTagsForResourceError::ResourceNotFoundException(inner) => {
+ Error::ResourceNotFoundException(inner)
+ }
+ crate::operation::list_tags_for_resource::ListTagsForResourceError::ServiceUnavailableException(inner) => {
+ Error::ServiceUnavailableException(inner)
+ }
+ crate::operation::list_tags_for_resource::ListTagsForResourceError::Unhandled(inner) => Error::Unhandled(inner),
+ }
+ }
+}
+impl From<::aws_smithy_runtime_api::client::result::SdkError> for Error
+where
+ R: Send + Sync + std::fmt::Debug + 'static,
+{
+ fn from(err: ::aws_smithy_runtime_api::client::result::SdkError) -> Self {
+ match err {
+ ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
+ _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
+ source: err.into(),
+ }),
+ }
+ }
+}
+impl From for Error {
+ fn from(err: crate::operation::tag_resource::TagResourceError) -> Self {
+ match err {
+ crate::operation::tag_resource::TagResourceError::InternalServiceError(inner) => Error::InternalServiceError(inner),
+ crate::operation::tag_resource::TagResourceError::ResourceNotFoundException(inner) => Error::ResourceNotFoundException(inner),
+ crate::operation::tag_resource::TagResourceError::ServiceUnavailableException(inner) => Error::ServiceUnavailableException(inner),
+ crate::operation::tag_resource::TagResourceError::TooManyTagsException(inner) => Error::TooManyTagsException(inner),
+ crate::operation::tag_resource::TagResourceError::Unhandled(inner) => Error::Unhandled(inner),
+ }
+ }
+}
+impl From<::aws_smithy_runtime_api::client::result::SdkError> for Error
+where
+ R: Send + Sync + std::fmt::Debug + 'static,
+{
+ fn from(err: ::aws_smithy_runtime_api::client::result::SdkError) -> Self {
+ match err {
+ ::aws_smithy_runtime_api::client::result::SdkError::ServiceError(context) => Self::from(context.into_err()),
+ _ => Error::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ meta: ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(&err).clone(),
+ source: err.into(),
+ }),
+ }
+ }
+}
+impl From for Error {
+ fn from(err: crate::operation::untag_resource::UntagResourceError) -> Self {
+ match err {
+ crate::operation::untag_resource::UntagResourceError::InternalServiceError(inner) => Error::InternalServiceError(inner),
+ crate::operation::untag_resource::UntagResourceError::ResourceNotFoundException(inner) => Error::ResourceNotFoundException(inner),
+ crate::operation::untag_resource::UntagResourceError::ServiceUnavailableException(inner) => Error::ServiceUnavailableException(inner),
+ crate::operation::untag_resource::UntagResourceError::Unhandled(inner) => Error::Unhandled(inner),
+ }
+ }
+}
impl From<::aws_smithy_runtime_api::client::result::SdkError>
for Error
where
@@ -1035,6 +1124,7 @@ impl ::std::error::Error for Error {
Error::DescribeSlackWorkspacesException(inner) => inner.source(),
Error::GetAccountPreferencesException(inner) => inner.source(),
Error::GetTeamsChannelConfigurationException(inner) => inner.source(),
+ Error::InternalServiceError(inner) => inner.source(),
Error::InvalidParameterException(inner) => inner.source(),
Error::InvalidRequestException(inner) => inner.source(),
Error::LimitExceededException(inner) => inner.source(),
@@ -1042,6 +1132,8 @@ impl ::std::error::Error for Error {
Error::ListMicrosoftTeamsUserIdentitiesException(inner) => inner.source(),
Error::ListTeamsChannelConfigurationsException(inner) => inner.source(),
Error::ResourceNotFoundException(inner) => inner.source(),
+ Error::ServiceUnavailableException(inner) => inner.source(),
+ Error::TooManyTagsException(inner) => inner.source(),
Error::UpdateAccountPreferencesException(inner) => inner.source(),
Error::UpdateChimeWebhookConfigurationException(inner) => inner.source(),
Error::UpdateSlackChannelConfigurationException(inner) => inner.source(),
@@ -1070,6 +1162,7 @@ impl ::aws_types::request_id::RequestId for Error {
Self::DescribeSlackWorkspacesException(e) => e.request_id(),
Self::GetAccountPreferencesException(e) => e.request_id(),
Self::GetTeamsChannelConfigurationException(e) => e.request_id(),
+ Self::InternalServiceError(e) => e.request_id(),
Self::InvalidParameterException(e) => e.request_id(),
Self::InvalidRequestException(e) => e.request_id(),
Self::LimitExceededException(e) => e.request_id(),
@@ -1077,6 +1170,8 @@ impl ::aws_types::request_id::RequestId for Error {
Self::ListMicrosoftTeamsUserIdentitiesException(e) => e.request_id(),
Self::ListTeamsChannelConfigurationsException(e) => e.request_id(),
Self::ResourceNotFoundException(e) => e.request_id(),
+ Self::ServiceUnavailableException(e) => e.request_id(),
+ Self::TooManyTagsException(e) => e.request_id(),
Self::UpdateAccountPreferencesException(e) => e.request_id(),
Self::UpdateChimeWebhookConfigurationException(e) => e.request_id(),
Self::UpdateSlackChannelConfigurationException(e) => e.request_id(),
diff --git a/sdk/chatbot/src/operation.rs b/sdk/chatbot/src/operation.rs
index e7d44857af0a..e7cfdd71ecce 100644
--- a/sdk/chatbot/src/operation.rs
+++ b/sdk/chatbot/src/operation.rs
@@ -58,6 +58,15 @@ pub mod list_microsoft_teams_configured_teams;
/// Types for the `ListMicrosoftTeamsUserIdentities` operation.
pub mod list_microsoft_teams_user_identities;
+/// Types for the `ListTagsForResource` operation.
+pub mod list_tags_for_resource;
+
+/// Types for the `TagResource` operation.
+pub mod tag_resource;
+
+/// Types for the `UntagResource` operation.
+pub mod untag_resource;
+
/// Types for the `UpdateAccountPreferences` operation.
pub mod update_account_preferences;
diff --git a/sdk/chatbot/src/operation/create_chime_webhook_configuration/_create_chime_webhook_configuration_input.rs b/sdk/chatbot/src/operation/create_chime_webhook_configuration/_create_chime_webhook_configuration_input.rs
index 72437e2cd97a..eb109e37e360 100644
--- a/sdk/chatbot/src/operation/create_chime_webhook_configuration/_create_chime_webhook_configuration_input.rs
+++ b/sdk/chatbot/src/operation/create_chime_webhook_configuration/_create_chime_webhook_configuration_input.rs
@@ -15,6 +15,8 @@ pub struct CreateChimeWebhookConfigurationInput {
pub configuration_name: ::std::option::Option<::std::string::String>,
/// Logging levels include ERROR, INFO, or NONE.
pub logging_level: ::std::option::Option<::std::string::String>,
+ /// A list of tags to apply to the configuration.
+ pub tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateChimeWebhookConfigurationInput {
/// Description of the webhook. Recommend using the convention `RoomName/WebhookName`. See Chime setup tutorial for more details: https://docs.aws.amazon.com/chatbot/latest/adminguide/chime-setup.html.
@@ -43,6 +45,12 @@ impl CreateChimeWebhookConfigurationInput {
pub fn logging_level(&self) -> ::std::option::Option<&str> {
self.logging_level.as_deref()
}
+ /// A list of tags to apply to the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
+ pub fn tags(&self) -> &[crate::types::Tag] {
+ self.tags.as_deref().unwrap_or_default()
+ }
}
impl CreateChimeWebhookConfigurationInput {
/// Creates a new builder-style object to manufacture [`CreateChimeWebhookConfigurationInput`](crate::operation::create_chime_webhook_configuration::CreateChimeWebhookConfigurationInput).
@@ -61,6 +69,7 @@ pub struct CreateChimeWebhookConfigurationInputBuilder {
pub(crate) iam_role_arn: ::std::option::Option<::std::string::String>,
pub(crate) configuration_name: ::std::option::Option<::std::string::String>,
pub(crate) logging_level: ::std::option::Option<::std::string::String>,
+ pub(crate) tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateChimeWebhookConfigurationInputBuilder {
/// Description of the webhook. Recommend using the convention `RoomName/WebhookName`. See Chime setup tutorial for more details: https://docs.aws.amazon.com/chatbot/latest/adminguide/chime-setup.html.
@@ -157,6 +166,26 @@ impl CreateChimeWebhookConfigurationInputBuilder {
pub fn get_logging_level(&self) -> &::std::option::Option<::std::string::String> {
&self.logging_level
}
+ /// Appends an item to `tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ let mut v = self.tags.unwrap_or_default();
+ v.push(input);
+ self.tags = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.tags = input;
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ &self.tags
+ }
/// Consumes the builder and constructs a [`CreateChimeWebhookConfigurationInput`](crate::operation::create_chime_webhook_configuration::CreateChimeWebhookConfigurationInput).
pub fn build(
self,
@@ -172,6 +201,7 @@ impl CreateChimeWebhookConfigurationInputBuilder {
iam_role_arn: self.iam_role_arn,
configuration_name: self.configuration_name,
logging_level: self.logging_level,
+ tags: self.tags,
},
)
}
diff --git a/sdk/chatbot/src/operation/create_chime_webhook_configuration/builders.rs b/sdk/chatbot/src/operation/create_chime_webhook_configuration/builders.rs
index 20f348cd5513..7428814ee8ee 100644
--- a/sdk/chatbot/src/operation/create_chime_webhook_configuration/builders.rs
+++ b/sdk/chatbot/src/operation/create_chime_webhook_configuration/builders.rs
@@ -197,4 +197,23 @@ impl CreateChimeWebhookConfigurationFluentBuilder {
pub fn get_logging_level(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_logging_level()
}
+ ///
+ /// Appends an item to `Tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ self.inner = self.inner.tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.inner = self.inner.set_tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ self.inner.get_tags()
+ }
}
diff --git a/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/_create_microsoft_teams_channel_configuration_input.rs b/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/_create_microsoft_teams_channel_configuration_input.rs
index 03f7521f76aa..9bbf70ff85c9 100644
--- a/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/_create_microsoft_teams_channel_configuration_input.rs
+++ b/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/_create_microsoft_teams_channel_configuration_input.rs
@@ -25,6 +25,8 @@ pub struct CreateMicrosoftTeamsChannelConfigurationInput {
pub guardrail_policy_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
/// Enables use of a user role requirement in your chat configuration.
pub user_authorization_required: ::std::option::Option,
+ /// A list of tags to apply to the configuration.
+ pub tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateMicrosoftTeamsChannelConfigurationInput {
/// The ID of the Microsoft Teams channel.
@@ -75,6 +77,12 @@ impl CreateMicrosoftTeamsChannelConfigurationInput {
pub fn user_authorization_required(&self) -> ::std::option::Option {
self.user_authorization_required
}
+ /// A list of tags to apply to the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
+ pub fn tags(&self) -> &[crate::types::Tag] {
+ self.tags.as_deref().unwrap_or_default()
+ }
}
impl CreateMicrosoftTeamsChannelConfigurationInput {
/// Creates a new builder-style object to manufacture [`CreateMicrosoftTeamsChannelConfigurationInput`](crate::operation::create_microsoft_teams_channel_configuration::CreateMicrosoftTeamsChannelConfigurationInput).
@@ -99,6 +107,7 @@ pub struct CreateMicrosoftTeamsChannelConfigurationInputBuilder {
pub(crate) logging_level: ::std::option::Option<::std::string::String>,
pub(crate) guardrail_policy_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
pub(crate) user_authorization_required: ::std::option::Option,
+ pub(crate) tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateMicrosoftTeamsChannelConfigurationInputBuilder {
/// The ID of the Microsoft Teams channel.
@@ -272,6 +281,26 @@ impl CreateMicrosoftTeamsChannelConfigurationInputBuilder {
pub fn get_user_authorization_required(&self) -> &::std::option::Option {
&self.user_authorization_required
}
+ /// Appends an item to `tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ let mut v = self.tags.unwrap_or_default();
+ v.push(input);
+ self.tags = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.tags = input;
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ &self.tags
+ }
/// Consumes the builder and constructs a [`CreateMicrosoftTeamsChannelConfigurationInput`](crate::operation::create_microsoft_teams_channel_configuration::CreateMicrosoftTeamsChannelConfigurationInput).
pub fn build(
self,
@@ -292,6 +321,7 @@ impl CreateMicrosoftTeamsChannelConfigurationInputBuilder {
logging_level: self.logging_level,
guardrail_policy_arns: self.guardrail_policy_arns,
user_authorization_required: self.user_authorization_required,
+ tags: self.tags,
},
)
}
diff --git a/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/builders.rs b/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/builders.rs
index 7a9bd114ae6a..a01ba3137bdd 100644
--- a/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/builders.rs
+++ b/sdk/chatbot/src/operation/create_microsoft_teams_channel_configuration/builders.rs
@@ -276,4 +276,23 @@ impl CreateMicrosoftTeamsChannelConfigurationFluentBuilder {
pub fn get_user_authorization_required(&self) -> &::std::option::Option {
self.inner.get_user_authorization_required()
}
+ ///
+ /// Appends an item to `Tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ self.inner = self.inner.tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.inner = self.inner.set_tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ self.inner.get_tags()
+ }
}
diff --git a/sdk/chatbot/src/operation/create_slack_channel_configuration/_create_slack_channel_configuration_input.rs b/sdk/chatbot/src/operation/create_slack_channel_configuration/_create_slack_channel_configuration_input.rs
index 61747f11a72e..552deeafd2cf 100644
--- a/sdk/chatbot/src/operation/create_slack_channel_configuration/_create_slack_channel_configuration_input.rs
+++ b/sdk/chatbot/src/operation/create_slack_channel_configuration/_create_slack_channel_configuration_input.rs
@@ -21,6 +21,8 @@ pub struct CreateSlackChannelConfigurationInput {
pub guardrail_policy_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
/// Enables use of a user role requirement in your chat configuration.
pub user_authorization_required: ::std::option::Option,
+ /// A list of tags to apply to the configuration.
+ pub tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateSlackChannelConfigurationInput {
/// The ID of the Slack workspace authorized with AWS Chatbot.
@@ -63,6 +65,12 @@ impl CreateSlackChannelConfigurationInput {
pub fn user_authorization_required(&self) -> ::std::option::Option {
self.user_authorization_required
}
+ /// A list of tags to apply to the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
+ pub fn tags(&self) -> &[crate::types::Tag] {
+ self.tags.as_deref().unwrap_or_default()
+ }
}
impl CreateSlackChannelConfigurationInput {
/// Creates a new builder-style object to manufacture [`CreateSlackChannelConfigurationInput`](crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationInput).
@@ -84,6 +92,7 @@ pub struct CreateSlackChannelConfigurationInputBuilder {
pub(crate) logging_level: ::std::option::Option<::std::string::String>,
pub(crate) guardrail_policy_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
pub(crate) user_authorization_required: ::std::option::Option,
+ pub(crate) tags: ::std::option::Option<::std::vec::Vec>,
}
impl CreateSlackChannelConfigurationInputBuilder {
/// The ID of the Slack workspace authorized with AWS Chatbot.
@@ -228,6 +237,26 @@ impl CreateSlackChannelConfigurationInputBuilder {
pub fn get_user_authorization_required(&self) -> &::std::option::Option {
&self.user_authorization_required
}
+ /// Appends an item to `tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ let mut v = self.tags.unwrap_or_default();
+ v.push(input);
+ self.tags = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.tags = input;
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ &self.tags
+ }
/// Consumes the builder and constructs a [`CreateSlackChannelConfigurationInput`](crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationInput).
pub fn build(
self,
@@ -246,6 +275,7 @@ impl CreateSlackChannelConfigurationInputBuilder {
logging_level: self.logging_level,
guardrail_policy_arns: self.guardrail_policy_arns,
user_authorization_required: self.user_authorization_required,
+ tags: self.tags,
},
)
}
diff --git a/sdk/chatbot/src/operation/create_slack_channel_configuration/builders.rs b/sdk/chatbot/src/operation/create_slack_channel_configuration/builders.rs
index 92b2b8b9be70..fb840f29ae14 100644
--- a/sdk/chatbot/src/operation/create_slack_channel_configuration/builders.rs
+++ b/sdk/chatbot/src/operation/create_slack_channel_configuration/builders.rs
@@ -244,4 +244,23 @@ impl CreateSlackChannelConfigurationFluentBuilder {
pub fn get_user_authorization_required(&self) -> &::std::option::Option {
self.inner.get_user_authorization_required()
}
+ ///
+ /// Appends an item to `Tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ self.inner = self.inner.tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.inner = self.inner.set_tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ self.inner.get_tags()
+ }
}
diff --git a/sdk/chatbot/src/operation/list_tags_for_resource.rs b/sdk/chatbot/src/operation/list_tags_for_resource.rs
new file mode 100644
index 000000000000..f274a104df13
--- /dev/null
+++ b/sdk/chatbot/src/operation/list_tags_for_resource.rs
@@ -0,0 +1,372 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+/// Orchestration and serialization glue logic for `ListTagsForResource`.
+#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
+#[non_exhaustive]
+pub struct ListTagsForResource;
+impl ListTagsForResource {
+ /// Creates a new `ListTagsForResource`
+ pub fn new() -> Self {
+ Self
+ }
+ pub(crate) async fn orchestrate(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+ ) -> ::std::result::Result<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >| {
+ err.map_service_error(|err| {
+ err.downcast::()
+ .expect("correct error type")
+ })
+ };
+ let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
+ .await
+ .map_err(map_err)?;
+ let output = context.finalize().map_err(map_err)?;
+ ::std::result::Result::Ok(
+ output
+ .downcast::()
+ .expect("correct output type"),
+ )
+ }
+
+ pub(crate) async fn orchestrate_with_stop_point(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+ stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
+ ) -> ::std::result::Result<
+ ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
+ ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("chatbot", "ListTagsForResource", input, runtime_plugins, stop_point).await
+ }
+
+ pub(crate) fn operation_runtime_plugins(
+ client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ client_config: &crate::config::Config,
+ config_override: ::std::option::Option,
+ ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
+ let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
+ runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
+ ::aws_runtime::auth::sigv4::SCHEME_ID,
+ ]));
+ if let ::std::option::Option::Some(config_override) = config_override {
+ for plugin in config_override.runtime_plugins.iter().cloned() {
+ runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
+ }
+ runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
+ config_override,
+ client_config.config.clone(),
+ &client_config.runtime_components,
+ ));
+ }
+ runtime_plugins
+ }
+}
+impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ListTagsForResource {
+ fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
+ let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ListTagsForResource");
+
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
+ ListTagsForResourceRequestSerializer,
+ ));
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
+ ListTagsForResourceResponseDeserializer,
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
+ ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
+ "ListTagsForResource",
+ "chatbot",
+ ));
+ let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
+ signing_options.double_uri_encode = true;
+ signing_options.content_sha256_header = false;
+ signing_options.normalize_uri_path = true;
+ signing_options.payload_override = None;
+
+ cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
+ signing_options,
+ ..::std::default::Default::default()
+ });
+
+ ::std::option::Option::Some(cfg.freeze())
+ }
+
+ fn runtime_components(
+ &self,
+ _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
+ ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
+ #[allow(unused_mut)]
+ let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ListTagsForResource")
+ .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
+ .with_interceptor(ListTagsForResourceEndpointParamsInterceptor)
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ >::new())
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ >::new())
+ .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ >::new());
+
+ ::std::borrow::Cow::Owned(rcb)
+ }
+}
+
+#[derive(Debug)]
+struct ListTagsForResourceResponseDeserializer;
+impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ListTagsForResourceResponseDeserializer {
+ fn deserialize_nonstreaming(
+ &self,
+ response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
+ let (success, status) = (response.status().is_success(), response.status().as_u16());
+ let headers = response.headers();
+ let body = response.body().bytes().expect("body loaded");
+ #[allow(unused_mut)]
+ let mut force_error = false;
+ ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
+ let parse_result = if !success && status != 200 || force_error {
+ crate::protocol_serde::shape_list_tags_for_resource::de_list_tags_for_resource_http_error(status, headers, body)
+ } else {
+ crate::protocol_serde::shape_list_tags_for_resource::de_list_tags_for_resource_http_response(status, headers, body)
+ };
+ crate::protocol_serde::type_erase_result(parse_result)
+ }
+}
+#[derive(Debug)]
+struct ListTagsForResourceRequestSerializer;
+impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ListTagsForResourceRequestSerializer {
+ #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
+ fn serialize_input(
+ &self,
+ input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
+ let input = input
+ .downcast::()
+ .expect("correct type");
+ let _header_serialization_settings = _cfg
+ .load::()
+ .cloned()
+ .unwrap_or_default();
+ let mut request_builder = {
+ fn uri_base(
+ _input: &crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+ output: &mut ::std::string::String,
+ ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
+ use ::std::fmt::Write as _;
+ ::std::write!(output, "/list-tags-for-resource").expect("formatting should succeed");
+ ::std::result::Result::Ok(())
+ }
+ #[allow(clippy::unnecessary_wraps)]
+ fn update_http_builder(
+ input: &crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+ builder: ::http::request::Builder,
+ ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
+ let mut uri = ::std::string::String::new();
+ uri_base(input, &mut uri)?;
+ ::std::result::Result::Ok(builder.method("POST").uri(uri))
+ }
+ let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
+ builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
+ builder
+ };
+ let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_list_tags_for_resource::ser_list_tags_for_resource_input(
+ &input,
+ )?);
+ if let Some(content_length) = body.content_length() {
+ let content_length = content_length.to_string();
+ request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
+ }
+ ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
+ }
+}
+#[derive(Debug)]
+struct ListTagsForResourceEndpointParamsInterceptor;
+
+impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ListTagsForResourceEndpointParamsInterceptor {
+ fn name(&self) -> &'static str {
+ "ListTagsForResourceEndpointParamsInterceptor"
+ }
+
+ fn read_before_execution(
+ &self,
+ context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
+ '_,
+ ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ ::aws_smithy_runtime_api::client::interceptors::context::Output,
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ >,
+ cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
+ let _input = context
+ .input()
+ .downcast_ref::()
+ .ok_or("failed to downcast to ListTagsForResourceInput")?;
+
+ let params = crate::config::endpoint::Params::builder()
+ .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
+ .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
+ .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
+ .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
+ .build()
+ .map_err(|err| {
+ ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
+ })?;
+ cfg.interceptor_state()
+ .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
+ ::std::result::Result::Ok(())
+ }
+}
+
+/// Error type for the `ListTagsForResourceError` operation.
+#[non_exhaustive]
+#[derive(::std::fmt::Debug)]
+pub enum ListTagsForResourceError {
+ /// Customer/consumer-facing internal service exception. https://w.amazon.com/index.php/AWS/API_Standards/Exceptions#InternalServiceError
+ InternalServiceError(crate::types::error::InternalServiceError),
+ /// We were not able to find the resource for your request.
+ ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
+ /// We can’t process your request right now because of a server issue. Try again later.
+ ServiceUnavailableException(crate::types::error::ServiceUnavailableException),
+ /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
+ #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
+ variable wildcard pattern and check `.code()`:
+ \
+ `err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
+ \
+ See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ListTagsForResourceError) for what information is available for the error.")]
+ Unhandled(crate::error::sealed_unhandled::Unhandled),
+}
+impl ListTagsForResourceError {
+ /// Creates the `ListTagsForResourceError::Unhandled` variant from any error type.
+ pub fn unhandled(
+ err: impl ::std::convert::Into<::std::boxed::Box>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.into(),
+ meta: ::std::default::Default::default(),
+ })
+ }
+
+ /// Creates the `ListTagsForResourceError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
+ pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.clone().into(),
+ meta: err,
+ })
+ }
+ ///
+ /// Returns error metadata, which includes the error code, message,
+ /// request ID, and potentially additional information.
+ ///
+ pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ServiceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::Unhandled(e) => &e.meta,
+ }
+ }
+ /// Returns `true` if the error kind is `ListTagsForResourceError::InternalServiceError`.
+ pub fn is_internal_service_error(&self) -> bool {
+ matches!(self, Self::InternalServiceError(_))
+ }
+ /// Returns `true` if the error kind is `ListTagsForResourceError::ResourceNotFoundException`.
+ pub fn is_resource_not_found_exception(&self) -> bool {
+ matches!(self, Self::ResourceNotFoundException(_))
+ }
+ /// Returns `true` if the error kind is `ListTagsForResourceError::ServiceUnavailableException`.
+ pub fn is_service_unavailable_exception(&self) -> bool {
+ matches!(self, Self::ServiceUnavailableException(_))
+ }
+}
+impl ::std::error::Error for ListTagsForResourceError {
+ fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
+ match self {
+ Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
+ Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
+ Self::ServiceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
+ Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
+ }
+ }
+}
+impl ::std::fmt::Display for ListTagsForResourceError {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ match self {
+ Self::InternalServiceError(_inner) => _inner.fmt(f),
+ Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
+ Self::ServiceUnavailableException(_inner) => _inner.fmt(f),
+ Self::Unhandled(_inner) => {
+ if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
+ write!(f, "unhandled error ({code})")
+ } else {
+ f.write_str("unhandled error")
+ }
+ }
+ }
+ }
+}
+impl ::aws_smithy_types::retry::ProvideErrorKind for ListTagsForResourceError {
+ fn code(&self) -> ::std::option::Option<&str> {
+ ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
+ }
+ fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
+ ::std::option::Option::None
+ }
+}
+impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ListTagsForResourceError {
+ fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ServiceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::Unhandled(_inner) => &_inner.meta,
+ }
+ }
+}
+impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ListTagsForResourceError {
+ fn create_unhandled_error(
+ source: ::std::boxed::Box,
+ meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source,
+ meta: meta.unwrap_or_default(),
+ })
+ }
+}
+impl ::aws_types::request_id::RequestId for crate::operation::list_tags_for_resource::ListTagsForResourceError {
+ fn request_id(&self) -> Option<&str> {
+ self.meta().request_id()
+ }
+}
+
+pub use crate::operation::list_tags_for_resource::_list_tags_for_resource_output::ListTagsForResourceOutput;
+
+pub use crate::operation::list_tags_for_resource::_list_tags_for_resource_input::ListTagsForResourceInput;
+
+mod _list_tags_for_resource_input;
+
+mod _list_tags_for_resource_output;
+
+/// Builders
+pub mod builders;
diff --git a/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_input.rs b/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_input.rs
new file mode 100644
index 000000000000..cf6e0cb99727
--- /dev/null
+++ b/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_input.rs
@@ -0,0 +1,53 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct ListTagsForResourceInput {
+ /// The ARN of the configuration.
+ pub resource_arn: ::std::option::Option<::std::string::String>,
+}
+impl ListTagsForResourceInput {
+ /// The ARN of the configuration.
+ pub fn resource_arn(&self) -> ::std::option::Option<&str> {
+ self.resource_arn.as_deref()
+ }
+}
+impl ListTagsForResourceInput {
+ /// Creates a new builder-style object to manufacture [`ListTagsForResourceInput`](crate::operation::list_tags_for_resource::ListTagsForResourceInput).
+ pub fn builder() -> crate::operation::list_tags_for_resource::builders::ListTagsForResourceInputBuilder {
+ crate::operation::list_tags_for_resource::builders::ListTagsForResourceInputBuilder::default()
+ }
+}
+
+/// A builder for [`ListTagsForResourceInput`](crate::operation::list_tags_for_resource::ListTagsForResourceInput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct ListTagsForResourceInputBuilder {
+ pub(crate) resource_arn: ::std::option::Option<::std::string::String>,
+}
+impl ListTagsForResourceInputBuilder {
+ /// The ARN of the configuration.
+ /// This field is required.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.resource_arn = ::std::option::Option::Some(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.resource_arn = input;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ &self.resource_arn
+ }
+ /// Consumes the builder and constructs a [`ListTagsForResourceInput`](crate::operation::list_tags_for_resource::ListTagsForResourceInput).
+ pub fn build(
+ self,
+ ) -> ::std::result::Result
+ {
+ ::std::result::Result::Ok(crate::operation::list_tags_for_resource::ListTagsForResourceInput {
+ resource_arn: self.resource_arn,
+ })
+ }
+}
diff --git a/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_output.rs b/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_output.rs
new file mode 100644
index 000000000000..8c9a5abd86b2
--- /dev/null
+++ b/sdk/chatbot/src/operation/list_tags_for_resource/_list_tags_for_resource_output.rs
@@ -0,0 +1,74 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct ListTagsForResourceOutput {
+ /// A list of tags applied to the configuration.
+ pub tags: ::std::option::Option<::std::vec::Vec>,
+ _request_id: Option,
+}
+impl ListTagsForResourceOutput {
+ /// A list of tags applied to the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
+ pub fn tags(&self) -> &[crate::types::Tag] {
+ self.tags.as_deref().unwrap_or_default()
+ }
+}
+impl ::aws_types::request_id::RequestId for ListTagsForResourceOutput {
+ fn request_id(&self) -> Option<&str> {
+ self._request_id.as_deref()
+ }
+}
+impl ListTagsForResourceOutput {
+ /// Creates a new builder-style object to manufacture [`ListTagsForResourceOutput`](crate::operation::list_tags_for_resource::ListTagsForResourceOutput).
+ pub fn builder() -> crate::operation::list_tags_for_resource::builders::ListTagsForResourceOutputBuilder {
+ crate::operation::list_tags_for_resource::builders::ListTagsForResourceOutputBuilder::default()
+ }
+}
+
+/// A builder for [`ListTagsForResourceOutput`](crate::operation::list_tags_for_resource::ListTagsForResourceOutput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct ListTagsForResourceOutputBuilder {
+ pub(crate) tags: ::std::option::Option<::std::vec::Vec>,
+ _request_id: Option,
+}
+impl ListTagsForResourceOutputBuilder {
+ /// Appends an item to `tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags applied to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ let mut v = self.tags.unwrap_or_default();
+ v.push(input);
+ self.tags = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tags applied to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.tags = input;
+ self
+ }
+ /// A list of tags applied to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ &self.tags
+ }
+ pub(crate) fn _request_id(mut self, request_id: impl Into) -> Self {
+ self._request_id = Some(request_id.into());
+ self
+ }
+
+ pub(crate) fn _set_request_id(&mut self, request_id: Option) -> &mut Self {
+ self._request_id = request_id;
+ self
+ }
+ /// Consumes the builder and constructs a [`ListTagsForResourceOutput`](crate::operation::list_tags_for_resource::ListTagsForResourceOutput).
+ pub fn build(self) -> crate::operation::list_tags_for_resource::ListTagsForResourceOutput {
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput {
+ tags: self.tags,
+ _request_id: self._request_id,
+ }
+ }
+}
diff --git a/sdk/chatbot/src/operation/list_tags_for_resource/builders.rs b/sdk/chatbot/src/operation/list_tags_for_resource/builders.rs
new file mode 100644
index 000000000000..bdb0faad948e
--- /dev/null
+++ b/sdk/chatbot/src/operation/list_tags_for_resource/builders.rs
@@ -0,0 +1,125 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub use crate::operation::list_tags_for_resource::_list_tags_for_resource_output::ListTagsForResourceOutputBuilder;
+
+pub use crate::operation::list_tags_for_resource::_list_tags_for_resource_input::ListTagsForResourceInputBuilder;
+
+impl crate::operation::list_tags_for_resource::builders::ListTagsForResourceInputBuilder {
+ /// Sends a request with this input using the given client.
+ pub async fn send_with(
+ self,
+ client: &crate::Client,
+ ) -> ::std::result::Result<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let mut fluent_builder = client.list_tags_for_resource();
+ fluent_builder.inner = self;
+ fluent_builder.send().await
+ }
+}
+/// Fluent builder constructing a request to `ListTagsForResource`.
+///
+/// Retrieves the list of tags applied to a configuration.
+#[derive(::std::clone::Clone, ::std::fmt::Debug)]
+pub struct ListTagsForResourceFluentBuilder {
+ handle: ::std::sync::Arc,
+ inner: crate::operation::list_tags_for_resource::builders::ListTagsForResourceInputBuilder,
+ config_override: ::std::option::Option,
+}
+impl
+ crate::client::customize::internal::CustomizableSend<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ > for ListTagsForResourceFluentBuilder
+{
+ fn send(
+ self,
+ config_override: crate::config::Builder,
+ ) -> crate::client::customize::internal::BoxFuture<
+ crate::client::customize::internal::SendResult<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ >,
+ > {
+ ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
+ }
+}
+impl ListTagsForResourceFluentBuilder {
+ /// Creates a new `ListTagsForResourceFluentBuilder`.
+ pub(crate) fn new(handle: ::std::sync::Arc) -> Self {
+ Self {
+ handle,
+ inner: ::std::default::Default::default(),
+ config_override: ::std::option::Option::None,
+ }
+ }
+ /// Access the ListTagsForResource as a reference.
+ pub fn as_input(&self) -> &crate::operation::list_tags_for_resource::builders::ListTagsForResourceInputBuilder {
+ &self.inner
+ }
+ /// Sends the request and returns the response.
+ ///
+ /// If an error occurs, an `SdkError` will be returned with additional details that
+ /// can be matched against.
+ ///
+ /// By default, any retryable failures will be retried twice. Retry behavior
+ /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
+ /// set when configuring the client.
+ pub async fn send(
+ self,
+ ) -> ::std::result::Result<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = self
+ .inner
+ .build()
+ .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
+ let runtime_plugins = crate::operation::list_tags_for_resource::ListTagsForResource::operation_runtime_plugins(
+ self.handle.runtime_plugins.clone(),
+ &self.handle.conf,
+ self.config_override,
+ );
+ crate::operation::list_tags_for_resource::ListTagsForResource::orchestrate(&runtime_plugins, input).await
+ }
+
+ /// Consumes this builder, creating a customizable operation that can be modified before being sent.
+ pub fn customize(
+ self,
+ ) -> crate::client::customize::CustomizableOperation<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+ Self,
+ > {
+ crate::client::customize::CustomizableOperation::new(self)
+ }
+ pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into) -> Self {
+ self.set_config_override(::std::option::Option::Some(config_override.into()));
+ self
+ }
+
+ pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option) -> &mut Self {
+ self.config_override = config_override;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.inner = self.inner.resource_arn(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.inner = self.inner.set_resource_arn(input);
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ self.inner.get_resource_arn()
+ }
+}
diff --git a/sdk/chatbot/src/operation/tag_resource.rs b/sdk/chatbot/src/operation/tag_resource.rs
new file mode 100644
index 000000000000..e9ae8b9eb6fe
--- /dev/null
+++ b/sdk/chatbot/src/operation/tag_resource.rs
@@ -0,0 +1,377 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+/// Orchestration and serialization glue logic for `TagResource`.
+#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
+#[non_exhaustive]
+pub struct TagResource;
+impl TagResource {
+ /// Creates a new `TagResource`
+ pub fn new() -> Self {
+ Self
+ }
+ pub(crate) async fn orchestrate(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::tag_resource::TagResourceInput,
+ ) -> ::std::result::Result<
+ crate::operation::tag_resource::TagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::tag_resource::TagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >| {
+ err.map_service_error(|err| {
+ err.downcast::()
+ .expect("correct error type")
+ })
+ };
+ let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
+ .await
+ .map_err(map_err)?;
+ let output = context.finalize().map_err(map_err)?;
+ ::std::result::Result::Ok(
+ output
+ .downcast::()
+ .expect("correct output type"),
+ )
+ }
+
+ pub(crate) async fn orchestrate_with_stop_point(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::tag_resource::TagResourceInput,
+ stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
+ ) -> ::std::result::Result<
+ ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
+ ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("chatbot", "TagResource", input, runtime_plugins, stop_point).await
+ }
+
+ pub(crate) fn operation_runtime_plugins(
+ client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ client_config: &crate::config::Config,
+ config_override: ::std::option::Option,
+ ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
+ let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
+ runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
+ ::aws_runtime::auth::sigv4::SCHEME_ID,
+ ]));
+ if let ::std::option::Option::Some(config_override) = config_override {
+ for plugin in config_override.runtime_plugins.iter().cloned() {
+ runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
+ }
+ runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
+ config_override,
+ client_config.config.clone(),
+ &client_config.runtime_components,
+ ));
+ }
+ runtime_plugins
+ }
+}
+impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for TagResource {
+ fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
+ let mut cfg = ::aws_smithy_types::config_bag::Layer::new("TagResource");
+
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
+ TagResourceRequestSerializer,
+ ));
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
+ TagResourceResponseDeserializer,
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
+ ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("TagResource", "chatbot"));
+ let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
+ signing_options.double_uri_encode = true;
+ signing_options.content_sha256_header = false;
+ signing_options.normalize_uri_path = true;
+ signing_options.payload_override = None;
+
+ cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
+ signing_options,
+ ..::std::default::Default::default()
+ });
+
+ ::std::option::Option::Some(cfg.freeze())
+ }
+
+ fn runtime_components(
+ &self,
+ _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
+ ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
+ #[allow(unused_mut)]
+ let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("TagResource")
+ .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
+ .with_interceptor(TagResourceEndpointParamsInterceptor)
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
+ crate::operation::tag_resource::TagResourceError,
+ >::new())
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
+ crate::operation::tag_resource::TagResourceError,
+ >::new())
+ .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
+ crate::operation::tag_resource::TagResourceError,
+ >::new());
+
+ ::std::borrow::Cow::Owned(rcb)
+ }
+}
+
+#[derive(Debug)]
+struct TagResourceResponseDeserializer;
+impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for TagResourceResponseDeserializer {
+ fn deserialize_nonstreaming(
+ &self,
+ response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
+ let (success, status) = (response.status().is_success(), response.status().as_u16());
+ let headers = response.headers();
+ let body = response.body().bytes().expect("body loaded");
+ #[allow(unused_mut)]
+ let mut force_error = false;
+ ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
+ let parse_result = if !success && status != 200 || force_error {
+ crate::protocol_serde::shape_tag_resource::de_tag_resource_http_error(status, headers, body)
+ } else {
+ crate::protocol_serde::shape_tag_resource::de_tag_resource_http_response(status, headers, body)
+ };
+ crate::protocol_serde::type_erase_result(parse_result)
+ }
+}
+#[derive(Debug)]
+struct TagResourceRequestSerializer;
+impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for TagResourceRequestSerializer {
+ #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
+ fn serialize_input(
+ &self,
+ input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
+ let input = input
+ .downcast::()
+ .expect("correct type");
+ let _header_serialization_settings = _cfg
+ .load::()
+ .cloned()
+ .unwrap_or_default();
+ let mut request_builder = {
+ fn uri_base(
+ _input: &crate::operation::tag_resource::TagResourceInput,
+ output: &mut ::std::string::String,
+ ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
+ use ::std::fmt::Write as _;
+ ::std::write!(output, "/tag-resource").expect("formatting should succeed");
+ ::std::result::Result::Ok(())
+ }
+ #[allow(clippy::unnecessary_wraps)]
+ fn update_http_builder(
+ input: &crate::operation::tag_resource::TagResourceInput,
+ builder: ::http::request::Builder,
+ ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
+ let mut uri = ::std::string::String::new();
+ uri_base(input, &mut uri)?;
+ ::std::result::Result::Ok(builder.method("POST").uri(uri))
+ }
+ let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
+ builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
+ builder
+ };
+ let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_tag_resource::ser_tag_resource_input(&input)?);
+ if let Some(content_length) = body.content_length() {
+ let content_length = content_length.to_string();
+ request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
+ }
+ ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
+ }
+}
+#[derive(Debug)]
+struct TagResourceEndpointParamsInterceptor;
+
+impl ::aws_smithy_runtime_api::client::interceptors::Intercept for TagResourceEndpointParamsInterceptor {
+ fn name(&self) -> &'static str {
+ "TagResourceEndpointParamsInterceptor"
+ }
+
+ fn read_before_execution(
+ &self,
+ context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
+ '_,
+ ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ ::aws_smithy_runtime_api::client::interceptors::context::Output,
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ >,
+ cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
+ let _input = context
+ .input()
+ .downcast_ref::()
+ .ok_or("failed to downcast to TagResourceInput")?;
+
+ let params = crate::config::endpoint::Params::builder()
+ .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
+ .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
+ .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
+ .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
+ .build()
+ .map_err(|err| {
+ ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
+ })?;
+ cfg.interceptor_state()
+ .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
+ ::std::result::Result::Ok(())
+ }
+}
+
+/// Error type for the `TagResourceError` operation.
+#[non_exhaustive]
+#[derive(::std::fmt::Debug)]
+pub enum TagResourceError {
+ /// Customer/consumer-facing internal service exception. https://w.amazon.com/index.php/AWS/API_Standards/Exceptions#InternalServiceError
+ InternalServiceError(crate::types::error::InternalServiceError),
+ /// We were not able to find the resource for your request.
+ ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
+ /// We can’t process your request right now because of a server issue. Try again later.
+ ServiceUnavailableException(crate::types::error::ServiceUnavailableException),
+ /// The supplied list of tags contains too many tags.
+ TooManyTagsException(crate::types::error::TooManyTagsException),
+ /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
+ #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
+ variable wildcard pattern and check `.code()`:
+ \
+ `err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
+ \
+ See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-TagResourceError) for what information is available for the error.")]
+ Unhandled(crate::error::sealed_unhandled::Unhandled),
+}
+impl TagResourceError {
+ /// Creates the `TagResourceError::Unhandled` variant from any error type.
+ pub fn unhandled(
+ err: impl ::std::convert::Into<::std::boxed::Box>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.into(),
+ meta: ::std::default::Default::default(),
+ })
+ }
+
+ /// Creates the `TagResourceError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
+ pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.clone().into(),
+ meta: err,
+ })
+ }
+ ///
+ /// Returns error metadata, which includes the error code, message,
+ /// request ID, and potentially additional information.
+ ///
+ pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ServiceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::TooManyTagsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::Unhandled(e) => &e.meta,
+ }
+ }
+ /// Returns `true` if the error kind is `TagResourceError::InternalServiceError`.
+ pub fn is_internal_service_error(&self) -> bool {
+ matches!(self, Self::InternalServiceError(_))
+ }
+ /// Returns `true` if the error kind is `TagResourceError::ResourceNotFoundException`.
+ pub fn is_resource_not_found_exception(&self) -> bool {
+ matches!(self, Self::ResourceNotFoundException(_))
+ }
+ /// Returns `true` if the error kind is `TagResourceError::ServiceUnavailableException`.
+ pub fn is_service_unavailable_exception(&self) -> bool {
+ matches!(self, Self::ServiceUnavailableException(_))
+ }
+ /// Returns `true` if the error kind is `TagResourceError::TooManyTagsException`.
+ pub fn is_too_many_tags_exception(&self) -> bool {
+ matches!(self, Self::TooManyTagsException(_))
+ }
+}
+impl ::std::error::Error for TagResourceError {
+ fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
+ match self {
+ Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
+ Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
+ Self::ServiceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
+ Self::TooManyTagsException(_inner) => ::std::option::Option::Some(_inner),
+ Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
+ }
+ }
+}
+impl ::std::fmt::Display for TagResourceError {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ match self {
+ Self::InternalServiceError(_inner) => _inner.fmt(f),
+ Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
+ Self::ServiceUnavailableException(_inner) => _inner.fmt(f),
+ Self::TooManyTagsException(_inner) => _inner.fmt(f),
+ Self::Unhandled(_inner) => {
+ if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
+ write!(f, "unhandled error ({code})")
+ } else {
+ f.write_str("unhandled error")
+ }
+ }
+ }
+ }
+}
+impl ::aws_smithy_types::retry::ProvideErrorKind for TagResourceError {
+ fn code(&self) -> ::std::option::Option<&str> {
+ ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
+ }
+ fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
+ ::std::option::Option::None
+ }
+}
+impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for TagResourceError {
+ fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ServiceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::TooManyTagsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::Unhandled(_inner) => &_inner.meta,
+ }
+ }
+}
+impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for TagResourceError {
+ fn create_unhandled_error(
+ source: ::std::boxed::Box,
+ meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source,
+ meta: meta.unwrap_or_default(),
+ })
+ }
+}
+impl ::aws_types::request_id::RequestId for crate::operation::tag_resource::TagResourceError {
+ fn request_id(&self) -> Option<&str> {
+ self.meta().request_id()
+ }
+}
+
+pub use crate::operation::tag_resource::_tag_resource_output::TagResourceOutput;
+
+pub use crate::operation::tag_resource::_tag_resource_input::TagResourceInput;
+
+mod _tag_resource_input;
+
+mod _tag_resource_output;
+
+/// Builders
+pub mod builders;
diff --git a/sdk/chatbot/src/operation/tag_resource/_tag_resource_input.rs b/sdk/chatbot/src/operation/tag_resource/_tag_resource_input.rs
new file mode 100644
index 000000000000..fbb7827bf715
--- /dev/null
+++ b/sdk/chatbot/src/operation/tag_resource/_tag_resource_input.rs
@@ -0,0 +1,80 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct TagResourceInput {
+ /// The ARN of the configuration.
+ pub resource_arn: ::std::option::Option<::std::string::String>,
+ /// A list of tags to apply to the configuration.
+ pub tags: ::std::option::Option<::std::vec::Vec>,
+}
+impl TagResourceInput {
+ /// The ARN of the configuration.
+ pub fn resource_arn(&self) -> ::std::option::Option<&str> {
+ self.resource_arn.as_deref()
+ }
+ /// A list of tags to apply to the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
+ pub fn tags(&self) -> &[crate::types::Tag] {
+ self.tags.as_deref().unwrap_or_default()
+ }
+}
+impl TagResourceInput {
+ /// Creates a new builder-style object to manufacture [`TagResourceInput`](crate::operation::tag_resource::TagResourceInput).
+ pub fn builder() -> crate::operation::tag_resource::builders::TagResourceInputBuilder {
+ crate::operation::tag_resource::builders::TagResourceInputBuilder::default()
+ }
+}
+
+/// A builder for [`TagResourceInput`](crate::operation::tag_resource::TagResourceInput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct TagResourceInputBuilder {
+ pub(crate) resource_arn: ::std::option::Option<::std::string::String>,
+ pub(crate) tags: ::std::option::Option<::std::vec::Vec>,
+}
+impl TagResourceInputBuilder {
+ /// The ARN of the configuration.
+ /// This field is required.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.resource_arn = ::std::option::Option::Some(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.resource_arn = input;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ &self.resource_arn
+ }
+ /// Appends an item to `tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ let mut v = self.tags.unwrap_or_default();
+ v.push(input);
+ self.tags = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.tags = input;
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ &self.tags
+ }
+ /// Consumes the builder and constructs a [`TagResourceInput`](crate::operation::tag_resource::TagResourceInput).
+ pub fn build(self) -> ::std::result::Result {
+ ::std::result::Result::Ok(crate::operation::tag_resource::TagResourceInput {
+ resource_arn: self.resource_arn,
+ tags: self.tags,
+ })
+ }
+}
diff --git a/sdk/chatbot/src/operation/tag_resource/_tag_resource_output.rs b/sdk/chatbot/src/operation/tag_resource/_tag_resource_output.rs
new file mode 100644
index 000000000000..4d1a44833a38
--- /dev/null
+++ b/sdk/chatbot/src/operation/tag_resource/_tag_resource_output.rs
@@ -0,0 +1,42 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct TagResourceOutput {
+ _request_id: Option,
+}
+impl ::aws_types::request_id::RequestId for TagResourceOutput {
+ fn request_id(&self) -> Option<&str> {
+ self._request_id.as_deref()
+ }
+}
+impl TagResourceOutput {
+ /// Creates a new builder-style object to manufacture [`TagResourceOutput`](crate::operation::tag_resource::TagResourceOutput).
+ pub fn builder() -> crate::operation::tag_resource::builders::TagResourceOutputBuilder {
+ crate::operation::tag_resource::builders::TagResourceOutputBuilder::default()
+ }
+}
+
+/// A builder for [`TagResourceOutput`](crate::operation::tag_resource::TagResourceOutput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct TagResourceOutputBuilder {
+ _request_id: Option,
+}
+impl TagResourceOutputBuilder {
+ pub(crate) fn _request_id(mut self, request_id: impl Into) -> Self {
+ self._request_id = Some(request_id.into());
+ self
+ }
+
+ pub(crate) fn _set_request_id(&mut self, request_id: Option) -> &mut Self {
+ self._request_id = request_id;
+ self
+ }
+ /// Consumes the builder and constructs a [`TagResourceOutput`](crate::operation::tag_resource::TagResourceOutput).
+ pub fn build(self) -> crate::operation::tag_resource::TagResourceOutput {
+ crate::operation::tag_resource::TagResourceOutput {
+ _request_id: self._request_id,
+ }
+ }
+}
diff --git a/sdk/chatbot/src/operation/tag_resource/builders.rs b/sdk/chatbot/src/operation/tag_resource/builders.rs
new file mode 100644
index 000000000000..81799c51f495
--- /dev/null
+++ b/sdk/chatbot/src/operation/tag_resource/builders.rs
@@ -0,0 +1,144 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub use crate::operation::tag_resource::_tag_resource_output::TagResourceOutputBuilder;
+
+pub use crate::operation::tag_resource::_tag_resource_input::TagResourceInputBuilder;
+
+impl crate::operation::tag_resource::builders::TagResourceInputBuilder {
+ /// Sends a request with this input using the given client.
+ pub async fn send_with(
+ self,
+ client: &crate::Client,
+ ) -> ::std::result::Result<
+ crate::operation::tag_resource::TagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::tag_resource::TagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let mut fluent_builder = client.tag_resource();
+ fluent_builder.inner = self;
+ fluent_builder.send().await
+ }
+}
+/// Fluent builder constructing a request to `TagResource`.
+///
+/// Applies the supplied tags to a configuration.
+#[derive(::std::clone::Clone, ::std::fmt::Debug)]
+pub struct TagResourceFluentBuilder {
+ handle: ::std::sync::Arc,
+ inner: crate::operation::tag_resource::builders::TagResourceInputBuilder,
+ config_override: ::std::option::Option,
+}
+impl
+ crate::client::customize::internal::CustomizableSend<
+ crate::operation::tag_resource::TagResourceOutput,
+ crate::operation::tag_resource::TagResourceError,
+ > for TagResourceFluentBuilder
+{
+ fn send(
+ self,
+ config_override: crate::config::Builder,
+ ) -> crate::client::customize::internal::BoxFuture<
+ crate::client::customize::internal::SendResult<
+ crate::operation::tag_resource::TagResourceOutput,
+ crate::operation::tag_resource::TagResourceError,
+ >,
+ > {
+ ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
+ }
+}
+impl TagResourceFluentBuilder {
+ /// Creates a new `TagResourceFluentBuilder`.
+ pub(crate) fn new(handle: ::std::sync::Arc) -> Self {
+ Self {
+ handle,
+ inner: ::std::default::Default::default(),
+ config_override: ::std::option::Option::None,
+ }
+ }
+ /// Access the TagResource as a reference.
+ pub fn as_input(&self) -> &crate::operation::tag_resource::builders::TagResourceInputBuilder {
+ &self.inner
+ }
+ /// Sends the request and returns the response.
+ ///
+ /// If an error occurs, an `SdkError` will be returned with additional details that
+ /// can be matched against.
+ ///
+ /// By default, any retryable failures will be retried twice. Retry behavior
+ /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
+ /// set when configuring the client.
+ pub async fn send(
+ self,
+ ) -> ::std::result::Result<
+ crate::operation::tag_resource::TagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::tag_resource::TagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = self
+ .inner
+ .build()
+ .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
+ let runtime_plugins = crate::operation::tag_resource::TagResource::operation_runtime_plugins(
+ self.handle.runtime_plugins.clone(),
+ &self.handle.conf,
+ self.config_override,
+ );
+ crate::operation::tag_resource::TagResource::orchestrate(&runtime_plugins, input).await
+ }
+
+ /// Consumes this builder, creating a customizable operation that can be modified before being sent.
+ pub fn customize(
+ self,
+ ) -> crate::client::customize::CustomizableOperation<
+ crate::operation::tag_resource::TagResourceOutput,
+ crate::operation::tag_resource::TagResourceError,
+ Self,
+ > {
+ crate::client::customize::CustomizableOperation::new(self)
+ }
+ pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into) -> Self {
+ self.set_config_override(::std::option::Option::Some(config_override.into()));
+ self
+ }
+
+ pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option) -> &mut Self {
+ self.config_override = config_override;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.inner = self.inner.resource_arn(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.inner = self.inner.set_resource_arn(input);
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ self.inner.get_resource_arn()
+ }
+ ///
+ /// Appends an item to `Tags`.
+ ///
+ /// To override the contents of this collection use [`set_tags`](Self::set_tags).
+ ///
+ /// A list of tags to apply to the configuration.
+ pub fn tags(mut self, input: crate::types::Tag) -> Self {
+ self.inner = self.inner.tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec>) -> Self {
+ self.inner = self.inner.set_tags(input);
+ self
+ }
+ /// A list of tags to apply to the configuration.
+ pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec> {
+ self.inner.get_tags()
+ }
+}
diff --git a/sdk/chatbot/src/operation/untag_resource.rs b/sdk/chatbot/src/operation/untag_resource.rs
new file mode 100644
index 000000000000..95e1c9405628
--- /dev/null
+++ b/sdk/chatbot/src/operation/untag_resource.rs
@@ -0,0 +1,367 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+/// Orchestration and serialization glue logic for `UntagResource`.
+#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
+#[non_exhaustive]
+pub struct UntagResource;
+impl UntagResource {
+ /// Creates a new `UntagResource`
+ pub fn new() -> Self {
+ Self
+ }
+ pub(crate) async fn orchestrate(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::untag_resource::UntagResourceInput,
+ ) -> ::std::result::Result<
+ crate::operation::untag_resource::UntagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::untag_resource::UntagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >| {
+ err.map_service_error(|err| {
+ err.downcast::()
+ .expect("correct error type")
+ })
+ };
+ let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
+ .await
+ .map_err(map_err)?;
+ let output = context.finalize().map_err(map_err)?;
+ ::std::result::Result::Ok(
+ output
+ .downcast::()
+ .expect("correct output type"),
+ )
+ }
+
+ pub(crate) async fn orchestrate_with_stop_point(
+ runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ input: crate::operation::untag_resource::UntagResourceInput,
+ stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
+ ) -> ::std::result::Result<
+ ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
+ ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("chatbot", "UntagResource", input, runtime_plugins, stop_point).await
+ }
+
+ pub(crate) fn operation_runtime_plugins(
+ client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
+ client_config: &crate::config::Config,
+ config_override: ::std::option::Option,
+ ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
+ let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
+ runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
+ ::aws_runtime::auth::sigv4::SCHEME_ID,
+ ]));
+ if let ::std::option::Option::Some(config_override) = config_override {
+ for plugin in config_override.runtime_plugins.iter().cloned() {
+ runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
+ }
+ runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
+ config_override,
+ client_config.config.clone(),
+ &client_config.runtime_components,
+ ));
+ }
+ runtime_plugins
+ }
+}
+impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for UntagResource {
+ fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
+ let mut cfg = ::aws_smithy_types::config_bag::Layer::new("UntagResource");
+
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
+ UntagResourceRequestSerializer,
+ ));
+ cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
+ UntagResourceResponseDeserializer,
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
+ ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
+ ));
+
+ cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("UntagResource", "chatbot"));
+ let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
+ signing_options.double_uri_encode = true;
+ signing_options.content_sha256_header = false;
+ signing_options.normalize_uri_path = true;
+ signing_options.payload_override = None;
+
+ cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
+ signing_options,
+ ..::std::default::Default::default()
+ });
+
+ ::std::option::Option::Some(cfg.freeze())
+ }
+
+ fn runtime_components(
+ &self,
+ _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
+ ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
+ #[allow(unused_mut)]
+ let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("UntagResource")
+ .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
+ .with_interceptor(UntagResourceEndpointParamsInterceptor)
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
+ crate::operation::untag_resource::UntagResourceError,
+ >::new())
+ .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
+ crate::operation::untag_resource::UntagResourceError,
+ >::new())
+ .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
+ crate::operation::untag_resource::UntagResourceError,
+ >::new());
+
+ ::std::borrow::Cow::Owned(rcb)
+ }
+}
+
+#[derive(Debug)]
+struct UntagResourceResponseDeserializer;
+impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for UntagResourceResponseDeserializer {
+ fn deserialize_nonstreaming(
+ &self,
+ response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
+ let (success, status) = (response.status().is_success(), response.status().as_u16());
+ let headers = response.headers();
+ let body = response.body().bytes().expect("body loaded");
+ #[allow(unused_mut)]
+ let mut force_error = false;
+ ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
+ let parse_result = if !success && status != 200 || force_error {
+ crate::protocol_serde::shape_untag_resource::de_untag_resource_http_error(status, headers, body)
+ } else {
+ crate::protocol_serde::shape_untag_resource::de_untag_resource_http_response(status, headers, body)
+ };
+ crate::protocol_serde::type_erase_result(parse_result)
+ }
+}
+#[derive(Debug)]
+struct UntagResourceRequestSerializer;
+impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for UntagResourceRequestSerializer {
+ #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
+ fn serialize_input(
+ &self,
+ input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
+ let input = input
+ .downcast::()
+ .expect("correct type");
+ let _header_serialization_settings = _cfg
+ .load::()
+ .cloned()
+ .unwrap_or_default();
+ let mut request_builder = {
+ fn uri_base(
+ _input: &crate::operation::untag_resource::UntagResourceInput,
+ output: &mut ::std::string::String,
+ ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
+ use ::std::fmt::Write as _;
+ ::std::write!(output, "/untag-resource").expect("formatting should succeed");
+ ::std::result::Result::Ok(())
+ }
+ #[allow(clippy::unnecessary_wraps)]
+ fn update_http_builder(
+ input: &crate::operation::untag_resource::UntagResourceInput,
+ builder: ::http::request::Builder,
+ ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
+ let mut uri = ::std::string::String::new();
+ uri_base(input, &mut uri)?;
+ ::std::result::Result::Ok(builder.method("POST").uri(uri))
+ }
+ let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
+ builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/json");
+ builder
+ };
+ let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_untag_resource::ser_untag_resource_input(&input)?);
+ if let Some(content_length) = body.content_length() {
+ let content_length = content_length.to_string();
+ request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
+ }
+ ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
+ }
+}
+#[derive(Debug)]
+struct UntagResourceEndpointParamsInterceptor;
+
+impl ::aws_smithy_runtime_api::client::interceptors::Intercept for UntagResourceEndpointParamsInterceptor {
+ fn name(&self) -> &'static str {
+ "UntagResourceEndpointParamsInterceptor"
+ }
+
+ fn read_before_execution(
+ &self,
+ context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
+ '_,
+ ::aws_smithy_runtime_api::client::interceptors::context::Input,
+ ::aws_smithy_runtime_api::client::interceptors::context::Output,
+ ::aws_smithy_runtime_api::client::interceptors::context::Error,
+ >,
+ cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
+ ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
+ let _input = context
+ .input()
+ .downcast_ref::()
+ .ok_or("failed to downcast to UntagResourceInput")?;
+
+ let params = crate::config::endpoint::Params::builder()
+ .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
+ .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
+ .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
+ .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
+ .build()
+ .map_err(|err| {
+ ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
+ })?;
+ cfg.interceptor_state()
+ .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
+ ::std::result::Result::Ok(())
+ }
+}
+
+/// Error type for the `UntagResourceError` operation.
+#[non_exhaustive]
+#[derive(::std::fmt::Debug)]
+pub enum UntagResourceError {
+ /// Customer/consumer-facing internal service exception. https://w.amazon.com/index.php/AWS/API_Standards/Exceptions#InternalServiceError
+ InternalServiceError(crate::types::error::InternalServiceError),
+ /// We were not able to find the resource for your request.
+ ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
+ /// We can’t process your request right now because of a server issue. Try again later.
+ ServiceUnavailableException(crate::types::error::ServiceUnavailableException),
+ /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
+ #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
+ variable wildcard pattern and check `.code()`:
+ \
+ `err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
+ \
+ See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-UntagResourceError) for what information is available for the error.")]
+ Unhandled(crate::error::sealed_unhandled::Unhandled),
+}
+impl UntagResourceError {
+ /// Creates the `UntagResourceError::Unhandled` variant from any error type.
+ pub fn unhandled(
+ err: impl ::std::convert::Into<::std::boxed::Box>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.into(),
+ meta: ::std::default::Default::default(),
+ })
+ }
+
+ /// Creates the `UntagResourceError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
+ pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source: err.clone().into(),
+ meta: err,
+ })
+ }
+ ///
+ /// Returns error metadata, which includes the error code, message,
+ /// request ID, and potentially additional information.
+ ///
+ pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::ServiceUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
+ Self::Unhandled(e) => &e.meta,
+ }
+ }
+ /// Returns `true` if the error kind is `UntagResourceError::InternalServiceError`.
+ pub fn is_internal_service_error(&self) -> bool {
+ matches!(self, Self::InternalServiceError(_))
+ }
+ /// Returns `true` if the error kind is `UntagResourceError::ResourceNotFoundException`.
+ pub fn is_resource_not_found_exception(&self) -> bool {
+ matches!(self, Self::ResourceNotFoundException(_))
+ }
+ /// Returns `true` if the error kind is `UntagResourceError::ServiceUnavailableException`.
+ pub fn is_service_unavailable_exception(&self) -> bool {
+ matches!(self, Self::ServiceUnavailableException(_))
+ }
+}
+impl ::std::error::Error for UntagResourceError {
+ fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
+ match self {
+ Self::InternalServiceError(_inner) => ::std::option::Option::Some(_inner),
+ Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
+ Self::ServiceUnavailableException(_inner) => ::std::option::Option::Some(_inner),
+ Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
+ }
+ }
+}
+impl ::std::fmt::Display for UntagResourceError {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ match self {
+ Self::InternalServiceError(_inner) => _inner.fmt(f),
+ Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
+ Self::ServiceUnavailableException(_inner) => _inner.fmt(f),
+ Self::Unhandled(_inner) => {
+ if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
+ write!(f, "unhandled error ({code})")
+ } else {
+ f.write_str("unhandled error")
+ }
+ }
+ }
+ }
+}
+impl ::aws_smithy_types::retry::ProvideErrorKind for UntagResourceError {
+ fn code(&self) -> ::std::option::Option<&str> {
+ ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
+ }
+ fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
+ ::std::option::Option::None
+ }
+}
+impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for UntagResourceError {
+ fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
+ match self {
+ Self::InternalServiceError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::ServiceUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
+ Self::Unhandled(_inner) => &_inner.meta,
+ }
+ }
+}
+impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for UntagResourceError {
+ fn create_unhandled_error(
+ source: ::std::boxed::Box,
+ meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
+ ) -> Self {
+ Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
+ source,
+ meta: meta.unwrap_or_default(),
+ })
+ }
+}
+impl ::aws_types::request_id::RequestId for crate::operation::untag_resource::UntagResourceError {
+ fn request_id(&self) -> Option<&str> {
+ self.meta().request_id()
+ }
+}
+
+pub use crate::operation::untag_resource::_untag_resource_output::UntagResourceOutput;
+
+pub use crate::operation::untag_resource::_untag_resource_input::UntagResourceInput;
+
+mod _untag_resource_input;
+
+mod _untag_resource_output;
+
+/// Builders
+pub mod builders;
diff --git a/sdk/chatbot/src/operation/untag_resource/_untag_resource_input.rs b/sdk/chatbot/src/operation/untag_resource/_untag_resource_input.rs
new file mode 100644
index 000000000000..dfbea1ddd10d
--- /dev/null
+++ b/sdk/chatbot/src/operation/untag_resource/_untag_resource_input.rs
@@ -0,0 +1,82 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct UntagResourceInput {
+ /// The ARN of the configuration.
+ pub resource_arn: ::std::option::Option<::std::string::String>,
+ /// A list of tag keys to remove from the configuration.
+ pub tag_keys: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
+}
+impl UntagResourceInput {
+ /// The ARN of the configuration.
+ pub fn resource_arn(&self) -> ::std::option::Option<&str> {
+ self.resource_arn.as_deref()
+ }
+ /// A list of tag keys to remove from the configuration.
+ ///
+ /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tag_keys.is_none()`.
+ pub fn tag_keys(&self) -> &[::std::string::String] {
+ self.tag_keys.as_deref().unwrap_or_default()
+ }
+}
+impl UntagResourceInput {
+ /// Creates a new builder-style object to manufacture [`UntagResourceInput`](crate::operation::untag_resource::UntagResourceInput).
+ pub fn builder() -> crate::operation::untag_resource::builders::UntagResourceInputBuilder {
+ crate::operation::untag_resource::builders::UntagResourceInputBuilder::default()
+ }
+}
+
+/// A builder for [`UntagResourceInput`](crate::operation::untag_resource::UntagResourceInput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct UntagResourceInputBuilder {
+ pub(crate) resource_arn: ::std::option::Option<::std::string::String>,
+ pub(crate) tag_keys: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
+}
+impl UntagResourceInputBuilder {
+ /// The ARN of the configuration.
+ /// This field is required.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.resource_arn = ::std::option::Option::Some(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.resource_arn = input;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ &self.resource_arn
+ }
+ /// Appends an item to `tag_keys`.
+ ///
+ /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
+ ///
+ /// A list of tag keys to remove from the configuration.
+ pub fn tag_keys(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ let mut v = self.tag_keys.unwrap_or_default();
+ v.push(input.into());
+ self.tag_keys = ::std::option::Option::Some(v);
+ self
+ }
+ /// A list of tag keys to remove from the configuration.
+ pub fn set_tag_keys(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
+ self.tag_keys = input;
+ self
+ }
+ /// A list of tag keys to remove from the configuration.
+ pub fn get_tag_keys(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
+ &self.tag_keys
+ }
+ /// Consumes the builder and constructs a [`UntagResourceInput`](crate::operation::untag_resource::UntagResourceInput).
+ pub fn build(
+ self,
+ ) -> ::std::result::Result {
+ ::std::result::Result::Ok(crate::operation::untag_resource::UntagResourceInput {
+ resource_arn: self.resource_arn,
+ tag_keys: self.tag_keys,
+ })
+ }
+}
diff --git a/sdk/chatbot/src/operation/untag_resource/_untag_resource_output.rs b/sdk/chatbot/src/operation/untag_resource/_untag_resource_output.rs
new file mode 100644
index 000000000000..7e84cedc1f44
--- /dev/null
+++ b/sdk/chatbot/src/operation/untag_resource/_untag_resource_output.rs
@@ -0,0 +1,42 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(missing_docs)] // documentation missing in model
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
+pub struct UntagResourceOutput {
+ _request_id: Option,
+}
+impl ::aws_types::request_id::RequestId for UntagResourceOutput {
+ fn request_id(&self) -> Option<&str> {
+ self._request_id.as_deref()
+ }
+}
+impl UntagResourceOutput {
+ /// Creates a new builder-style object to manufacture [`UntagResourceOutput`](crate::operation::untag_resource::UntagResourceOutput).
+ pub fn builder() -> crate::operation::untag_resource::builders::UntagResourceOutputBuilder {
+ crate::operation::untag_resource::builders::UntagResourceOutputBuilder::default()
+ }
+}
+
+/// A builder for [`UntagResourceOutput`](crate::operation::untag_resource::UntagResourceOutput).
+#[non_exhaustive]
+#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
+pub struct UntagResourceOutputBuilder {
+ _request_id: Option,
+}
+impl UntagResourceOutputBuilder {
+ pub(crate) fn _request_id(mut self, request_id: impl Into) -> Self {
+ self._request_id = Some(request_id.into());
+ self
+ }
+
+ pub(crate) fn _set_request_id(&mut self, request_id: Option) -> &mut Self {
+ self._request_id = request_id;
+ self
+ }
+ /// Consumes the builder and constructs a [`UntagResourceOutput`](crate::operation::untag_resource::UntagResourceOutput).
+ pub fn build(self) -> crate::operation::untag_resource::UntagResourceOutput {
+ crate::operation::untag_resource::UntagResourceOutput {
+ _request_id: self._request_id,
+ }
+ }
+}
diff --git a/sdk/chatbot/src/operation/untag_resource/builders.rs b/sdk/chatbot/src/operation/untag_resource/builders.rs
new file mode 100644
index 000000000000..45aa94b2babb
--- /dev/null
+++ b/sdk/chatbot/src/operation/untag_resource/builders.rs
@@ -0,0 +1,144 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub use crate::operation::untag_resource::_untag_resource_output::UntagResourceOutputBuilder;
+
+pub use crate::operation::untag_resource::_untag_resource_input::UntagResourceInputBuilder;
+
+impl crate::operation::untag_resource::builders::UntagResourceInputBuilder {
+ /// Sends a request with this input using the given client.
+ pub async fn send_with(
+ self,
+ client: &crate::Client,
+ ) -> ::std::result::Result<
+ crate::operation::untag_resource::UntagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::untag_resource::UntagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let mut fluent_builder = client.untag_resource();
+ fluent_builder.inner = self;
+ fluent_builder.send().await
+ }
+}
+/// Fluent builder constructing a request to `UntagResource`.
+///
+/// Removes the supplied tags from a configuration
+#[derive(::std::clone::Clone, ::std::fmt::Debug)]
+pub struct UntagResourceFluentBuilder {
+ handle: ::std::sync::Arc,
+ inner: crate::operation::untag_resource::builders::UntagResourceInputBuilder,
+ config_override: ::std::option::Option,
+}
+impl
+ crate::client::customize::internal::CustomizableSend<
+ crate::operation::untag_resource::UntagResourceOutput,
+ crate::operation::untag_resource::UntagResourceError,
+ > for UntagResourceFluentBuilder
+{
+ fn send(
+ self,
+ config_override: crate::config::Builder,
+ ) -> crate::client::customize::internal::BoxFuture<
+ crate::client::customize::internal::SendResult<
+ crate::operation::untag_resource::UntagResourceOutput,
+ crate::operation::untag_resource::UntagResourceError,
+ >,
+ > {
+ ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
+ }
+}
+impl UntagResourceFluentBuilder {
+ /// Creates a new `UntagResourceFluentBuilder`.
+ pub(crate) fn new(handle: ::std::sync::Arc) -> Self {
+ Self {
+ handle,
+ inner: ::std::default::Default::default(),
+ config_override: ::std::option::Option::None,
+ }
+ }
+ /// Access the UntagResource as a reference.
+ pub fn as_input(&self) -> &crate::operation::untag_resource::builders::UntagResourceInputBuilder {
+ &self.inner
+ }
+ /// Sends the request and returns the response.
+ ///
+ /// If an error occurs, an `SdkError` will be returned with additional details that
+ /// can be matched against.
+ ///
+ /// By default, any retryable failures will be retried twice. Retry behavior
+ /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
+ /// set when configuring the client.
+ pub async fn send(
+ self,
+ ) -> ::std::result::Result<
+ crate::operation::untag_resource::UntagResourceOutput,
+ ::aws_smithy_runtime_api::client::result::SdkError<
+ crate::operation::untag_resource::UntagResourceError,
+ ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
+ >,
+ > {
+ let input = self
+ .inner
+ .build()
+ .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
+ let runtime_plugins = crate::operation::untag_resource::UntagResource::operation_runtime_plugins(
+ self.handle.runtime_plugins.clone(),
+ &self.handle.conf,
+ self.config_override,
+ );
+ crate::operation::untag_resource::UntagResource::orchestrate(&runtime_plugins, input).await
+ }
+
+ /// Consumes this builder, creating a customizable operation that can be modified before being sent.
+ pub fn customize(
+ self,
+ ) -> crate::client::customize::CustomizableOperation<
+ crate::operation::untag_resource::UntagResourceOutput,
+ crate::operation::untag_resource::UntagResourceError,
+ Self,
+ > {
+ crate::client::customize::CustomizableOperation::new(self)
+ }
+ pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into) -> Self {
+ self.set_config_override(::std::option::Option::Some(config_override.into()));
+ self
+ }
+
+ pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option) -> &mut Self {
+ self.config_override = config_override;
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.inner = self.inner.resource_arn(input.into());
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
+ self.inner = self.inner.set_resource_arn(input);
+ self
+ }
+ /// The ARN of the configuration.
+ pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
+ self.inner.get_resource_arn()
+ }
+ ///
+ /// Appends an item to `TagKeys`.
+ ///
+ /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
+ ///
+ /// A list of tag keys to remove from the configuration.
+ pub fn tag_keys(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
+ self.inner = self.inner.tag_keys(input.into());
+ self
+ }
+ /// A list of tag keys to remove from the configuration.
+ pub fn set_tag_keys(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
+ self.inner = self.inner.set_tag_keys(input);
+ self
+ }
+ /// A list of tag keys to remove from the configuration.
+ pub fn get_tag_keys(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
+ self.inner.get_tag_keys()
+ }
+}
diff --git a/sdk/chatbot/src/protocol_serde.rs b/sdk/chatbot/src/protocol_serde.rs
index 80f2d9ecdeaa..db1c8f0cbc0c 100644
--- a/sdk/chatbot/src/protocol_serde.rs
+++ b/sdk/chatbot/src/protocol_serde.rs
@@ -61,6 +61,12 @@ pub(crate) mod shape_list_microsoft_teams_configured_teams;
pub(crate) mod shape_list_microsoft_teams_user_identities;
+pub(crate) mod shape_list_tags_for_resource;
+
+pub(crate) mod shape_tag_resource;
+
+pub(crate) mod shape_untag_resource;
+
pub(crate) mod shape_update_account_preferences;
pub(crate) mod shape_update_chime_webhook_configuration;
@@ -141,6 +147,8 @@ pub(crate) mod shape_get_microsoft_teams_channel_configuration_input;
pub(crate) mod shape_get_teams_channel_configuration_exception;
+pub(crate) mod shape_internal_service_error;
+
pub(crate) mod shape_invalid_parameter_exception;
pub(crate) mod shape_invalid_request_exception;
@@ -157,10 +165,20 @@ pub(crate) mod shape_list_microsoft_teams_user_identities_exception;
pub(crate) mod shape_list_microsoft_teams_user_identities_input;
+pub(crate) mod shape_list_tags_for_resource_input;
+
pub(crate) mod shape_list_teams_channel_configurations_exception;
pub(crate) mod shape_resource_not_found_exception;
+pub(crate) mod shape_service_unavailable_exception;
+
+pub(crate) mod shape_tag_resource_input;
+
+pub(crate) mod shape_too_many_tags_exception;
+
+pub(crate) mod shape_untag_resource_input;
+
pub(crate) mod shape_update_account_preferences_exception;
pub(crate) mod shape_update_account_preferences_input;
@@ -193,6 +211,10 @@ pub(crate) mod shape_slack_user_identities_list;
pub(crate) mod shape_slack_workspaces_list;
+pub(crate) mod shape_tag;
+
+pub(crate) mod shape_tag_list;
+
pub(crate) mod shape_team_channel_configurations_list;
pub(crate) mod shape_teams_channel_configuration;
@@ -209,4 +231,6 @@ pub(crate) mod shape_slack_workspace;
pub(crate) mod shape_sns_topic_arn_list;
+pub(crate) mod shape_tags;
+
pub(crate) mod shape_teams_user_identity;
diff --git a/sdk/chatbot/src/protocol_serde/shape_chime_webhook_configuration.rs b/sdk/chatbot/src/protocol_serde/shape_chime_webhook_configuration.rs
index 47cd9e200079..456bf8d0b8f8 100644
--- a/sdk/chatbot/src/protocol_serde/shape_chime_webhook_configuration.rs
+++ b/sdk/chatbot/src/protocol_serde/shape_chime_webhook_configuration.rs
@@ -52,6 +52,9 @@ where
.transpose()?,
);
}
+ "Tags" => {
+ builder = builder.set_tags(crate::protocol_serde::shape_tags::de_tags(tokens)?);
+ }
_ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
},
other => {
diff --git a/sdk/chatbot/src/protocol_serde/shape_create_chime_webhook_configuration_input.rs b/sdk/chatbot/src/protocol_serde/shape_create_chime_webhook_configuration_input.rs
index 5f1fefd05719..7d19af8a3901 100644
--- a/sdk/chatbot/src/protocol_serde/shape_create_chime_webhook_configuration_input.rs
+++ b/sdk/chatbot/src/protocol_serde/shape_create_chime_webhook_configuration_input.rs
@@ -21,11 +21,23 @@ pub fn ser_create_chime_webhook_configuration_input_input(
}
array_5.finish();
}
- if let Some(var_7) = &input.webhook_description {
- object.key("WebhookDescription").string(var_7.as_str());
+ if let Some(var_7) = &input.tags {
+ let mut array_8 = object.key("Tags").start_array();
+ for item_9 in var_7 {
+ {
+ #[allow(unused_mut)]
+ let mut object_10 = array_8.value().start_object();
+ crate::protocol_serde::shape_tag::ser_tag(&mut object_10, item_9)?;
+ object_10.finish();
+ }
+ }
+ array_8.finish();
+ }
+ if let Some(var_11) = &input.webhook_description {
+ object.key("WebhookDescription").string(var_11.as_str());
}
- if let Some(var_8) = &input.webhook_url {
- object.key("WebhookUrl").string(var_8.as_str());
+ if let Some(var_12) = &input.webhook_url {
+ object.key("WebhookUrl").string(var_12.as_str());
}
Ok(())
}
diff --git a/sdk/chatbot/src/protocol_serde/shape_create_microsoft_teams_channel_configuration_input.rs b/sdk/chatbot/src/protocol_serde/shape_create_microsoft_teams_channel_configuration_input.rs
index de718db10bba..fdd62b3367ff 100644
--- a/sdk/chatbot/src/protocol_serde/shape_create_microsoft_teams_channel_configuration_input.rs
+++ b/sdk/chatbot/src/protocol_serde/shape_create_microsoft_teams_channel_configuration_input.rs
@@ -36,17 +36,29 @@ pub fn ser_create_microsoft_teams_channel_configuration_input_input(
}
array_10.finish();
}
- if let Some(var_12) = &input.team_id {
- object.key("TeamId").string(var_12.as_str());
+ if let Some(var_12) = &input.tags {
+ let mut array_13 = object.key("Tags").start_array();
+ for item_14 in var_12 {
+ {
+ #[allow(unused_mut)]
+ let mut object_15 = array_13.value().start_object();
+ crate::protocol_serde::shape_tag::ser_tag(&mut object_15, item_14)?;
+ object_15.finish();
+ }
+ }
+ array_13.finish();
+ }
+ if let Some(var_16) = &input.team_id {
+ object.key("TeamId").string(var_16.as_str());
}
- if let Some(var_13) = &input.team_name {
- object.key("TeamName").string(var_13.as_str());
+ if let Some(var_17) = &input.team_name {
+ object.key("TeamName").string(var_17.as_str());
}
- if let Some(var_14) = &input.tenant_id {
- object.key("TenantId").string(var_14.as_str());
+ if let Some(var_18) = &input.tenant_id {
+ object.key("TenantId").string(var_18.as_str());
}
- if let Some(var_15) = &input.user_authorization_required {
- object.key("UserAuthorizationRequired").boolean(*var_15);
+ if let Some(var_19) = &input.user_authorization_required {
+ object.key("UserAuthorizationRequired").boolean(*var_19);
}
Ok(())
}
diff --git a/sdk/chatbot/src/protocol_serde/shape_create_slack_channel_configuration_input.rs b/sdk/chatbot/src/protocol_serde/shape_create_slack_channel_configuration_input.rs
index 325188ff9764..95bee5c5e4bb 100644
--- a/sdk/chatbot/src/protocol_serde/shape_create_slack_channel_configuration_input.rs
+++ b/sdk/chatbot/src/protocol_serde/shape_create_slack_channel_configuration_input.rs
@@ -39,8 +39,20 @@ pub fn ser_create_slack_channel_configuration_input_input(
}
array_11.finish();
}
- if let Some(var_13) = &input.user_authorization_required {
- object.key("UserAuthorizationRequired").boolean(*var_13);
+ if let Some(var_13) = &input.tags {
+ let mut array_14 = object.key("Tags").start_array();
+ for item_15 in var_13 {
+ {
+ #[allow(unused_mut)]
+ let mut object_16 = array_14.value().start_object();
+ crate::protocol_serde::shape_tag::ser_tag(&mut object_16, item_15)?;
+ object_16.finish();
+ }
+ }
+ array_14.finish();
+ }
+ if let Some(var_17) = &input.user_authorization_required {
+ object.key("UserAuthorizationRequired").boolean(*var_17);
}
Ok(())
}
diff --git a/sdk/chatbot/src/protocol_serde/shape_internal_service_error.rs b/sdk/chatbot/src/protocol_serde/shape_internal_service_error.rs
new file mode 100644
index 000000000000..0664364a9c88
--- /dev/null
+++ b/sdk/chatbot/src/protocol_serde/shape_internal_service_error.rs
@@ -0,0 +1,36 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub(crate) fn de_internal_service_error_json_err(
+ value: &[u8],
+ mut builder: crate::types::error::builders::InternalServiceErrorBuilder,
+) -> Result {
+ let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
+ let tokens = &mut tokens_owned;
+ ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
+ loop {
+ match tokens.next().transpose()? {
+ Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
+ Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
+ "Message" => {
+ builder = builder.set_message(
+ ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
+ .map(|s| s.to_unescaped().map(|u| u.into_owned()))
+ .transpose()?,
+ );
+ }
+ _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
+ },
+ other => {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
+ "expected object key or end object, found: {:?}",
+ other
+ )))
+ }
+ }
+ }
+ if tokens.next().is_some() {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
+ "found more JSON tokens after completing parsing",
+ ));
+ }
+ Ok(builder)
+}
diff --git a/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource.rs b/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource.rs
new file mode 100644
index 000000000000..ebe59a7172cf
--- /dev/null
+++ b/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource.rs
@@ -0,0 +1,135 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+#[allow(clippy::unnecessary_wraps)]
+pub fn de_list_tags_for_resource_http_error(
+ _response_status: u16,
+ _response_headers: &::aws_smithy_runtime_api::http::Headers,
+ _response_body: &[u8],
+) -> std::result::Result<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+> {
+ #[allow(unused_mut)]
+ let mut generic_builder = crate::protocol_serde::parse_http_error_metadata(_response_status, _response_headers, _response_body)
+ .map_err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled)?;
+ generic_builder = ::aws_types::request_id::apply_request_id(generic_builder, _response_headers);
+ let generic = generic_builder.build();
+ let error_code = match generic.code() {
+ Some(code) => code,
+ None => return Err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled(generic)),
+ };
+
+ let _error_message = generic.message().map(|msg| msg.to_owned());
+ Err(match error_code {
+ "InternalServiceError" => crate::operation::list_tags_for_resource::ListTagsForResourceError::InternalServiceError({
+ #[allow(unused_mut)]
+ let mut tmp = {
+ #[allow(unused_mut)]
+ let mut output = crate::types::error::builders::InternalServiceErrorBuilder::default();
+ output = crate::protocol_serde::shape_internal_service_error::de_internal_service_error_json_err(_response_body, output)
+ .map_err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled)?;
+ let output = output.meta(generic);
+ output.build()
+ };
+ if tmp.message.is_none() {
+ tmp.message = _error_message;
+ }
+ tmp
+ }),
+ "ResourceNotFoundException" => crate::operation::list_tags_for_resource::ListTagsForResourceError::ResourceNotFoundException({
+ #[allow(unused_mut)]
+ let mut tmp = {
+ #[allow(unused_mut)]
+ let mut output = crate::types::error::builders::ResourceNotFoundExceptionBuilder::default();
+ output = crate::protocol_serde::shape_resource_not_found_exception::de_resource_not_found_exception_json_err(_response_body, output)
+ .map_err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled)?;
+ let output = output.meta(generic);
+ output.build()
+ };
+ if tmp.message.is_none() {
+ tmp.message = _error_message;
+ }
+ tmp
+ }),
+ "ServiceUnavailableException" => crate::operation::list_tags_for_resource::ListTagsForResourceError::ServiceUnavailableException({
+ #[allow(unused_mut)]
+ let mut tmp = {
+ #[allow(unused_mut)]
+ let mut output = crate::types::error::builders::ServiceUnavailableExceptionBuilder::default();
+ output =
+ crate::protocol_serde::shape_service_unavailable_exception::de_service_unavailable_exception_json_err(_response_body, output)
+ .map_err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled)?;
+ let output = output.meta(generic);
+ output.build()
+ };
+ if tmp.message.is_none() {
+ tmp.message = _error_message;
+ }
+ tmp
+ }),
+ _ => crate::operation::list_tags_for_resource::ListTagsForResourceError::generic(generic),
+ })
+}
+
+#[allow(clippy::unnecessary_wraps)]
+pub fn de_list_tags_for_resource_http_response(
+ _response_status: u16,
+ _response_headers: &::aws_smithy_runtime_api::http::Headers,
+ _response_body: &[u8],
+) -> std::result::Result<
+ crate::operation::list_tags_for_resource::ListTagsForResourceOutput,
+ crate::operation::list_tags_for_resource::ListTagsForResourceError,
+> {
+ Ok({
+ #[allow(unused_mut)]
+ let mut output = crate::operation::list_tags_for_resource::builders::ListTagsForResourceOutputBuilder::default();
+ output = crate::protocol_serde::shape_list_tags_for_resource::de_list_tags_for_resource(_response_body, output)
+ .map_err(crate::operation::list_tags_for_resource::ListTagsForResourceError::unhandled)?;
+ output._set_request_id(::aws_types::request_id::RequestId::request_id(_response_headers).map(str::to_string));
+ output.build()
+ })
+}
+
+pub fn ser_list_tags_for_resource_input(
+ input: &crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+) -> Result<::aws_smithy_types::body::SdkBody, ::aws_smithy_types::error::operation::SerializationError> {
+ let mut out = String::new();
+ let mut object = ::aws_smithy_json::serialize::JsonObjectWriter::new(&mut out);
+ crate::protocol_serde::shape_list_tags_for_resource_input::ser_list_tags_for_resource_input_input(&mut object, input)?;
+ object.finish();
+ Ok(::aws_smithy_types::body::SdkBody::from(out))
+}
+
+pub(crate) fn de_list_tags_for_resource(
+ value: &[u8],
+ mut builder: crate::operation::list_tags_for_resource::builders::ListTagsForResourceOutputBuilder,
+) -> Result<
+ crate::operation::list_tags_for_resource::builders::ListTagsForResourceOutputBuilder,
+ ::aws_smithy_json::deserialize::error::DeserializeError,
+> {
+ let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
+ let tokens = &mut tokens_owned;
+ ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
+ loop {
+ match tokens.next().transpose()? {
+ Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
+ Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
+ "Tags" => {
+ builder = builder.set_tags(crate::protocol_serde::shape_tag_list::de_tag_list(tokens)?);
+ }
+ _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
+ },
+ other => {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
+ "expected object key or end object, found: {:?}",
+ other
+ )))
+ }
+ }
+ }
+ if tokens.next().is_some() {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
+ "found more JSON tokens after completing parsing",
+ ));
+ }
+ Ok(builder)
+}
diff --git a/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource_input.rs b/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource_input.rs
new file mode 100644
index 000000000000..fc79a5265eab
--- /dev/null
+++ b/sdk/chatbot/src/protocol_serde/shape_list_tags_for_resource_input.rs
@@ -0,0 +1,10 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub fn ser_list_tags_for_resource_input_input(
+ object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
+ input: &crate::operation::list_tags_for_resource::ListTagsForResourceInput,
+) -> Result<(), ::aws_smithy_types::error::operation::SerializationError> {
+ if let Some(var_1) = &input.resource_arn {
+ object.key("ResourceARN").string(var_1.as_str());
+ }
+ Ok(())
+}
diff --git a/sdk/chatbot/src/protocol_serde/shape_service_unavailable_exception.rs b/sdk/chatbot/src/protocol_serde/shape_service_unavailable_exception.rs
new file mode 100644
index 000000000000..174eded6864d
--- /dev/null
+++ b/sdk/chatbot/src/protocol_serde/shape_service_unavailable_exception.rs
@@ -0,0 +1,36 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub(crate) fn de_service_unavailable_exception_json_err(
+ value: &[u8],
+ mut builder: crate::types::error::builders::ServiceUnavailableExceptionBuilder,
+) -> Result {
+ let mut tokens_owned = ::aws_smithy_json::deserialize::json_token_iter(crate::protocol_serde::or_empty_doc(value)).peekable();
+ let tokens = &mut tokens_owned;
+ ::aws_smithy_json::deserialize::token::expect_start_object(tokens.next())?;
+ loop {
+ match tokens.next().transpose()? {
+ Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
+ Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
+ "message" => {
+ builder = builder.set_message(
+ ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
+ .map(|s| s.to_unescaped().map(|u| u.into_owned()))
+ .transpose()?,
+ );
+ }
+ _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
+ },
+ other => {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
+ "expected object key or end object, found: {:?}",
+ other
+ )))
+ }
+ }
+ }
+ if tokens.next().is_some() {
+ return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
+ "found more JSON tokens after completing parsing",
+ ));
+ }
+ Ok(builder)
+}
diff --git a/sdk/chatbot/src/protocol_serde/shape_slack_channel_configuration.rs b/sdk/chatbot/src/protocol_serde/shape_slack_channel_configuration.rs
index 0ab4115ae4cf..1042b5349015 100644
--- a/sdk/chatbot/src/protocol_serde/shape_slack_channel_configuration.rs
+++ b/sdk/chatbot/src/protocol_serde/shape_slack_channel_configuration.rs
@@ -82,6 +82,9 @@ where
builder =
builder.set_user_authorization_required(::aws_smithy_json::deserialize::token::expect_bool_or_null(tokens.next())?);
}
+ "Tags" => {
+ builder = builder.set_tags(crate::protocol_serde::shape_tags::de_tags(tokens)?);
+ }
_ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
},
other => {
diff --git a/sdk/chatbot/src/protocol_serde/shape_tag.rs b/sdk/chatbot/src/protocol_serde/shape_tag.rs
new file mode 100644
index 000000000000..6175eb9a71d7
--- /dev/null
+++ b/sdk/chatbot/src/protocol_serde/shape_tag.rs
@@ -0,0 +1,62 @@
+// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
+pub fn ser_tag(
+ object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
+ input: &crate::types::Tag,
+) -> Result<(), ::aws_smithy_types::error::operation::SerializationError> {
+ {
+ object.key("TagKey").string(input.tag_key.as_str());
+ }
+ {
+ object.key("TagValue").string(input.tag_value.as_str());
+ }
+ Ok(())
+}
+
+pub(crate) fn de_tag<'a, I>(
+ tokens: &mut ::std::iter::Peekable,
+) -> Result