Version Description
= 2.3 = This is a major upgrade that switches to using a custom table for storing data about offloaded Media Library items. Once upgraded you will not be able to downgrade without restoring data from a backup.
= 2.0 = This is a major upgrade that introduces support for DigitalOcean Spaces, renames the plugin to WP Offload Media Lite, and coincidentally upgrades some of its database settings. You may not be able to downgrade to WP Offload S3 Lite 1.x after upgrading to WP Offload Media Lite 2.0+.
= 1.1 = This is a major change, which ensures S3 URLs are no longer saved in post content. Instead, local URLs are filtered on page generation and replaced with the S3 version. If you depend on the S3 URLs being stored in post content you will need to make modifications to support this version.
= 0.6 = This version requires PHP 5.3.3+ and the Amazon Web Services plugin
Release Info
Developer | deliciousbrains |
Plugin | WP Offload S3 Lite |
Version | 2.4.2 |
Comparing to | |
See all releases |
Code changes from version 2.4.1 to 2.4.2
- README.md +9 -1
- assets/css/styles.css +1 -1
- assets/sass/styles.scss +0 -2
- classes/amazon-s3-and-cloudfront.php +1 -1
- classes/filters/as3cf-local-to-s3.php +5 -2
- classes/providers/storage/aws-provider.php +8 -5
- languages/amazon-s3-and-cloudfront-en.pot +1 -1
- readme.txt +9 -1
- vendor/Aws3/Aws/Api/DateTimeResult.php +59 -1
- vendor/Aws3/Aws/Api/ErrorParser/AbstractErrorParser.php +1 -0
- vendor/Aws3/Aws/Api/Parser/AbstractRestParser.php +1 -4
- vendor/Aws3/Aws/Api/Parser/JsonParser.php +1 -7
- vendor/Aws3/Aws/Api/Parser/MetadataParserTrait.php +1 -4
- vendor/Aws3/Aws/Api/Parser/XmlParser.php +4 -3
- vendor/Aws3/Aws/AwsClient.php +18 -6
- vendor/Aws3/Aws/ClientResolver.php +28 -3
- vendor/Aws3/Aws/ClientSideMonitoring/ConfigurationProvider.php +5 -1
- vendor/Aws3/Aws/CloudFront/CloudFrontClient.php +74 -46
- vendor/Aws3/Aws/Credentials/CredentialProvider.php +5 -1
- vendor/Aws3/Aws/Crypto/AbstractCryptoClient.php +8 -3
- vendor/Aws3/Aws/Crypto/AbstractCryptoClientV2.php +98 -0
- vendor/Aws3/Aws/Crypto/AesGcmDecryptingStream.php +12 -5
- vendor/Aws3/Aws/Crypto/AesGcmEncryptingStream.php +24 -6
- vendor/Aws3/Aws/Crypto/AesStreamInterfaceV2.php +29 -0
- vendor/Aws3/Aws/Crypto/Cipher/Cbc.php +6 -0
- vendor/Aws3/Aws/Crypto/Cipher/CipherBuilderTrait.php +2 -1
- vendor/Aws3/Aws/Crypto/DecryptionTrait.php +5 -4
- vendor/Aws3/Aws/Crypto/DecryptionTraitV2.php +138 -0
- vendor/Aws3/Aws/Crypto/EncryptionTrait.php +3 -1
- vendor/Aws3/Aws/Crypto/EncryptionTraitV2.php +122 -0
- vendor/Aws3/Aws/Crypto/KmsMaterialsProvider.php +14 -6
- vendor/Aws3/Aws/Crypto/KmsMaterialsProviderV2.php +69 -0
- vendor/Aws3/Aws/Crypto/MaterialsProvider.php +1 -1
- vendor/Aws3/Aws/Crypto/MaterialsProviderInterface.php +57 -0
- vendor/Aws3/Aws/Crypto/MaterialsProviderInterfaceV2.php +50 -0
- vendor/Aws3/Aws/Crypto/MaterialsProviderV2.php +57 -0
- vendor/Aws3/Aws/Crypto/MetadataEnvelope.php +0 -1
- vendor/Aws3/Aws/Crypto/Polyfill/AesGcm.php +163 -0
- vendor/Aws3/Aws/Crypto/Polyfill/ByteArray.php +234 -0
- vendor/Aws3/Aws/Crypto/Polyfill/Gmac.php +175 -0
- vendor/Aws3/Aws/Crypto/Polyfill/Key.php +73 -0
- vendor/Aws3/Aws/Crypto/Polyfill/NeedsTrait.php +38 -0
- vendor/Aws3/Aws/Endpoint/PartitionEndpointProvider.php +2 -2
- vendor/Aws3/Aws/EndpointDiscovery/ConfigurationProvider.php +25 -5
- vendor/Aws3/Aws/EndpointDiscovery/EndpointDiscoveryMiddleware.php +5 -2
- vendor/Aws3/Aws/Exception/AwsException.php +12 -0
- vendor/Aws3/Aws/Exception/CryptoException.php +11 -0
- vendor/Aws3/Aws/Exception/CryptoPolyfillException.php +11 -0
- vendor/Aws3/Aws/Retry/Configuration.php +44 -0
- vendor/Aws3/Aws/Retry/ConfigurationInterface.php +29 -0
- vendor/Aws3/Aws/Retry/ConfigurationProvider.php +177 -0
- vendor/Aws3/Aws/Retry/Exception/ConfigurationException.php +13 -0
- vendor/Aws3/Aws/Retry/QuotaManager.php +65 -0
- vendor/Aws3/Aws/Retry/RateLimiter.php +143 -0
- vendor/Aws3/Aws/Retry/RetryHelperTrait.php +46 -0
- vendor/Aws3/Aws/RetryMiddleware.php +17 -50
- vendor/Aws3/Aws/RetryMiddlewareV2.php +235 -0
- vendor/Aws3/Aws/S3/AmbiguousSuccessParser.php +7 -2
- vendor/Aws3/Aws/S3/ApplyChecksumMiddleware.php +12 -6
- vendor/Aws3/Aws/S3/Crypto/CryptoParamsTraitV2.php +16 -0
- vendor/Aws3/Aws/S3/Crypto/HeadersMetadataStrategy.php +2 -2
- vendor/Aws3/Aws/S3/Crypto/S3EncryptionClient.php +28 -6
- vendor/Aws3/Aws/S3/Crypto/S3EncryptionClientV2.php +371 -0
- vendor/Aws3/Aws/S3/Crypto/S3EncryptionMultipartUploader.php +13 -2
- vendor/Aws3/Aws/S3/Crypto/S3EncryptionMultipartUploaderV2.php +148 -0
- vendor/Aws3/Aws/S3/Crypto/UserAgentTrait.php +26 -0
- vendor/Aws3/Aws/S3/MultipartCopy.php +4 -3
- vendor/Aws3/Aws/S3/PostObjectV4.php +1 -1
- vendor/Aws3/Aws/S3/RegionalEndpoint/ConfigurationProvider.php +5 -1
- vendor/Aws3/Aws/S3/S3Client.php +46 -29
- vendor/Aws3/Aws/S3/S3EndpointMiddleware.php +14 -6
- vendor/Aws3/Aws/S3/StreamWrapper.php +1 -1
- vendor/Aws3/Aws/S3/UseArnRegion/ConfigurationProvider.php +5 -1
- vendor/Aws3/Aws/Sdk.php +17 -1
- vendor/Aws3/Aws/Sts/Exception/StsException.php +11 -0
- vendor/Aws3/Aws/Sts/RegionalEndpoints/Configuration.php +29 -0
- vendor/Aws3/Aws/Sts/RegionalEndpoints/ConfigurationInterface.php +22 -0
- vendor/Aws3/Aws/Sts/RegionalEndpoints/ConfigurationProvider.php +169 -0
- vendor/Aws3/Aws/Sts/RegionalEndpoints/Exception/ConfigurationException.php +13 -0
- vendor/Aws3/Aws/Sts/StsClient.php +74 -0
- vendor/Aws3/Aws/data/accessanalyzer/2019-11-01/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/acm-pca/2017-08-22/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/acm/2015-12-08/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/alexaforbusiness/2017-11-09/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/amplify/2017-07-25/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/apigateway/2015-07-09/api-2.json.php +1 -1
- vendor/Aws3/Aws/data/apigatewayv2/2018-11-29/api-2.json.php +0 -1
@@ -4,7 +4,7 @@
|
|
4 |
**Requires at least:** 4.9
|
5 |
**Tested up to:** 5.5
|
6 |
**Requires PHP:** 5.5
|
7 |
-
**Stable tag:** 2.4.
|
8 |
**License:** GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
@@ -89,6 +89,14 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
|
|
89 |
|
90 |
## Changelog ##
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
### WP Offload Media Lite 2.4.1 - 2020-07-21 ###
|
93 |
* Bug fix: Fatal Error with EWWW Image Optimizer 5.5 or earlier installed
|
94 |
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message when Use ARN Region in effect
|
4 |
**Requires at least:** 4.9
|
5 |
**Tested up to:** 5.5
|
6 |
**Requires PHP:** 5.5
|
7 |
+
**Stable tag:** 2.4.2
|
8 |
**License:** GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
89 |
|
90 |
## Changelog ##
|
91 |
|
92 |
+
### WP Offload Media Lite 2.4.2 - 2020-08-27 ###
|
93 |
+
* Improvement: Updated AWS PHP SDK to v3.150.1
|
94 |
+
* Bug fix: Image thumbnail URLs in custom HTML not rewritten to delivery provider URLs
|
95 |
+
* Bug fix: Background processes do not start when PHP memory limit in gigabytes
|
96 |
+
* Bug fix: PHP Fatal error: require(): Failed opening required '.../vendor/Aws3/Aws/Sts/StsClient.php'
|
97 |
+
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message from Regional Endpoint check
|
98 |
+
* Bug fix: Bottom and right button borders in settings page are clipped when focused
|
99 |
+
|
100 |
### WP Offload Media Lite 2.4.1 - 2020-07-21 ###
|
101 |
* Bug fix: Fatal Error with EWWW Image Optimizer 5.5 or earlier installed
|
102 |
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message when Use ARN Region in effect
|
@@ -1 +1 @@
|
|
1 |
-
.as3cf-content,.as3cf-updated,.as3cf-compatibility-notice{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.settings_page_amazon-s3-and-cloudfront .error,.settings_page_amazon-s3-and-cloudfront .notice,.settings_page_amazon-s3-and-cloudfront .updated{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.as3cf-main.wrap{position:relative}.as3cf-main.wrap>h1{float:left}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .as3cf-updated,.as3cf-main.wrap .as3cf-error{-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-error.fatal{clear:both}.as3cf-main.wrap h2.nav-tab-wrapper{float:none;margin-bottom:15px;width:650px;margin-top:10px;padding:9px 0 0 5px}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container{float:right}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container :last-child{margin-right:5px}.as3cf-main.wrap h2.nav-tab-wrapper a.nav-tab-active{color:#464646;cursor:default}.as3cf-main.wrap h2.nav-tab-wrapper a:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-main.wrap .more-info{white-space:nowrap}.as3cf-main.wrap .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.as3cf-main.wrap .error pre code{padding:0;background:none}.as3cf-main.wrap[data-tab="support"] .as3cf-notice,.as3cf-main.wrap[data-tab="support"] .error,.as3cf-main.wrap[data-tab="support"] .updated,.as3cf-main.wrap[data-tab="support"] .updated.show{display:none}.as3cf-main.wrap[data-tab="support"] .fatal .error,.as3cf-main.wrap[data-tab="support"] .as3cf-notice.important,.as3cf-main.wrap[data-tab="support"] .dbrains-api-down{display:block}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .error,.as3cf-main.wrap .updated{max-width:650px;margin-top:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-updated{display:none}.as3cf-main.wrap .as3cf-updated.as3cf-notice,.as3cf-main.wrap .as3cf-updated.show{display:block}.as3cf-main.wrap .alignleft{margin-right:20px;margin-bottom:20px}.as3cf-main.wrap .spinner{min-width:20px}.as3cf-tab .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container h3,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt h3{margin-bottom:-0.5em}.as3cf-tab .as3cf-main-settings a.as3cf-change-provider{display:none}.as3cf-tab .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-provider-select{display:block}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-media-settings{display:block}.as3cf-content>section{margin-bottom:20px}.as3cf-content>section+section.as3cf-access-keys{padding-top:20px;border-top:1px solid #d3d3d3}.as3cf-content>section+section.as3cf-access-keys .as3cf-section-heading{margin-top:0}.as3cf-tab{display:none;position:relative;width:650px}.as3cf-tab .as3cf-main-settings p{font-size:13px}.as3cf-tab .as3cf-main-settings p a{color:#444}.as3cf-tab .object-prefix-desc em{white-space:nowrap}.as3cf-tab .as3cf-url-preview-wrap{background:#fff;text-align:center;padding:20px 0 0;max-width:650px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-tab .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:10px;padding:0 20px 10px;overflow-x:scroll}.as3cf-tab .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-tab .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-tab .as3cf-radio-group label.disabled,.as3cf-tab .as3cf-radio-group label.disabled p{color:#bbb;cursor:default}.as3cf-tab .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-tab .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-tab .as3cf-switch{position:relative;display:inline-block;padding:2px;overflow:hidden;border-radius:2px;background-color:#d4d3d3;cursor:pointer}.as3cf-tab .as3cf-switch.on{background-color:#ade7b5}.as3cf-tab .as3cf-switch span{visibility:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;font-weight:bold;padding:4px 8px;background:#fff;color:#8d8d8d;z-index:1}.as3cf-tab .as3cf-switch span.on{color:#82d78b}.as3cf-tab .as3cf-switch span.checked{visibility:visible}.as3cf-tab .as3cf-switch.disabled{cursor:default;background:#e6e6e6}.as3cf-tab .as3cf-switch.disabled span{background:#f1f1f1;color:#d6d6d6}.as3cf-tab .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-tab .as3cf-setting.hide{display:none}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-sub-setting-heading{padding-top:15px}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-defined-in-config{margin-top:15px}.as3cf-tab div.as3cf-setting{margin-top:4px}.as3cf-tab h3{font-weight:normal;text-transform:uppercase}.as3cf-tab .form-table{margin:0}.as3cf-tab .form-table tr.as3cf-border-bottom td{border-bottom:1px solid #ddd;padding:20px 0px}.as3cf-tab .form-table tr.as3cf-setting-title td{padding-bottom:0}.as3cf-tab .form-table tr.as3cf-setting-title:first-child td{padding-top:20px}.as3cf-tab .form-table tr.configure-url:first-child td{padding-top:5px;padding-bottom:0}.as3cf-tab .form-table tr.hide{display:none}.as3cf-tab .form-table tr td{padding:15px 0}.as3cf-tab .form-table tr td:first-child{vertical-align:top;min-width:120px;padding-top:20px}.as3cf-tab .form-table tr td .as3cf-notice:last-child{margin-bottom:0}.as3cf-tab .form-table tr td>p:first-child{margin-top:0}.as3cf-tab .form-table h3{padding:0;margin:0}.as3cf-tab .form-table h4{margin:0}.as3cf-tab .as3cf-active-region{font-style:italic}.as3cf-tab .as3cf-view-bucket{color:#444;text-decoration:none;margin-right:10px}.as3cf-tab .as3cf-view-bucket:hover,.as3cf-tab .as3cf-view-bucket:active{color:#00a0d2}.as3cf-tab .as3cf-view-bucket:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-tab .as3cf-view-bucket .dashicons-external{margin-top:-2px}.as3cf-tab .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-tab .tooltip:before,.as3cf-tab .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-tab .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-tab .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-tab .tooltip:hover:before,.as3cf-tab .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-tab .as3cf-defined-in-config{background:#ccc;color:#fff;padding:2px 5px;margin:0 0 3px 5px;float:right;white-space:nowrap;clear:right}.as3cf-tab .as3cf-defined-setting,.as3cf-tab .as3cf-locked-setting{color:#bbb}.as3cf-tab .as3cf-defined-setting label,.as3cf-tab .as3cf-locked-setting label{cursor:default}.as3cf-tab .as3cf-defined-setting p .more-info a,.as3cf-tab .as3cf-locked-setting p .more-info a{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-radio-group p,.as3cf-tab .as3cf-locked-setting .as3cf-radio-group p{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-notice,.as3cf-tab .as3cf-locked-setting .as3cf-notice{display:none !important}.as3cf-tab p.actions{margin:30px 0;border-top:1px solid #ccc;padding-top:15px;overflow:hidden}.as3cf-tab p.actions button,.as3cf-tab p.actions .right{float:right;margin-left:15px;margin-right:0;min-width:90px}.as3cf-tab p.actions button:last-of-type,.as3cf-tab p.actions .right:last-of-type{margin-left:0}.as3cf-tab p.actions span{display:inline-block;margin-right:20px;line-height:28px}.as3cf-tab .locked .as3cf-radio-group label,.as3cf-tab .locked .as3cf-radio-group label p{color:#bbb;cursor:default}.as3cf-tab .locked .as3cf-switch{cursor:default;background:#e6e6e6}.as3cf-tab .locked .as3cf-switch span{background:#f1f1f1;color:#d6d6d6}#tab-media{display:block}#tab-media .as3cf-provider-setting td{padding-top:20px;padding-bottom:5px}#tab-media .as3cf-bucket-setting td{padding:5px 0}.as3cf-bucket-container h3{line-height:1.3;text-transform:none}.as3cf-bucket-container a:focus{-webkit-box-shadow:none;box-shadow:none;outline:none}.as3cf-bucket-container input[type=text]{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.as3cf-bucket-container select{-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.as3cf-bucket-container .form-table .as3cf-provider-setting h4{font-weight:inherit;margin:0}.as3cf-bucket-container .form-table .as3cf-bucket-list{margin:5px 0 0 0}.as3cf-bucket-container .form-table td{padding:5px 0}.as3cf-bucket-container .form-table td:first-child{width:100px;line-height:30px;vertical-align:top}.as3cf-bucket-container .form-table td .as3cf-defined-in-config{margin-top:-1.75em}.as3cf-bucket-container .as3cf-bucket-list{padding:15px;max-height:200px;overflow-x:hidden;overflow-y:auto;background-color:#fff;font-size:14px}.as3cf-bucket-container .as3cf-bucket-list li:last-of-type{margin-bottom:0}.as3cf-bucket-container .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-bucket-container .as3cf-bucket-list a:hover{color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a.selected{font-weight:bold;color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a .dashicons{margin-right:5px}.as3cf-change-bucket-access-prompt h3{line-height:1.3;text-transform:none}.as3cf-change-bucket-access-prompt .as3cf-radio-group{margin-bottom:25px}.as3cf-change-bucket-access-prompt .note{color:#999}.as3cf-delivery-provider-select h3{line-height:1.3;text-transform:none}.as3cf-delivery-provider-select .note{color:#999}#tab-media{display:block}#tab-support{min-height:900px}#tab-support .as3cf-sidebar{top:11px}#tab-support .support-section{border-bottom:1px solid #ccc;padding-bottom:20px;margin-bottom:20px}#tab-support .support-section h3{font-size:20px}#tab-support .debug textarea{width:100%;min-height:200px;font-family:Consolas, Monaco, monospace;margin-bottom:5px}.as3cf-sidebar{position:absolute;top:9px;left:670px;width:292px}.as3cf-sidebar.lite{margin-top:35px;background:white;border-radius:7px;border:1px solid #D9E1EB;overflow:hidden;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,0.1);box-shadow:0 1px 2px 0 rgba(0,0,0,0.1)}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none;text-align:center;padding:40px 20px}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:17px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:20px 0 0}.as3cf-sidebar .subscribe h3 a{background-color:#E9715E;color:white;display:inline-block;font-size:13px;font-weight:bold;letter-spacing:1px;text-transform:uppercase;padding:15px 50px;border-radius:4px;margin-bottom:6px;text-decoration:none;-webkit-box-shadow:0 2px 0 #C6442F;box-shadow:0 2px 0 #C6442F}.as3cf-sidebar .subscribe h3 a:hover{color:rgba(78,13,51,0.65)}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .discount-applied{color:rgba(0,0,0,0.4);font-size:12px;line-height:1.4em;margin-top:10px}.as3cf-sidebar .credits{border-top:0;background:#2E2E31;text-align:center;padding:10px}.as3cf-sidebar .credits h4{font-size:11px;font-weight:normal;color:rgba(255,255,255,0.7);margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{display:inline-block;margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{display:inline-block;vertical-align:middle;margin-right:8px}.as3cf-sidebar .credits span{display:inline-block;vertical-align:middle;font-size:12px;line-height:24px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:white;font-size:12px;text-align:center}.as3cf-sidebar .credits a:hover{color:rgba(255,255,255,0.7)}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto}}.as3cf-active-provider,.as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-banner{width:292px;height:156px;display:block;background:#f8cfae url(../img/os3-banner.svg) left bottom/100% no-repeat}.as3cf-banner:focus{-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details{background-color:#4e0d33;padding:10px 20px 20px 20px;color:#eee;font-size:13px;margin:0;display:block;text-decoration:none}.wrap .as3cf-upgrade-details h1{font-size:27px;color:#f8cfae;margin:0 0 15px 0;padding:0;font-weight:300;line-height:1}.wrap .as3cf-upgrade-details h2{font-size:15px;color:#F8CFAE;margin:0 0 30px 0;font-weight:500;line-height:20px}.wrap .as3cf-upgrade-details p{margin:0}.wrap .as3cf-upgrade-details a{color:#eee;font-weight:bold;text-decoration:none;font-size:16px;-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details a:hover{color:#fff}.wrap .as3cf-upgrade-details ul{margin:0;list-style:none}.wrap .as3cf-upgrade-details ul li{margin-bottom:15px;line-height:18px;padding-left:25px;background:url(../img/icon-checked.svg) left center no-repeat}.as3cf-compatibility-notice.error{clear:both;margin:5px 20px 5px 0}.as3cf-bucket-error span.title{font-weight:bold}.as3cf-invalid-bucket-name,.as3cf-validation-error{display:block;margin-top:2px;font-size:12px;color:#a00}.as3cf-notice-toggle-content{max-height:100px;overflow-y:scroll}.as3cf-notice-toggle-content .as3cf-notice-toggle-list{margin-top:0;margin-left:0;padding-left:40px;color:#dc3232}.as3cf-need-help{background-color:white;font-size:16px;font-weight:bold;padding:1em}.as3cf-need-help a{text-decoration:none}.as3cf-settings h3{font-size:20px}.as3cf-settings p{font-size:14px}.as3cf-addons,.as3cf-tab .as3cf-compatibility-notice{max-width:cover}textarea.as3cf-access-key-constants-snippet.code{width:100%;white-space:pre;overflow:hidden;font-size:12px;padding:10px;height:53px}.as3cf-addons .as3cf-addons-list{margin:20px 0 200px;padding-top:5px}.as3cf-addons .as3cf-addon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:20px;font-size:14px}.as3cf-addons .as3cf-addon-info{min-height:100px}.as3cf-addons .as3cf-addon-links{float:right}.as3cf-addons .as3cf-addon-links span{padding:4px 6px}.as3cf-addons .as3cf-addon-icon{float:left;margin-right:20px}.as3cf-addons .as3cf-addon-details{white-space:nowrap}.as3cf-addons .as3cf-addon-title,.as3cf-addons .as3cf-addon-description{font-weight:100}.as3cf-addons .as3cf-addon+.as3cf-addon{margin-top:20px}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull{background-color:#0769ad;color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-title,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-description,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull a{color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra{background:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra a{color:#0769ad;text-decoration:none}
|
1 |
+
.as3cf-content,.as3cf-updated,.as3cf-compatibility-notice{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.settings_page_amazon-s3-and-cloudfront .error,.settings_page_amazon-s3-and-cloudfront .notice,.settings_page_amazon-s3-and-cloudfront .updated{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:650px}.as3cf-main.wrap{position:relative}.as3cf-main.wrap>h1{float:left}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .as3cf-updated,.as3cf-main.wrap .as3cf-error{-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-error.fatal{clear:both}.as3cf-main.wrap h2.nav-tab-wrapper{float:none;margin-bottom:15px;width:650px;margin-top:10px;padding:9px 0 0 5px}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container{float:right}.as3cf-main.wrap h2.nav-tab-wrapper .nav-tab-container :last-child{margin-right:5px}.as3cf-main.wrap h2.nav-tab-wrapper a.nav-tab-active{color:#464646;cursor:default}.as3cf-main.wrap h2.nav-tab-wrapper a:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-main.wrap .more-info{white-space:nowrap}.as3cf-main.wrap .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.as3cf-main.wrap .error pre code{padding:0;background:none}.as3cf-main.wrap[data-tab="support"] .as3cf-notice,.as3cf-main.wrap[data-tab="support"] .error,.as3cf-main.wrap[data-tab="support"] .updated,.as3cf-main.wrap[data-tab="support"] .updated.show{display:none}.as3cf-main.wrap[data-tab="support"] .fatal .error,.as3cf-main.wrap[data-tab="support"] .as3cf-notice.important,.as3cf-main.wrap[data-tab="support"] .dbrains-api-down{display:block}.as3cf-main.wrap .as3cf-notice,.as3cf-main.wrap .error,.as3cf-main.wrap .updated{max-width:650px;margin-top:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-main.wrap .as3cf-updated{display:none}.as3cf-main.wrap .as3cf-updated.as3cf-notice,.as3cf-main.wrap .as3cf-updated.show{display:block}.as3cf-main.wrap .alignleft{margin-right:20px;margin-bottom:20px}.as3cf-main.wrap .spinner{min-width:20px}.as3cf-tab .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab .as3cf-main-settings .as3cf-bucket-container h3,.as3cf-tab .as3cf-main-settings .as3cf-change-bucket-access-prompt h3{margin-bottom:-0.5em}.as3cf-tab .as3cf-main-settings a.as3cf-change-provider{display:none}.as3cf-tab .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-provider-select{display:block}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-needs-access-keys .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-can-write-error,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-bucket-container{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-needs-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings,.as3cf-tab.as3cf-has-access-keys.as3cf-change-bucket:not(.as3cf-change-provider) .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-bucket-access .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-can-write-error{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-delivery-provider-select{display:block}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket.as3cf-change-delivery-provider .as3cf-main-settings .as3cf-media-settings{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-bucket-container{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-change-bucket-access-prompt{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-delivery-provider-select{display:none}.as3cf-tab.as3cf-has-access-keys.as3cf-has-bucket:not(.as3cf-change-provider):not(.as3cf-change-bucket):not(.as3cf-change-bucket-access):not(.as3cf-change-delivery-provider) .as3cf-main-settings .as3cf-media-settings{display:block}.as3cf-content>section{margin-bottom:20px}.as3cf-content>section+section.as3cf-access-keys{padding-top:20px;border-top:1px solid #d3d3d3}.as3cf-content>section+section.as3cf-access-keys .as3cf-section-heading{margin-top:0}.as3cf-tab{display:none;position:relative;width:650px}.as3cf-tab .as3cf-main-settings p{font-size:13px}.as3cf-tab .as3cf-main-settings p a{color:#444}.as3cf-tab .object-prefix-desc em{white-space:nowrap}.as3cf-tab .as3cf-url-preview-wrap{background:#fff;text-align:center;padding:20px 0 0;max-width:650px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-tab .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:10px;padding:0 20px 10px;overflow-x:scroll}.as3cf-tab .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-tab .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-tab .as3cf-radio-group label.disabled,.as3cf-tab .as3cf-radio-group label.disabled p{color:#bbb;cursor:default}.as3cf-tab .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-tab .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-tab .as3cf-switch{position:relative;display:inline-block;padding:2px;overflow:hidden;border-radius:2px;background-color:#d4d3d3;cursor:pointer}.as3cf-tab .as3cf-switch.on{background-color:#ade7b5}.as3cf-tab .as3cf-switch span{visibility:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;font-weight:bold;padding:4px 8px;background:#fff;color:#8d8d8d;z-index:1}.as3cf-tab .as3cf-switch span.on{color:#82d78b}.as3cf-tab .as3cf-switch span.checked{visibility:visible}.as3cf-tab .as3cf-switch.disabled{cursor:default;background:#e6e6e6}.as3cf-tab .as3cf-switch.disabled span{background:#f1f1f1;color:#d6d6d6}.as3cf-tab .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-tab .as3cf-setting.hide{display:none}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-sub-setting-heading{padding-top:15px}.as3cf-tab .as3cf-setting .as3cf-sub-setting .as3cf-defined-in-config{margin-top:15px}.as3cf-tab div.as3cf-setting{margin-top:4px}.as3cf-tab h3{font-weight:normal;text-transform:uppercase}.as3cf-tab .form-table{margin:0}.as3cf-tab .form-table tr.as3cf-border-bottom td{border-bottom:1px solid #ddd;padding:20px 0px}.as3cf-tab .form-table tr.as3cf-setting-title td{padding-bottom:0}.as3cf-tab .form-table tr.as3cf-setting-title:first-child td{padding-top:20px}.as3cf-tab .form-table tr.configure-url:first-child td{padding-top:5px;padding-bottom:0}.as3cf-tab .form-table tr.hide{display:none}.as3cf-tab .form-table tr td{padding:15px 0}.as3cf-tab .form-table tr td:first-child{vertical-align:top;min-width:120px;padding-top:20px}.as3cf-tab .form-table tr td .as3cf-notice:last-child{margin-bottom:0}.as3cf-tab .form-table tr td>p:first-child{margin-top:0}.as3cf-tab .form-table h3{padding:0;margin:0}.as3cf-tab .form-table h4{margin:0}.as3cf-tab .as3cf-active-region{font-style:italic}.as3cf-tab .as3cf-view-bucket{color:#444;text-decoration:none;margin-right:10px}.as3cf-tab .as3cf-view-bucket:hover,.as3cf-tab .as3cf-view-bucket:active{color:#00a0d2}.as3cf-tab .as3cf-view-bucket:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-tab .as3cf-view-bucket .dashicons-external{margin-top:-2px}.as3cf-tab .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-tab .tooltip:before,.as3cf-tab .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-tab .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-tab .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-tab .tooltip:hover:before,.as3cf-tab .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-tab .as3cf-defined-in-config{background:#ccc;color:#fff;padding:2px 5px;margin:0 0 3px 5px;float:right;white-space:nowrap;clear:right}.as3cf-tab .as3cf-defined-setting,.as3cf-tab .as3cf-locked-setting{color:#bbb}.as3cf-tab .as3cf-defined-setting label,.as3cf-tab .as3cf-locked-setting label{cursor:default}.as3cf-tab .as3cf-defined-setting p .more-info a,.as3cf-tab .as3cf-locked-setting p .more-info a{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-radio-group p,.as3cf-tab .as3cf-locked-setting .as3cf-radio-group p{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-notice,.as3cf-tab .as3cf-locked-setting .as3cf-notice{display:none !important}.as3cf-tab p.actions{margin:30px 0;border-top:1px solid #ccc;padding-top:15px}.as3cf-tab p.actions button,.as3cf-tab p.actions .right{float:right;margin-left:15px;margin-right:0;min-width:90px}.as3cf-tab p.actions button:last-of-type,.as3cf-tab p.actions .right:last-of-type{margin-left:0}.as3cf-tab p.actions span{display:inline-block;margin-right:20px;line-height:28px}.as3cf-tab .locked .as3cf-radio-group label,.as3cf-tab .locked .as3cf-radio-group label p{color:#bbb;cursor:default}.as3cf-tab .locked .as3cf-switch{cursor:default;background:#e6e6e6}.as3cf-tab .locked .as3cf-switch span{background:#f1f1f1;color:#d6d6d6}#tab-media{display:block}#tab-media .as3cf-provider-setting td{padding-top:20px;padding-bottom:5px}#tab-media .as3cf-bucket-setting td{padding:5px 0}.as3cf-bucket-container h3{line-height:1.3;text-transform:none}.as3cf-bucket-container a:focus{-webkit-box-shadow:none;box-shadow:none;outline:none}.as3cf-bucket-container input[type=text]{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.as3cf-bucket-container select{-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.as3cf-bucket-container .form-table .as3cf-provider-setting h4{font-weight:inherit;margin:0}.as3cf-bucket-container .form-table .as3cf-bucket-list{margin:5px 0 0 0}.as3cf-bucket-container .form-table td{padding:5px 0}.as3cf-bucket-container .form-table td:first-child{width:100px;line-height:30px;vertical-align:top}.as3cf-bucket-container .form-table td .as3cf-defined-in-config{margin-top:-1.75em}.as3cf-bucket-container .as3cf-bucket-list{padding:15px;max-height:200px;overflow-x:hidden;overflow-y:auto;background-color:#fff;font-size:14px}.as3cf-bucket-container .as3cf-bucket-list li:last-of-type{margin-bottom:0}.as3cf-bucket-container .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-bucket-container .as3cf-bucket-list a:hover{color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a.selected{font-weight:bold;color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a .dashicons{margin-right:5px}.as3cf-change-bucket-access-prompt h3{line-height:1.3;text-transform:none}.as3cf-change-bucket-access-prompt .as3cf-radio-group{margin-bottom:25px}.as3cf-change-bucket-access-prompt .note{color:#999}.as3cf-delivery-provider-select h3{line-height:1.3;text-transform:none}.as3cf-delivery-provider-select .note{color:#999}#tab-media{display:block}#tab-support{min-height:900px}#tab-support .as3cf-sidebar{top:11px}#tab-support .support-section{border-bottom:1px solid #ccc;padding-bottom:20px;margin-bottom:20px}#tab-support .support-section h3{font-size:20px}#tab-support .debug textarea{width:100%;min-height:200px;font-family:Consolas, Monaco, monospace;margin-bottom:5px}.as3cf-sidebar{position:absolute;top:9px;left:670px;width:292px}.as3cf-sidebar.lite{margin-top:35px;background:white;border-radius:7px;border:1px solid #D9E1EB;overflow:hidden;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,0.1);box-shadow:0 1px 2px 0 rgba(0,0,0,0.1)}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none;text-align:center;padding:40px 20px}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:17px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:20px 0 0}.as3cf-sidebar .subscribe h3 a{background-color:#E9715E;color:white;display:inline-block;font-size:13px;font-weight:bold;letter-spacing:1px;text-transform:uppercase;padding:15px 50px;border-radius:4px;margin-bottom:6px;text-decoration:none;-webkit-box-shadow:0 2px 0 #C6442F;box-shadow:0 2px 0 #C6442F}.as3cf-sidebar .subscribe h3 a:hover{color:rgba(78,13,51,0.65)}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .discount-applied{color:rgba(0,0,0,0.4);font-size:12px;line-height:1.4em;margin-top:10px}.as3cf-sidebar .credits{border-top:0;background:#2E2E31;text-align:center;padding:10px}.as3cf-sidebar .credits h4{font-size:11px;font-weight:normal;color:rgba(255,255,255,0.7);margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{display:inline-block;margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{display:inline-block;vertical-align:middle;margin-right:8px}.as3cf-sidebar .credits span{display:inline-block;vertical-align:middle;font-size:12px;line-height:24px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:white;font-size:12px;text-align:center}.as3cf-sidebar .credits a:hover{color:rgba(255,255,255,0.7)}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto}}.as3cf-active-provider,.as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-banner{width:292px;height:156px;display:block;background:#f8cfae url(../img/os3-banner.svg) left bottom/100% no-repeat}.as3cf-banner:focus{-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details{background-color:#4e0d33;padding:10px 20px 20px 20px;color:#eee;font-size:13px;margin:0;display:block;text-decoration:none}.wrap .as3cf-upgrade-details h1{font-size:27px;color:#f8cfae;margin:0 0 15px 0;padding:0;font-weight:300;line-height:1}.wrap .as3cf-upgrade-details h2{font-size:15px;color:#F8CFAE;margin:0 0 30px 0;font-weight:500;line-height:20px}.wrap .as3cf-upgrade-details p{margin:0}.wrap .as3cf-upgrade-details a{color:#eee;font-weight:bold;text-decoration:none;font-size:16px;-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details a:hover{color:#fff}.wrap .as3cf-upgrade-details ul{margin:0;list-style:none}.wrap .as3cf-upgrade-details ul li{margin-bottom:15px;line-height:18px;padding-left:25px;background:url(../img/icon-checked.svg) left center no-repeat}.as3cf-compatibility-notice.error{clear:both;margin:5px 20px 5px 0}.as3cf-bucket-error span.title{font-weight:bold}.as3cf-invalid-bucket-name,.as3cf-validation-error{display:block;margin-top:2px;font-size:12px;color:#a00}.as3cf-notice-toggle-content{max-height:100px;overflow-y:scroll}.as3cf-notice-toggle-content .as3cf-notice-toggle-list{margin-top:0;margin-left:0;padding-left:40px;color:#dc3232}.as3cf-need-help{background-color:white;font-size:16px;font-weight:bold;padding:1em}.as3cf-need-help a{text-decoration:none}.as3cf-settings h3{font-size:20px}.as3cf-settings p{font-size:14px}.as3cf-addons,.as3cf-tab .as3cf-compatibility-notice{max-width:cover}textarea.as3cf-access-key-constants-snippet.code{width:100%;white-space:pre;overflow:hidden;font-size:12px;padding:10px;height:53px}.as3cf-addons .as3cf-addons-list{margin:20px 0 200px;padding-top:5px}.as3cf-addons .as3cf-addon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:20px;font-size:14px}.as3cf-addons .as3cf-addon-info{min-height:100px}.as3cf-addons .as3cf-addon-links{float:right}.as3cf-addons .as3cf-addon-links span{padding:4px 6px}.as3cf-addons .as3cf-addon-icon{float:left;margin-right:20px}.as3cf-addons .as3cf-addon-details{white-space:nowrap}.as3cf-addons .as3cf-addon-title,.as3cf-addons .as3cf-addon-description{font-weight:100}.as3cf-addons .as3cf-addon+.as3cf-addon{margin-top:20px}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull{background-color:#0769ad;color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-title,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .as3cf-addon-description,.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull a{color:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra{background:white}.as3cf-addons .as3cf-addon.amazon-s3-and-cloudfront-assets-pull .extra a{color:#0769ad;text-decoration:none}
|
@@ -617,9 +617,7 @@ $as3cf_assets: #0769ad;
|
|
617 |
p.actions {
|
618 |
margin: 30px 0;
|
619 |
border-top: 1px solid #ccc;
|
620 |
-
//padding: 20px 30px;
|
621 |
padding-top: 15px;
|
622 |
-
overflow: hidden;
|
623 |
|
624 |
button,
|
625 |
.right {
|
617 |
p.actions {
|
618 |
margin: 30px 0;
|
619 |
border-top: 1px solid #ccc;
|
|
|
620 |
padding-top: 15px;
|
|
|
621 |
|
622 |
button,
|
623 |
.right {
|
@@ -4976,7 +4976,7 @@ class Amazon_S3_And_CloudFront extends AS3CF_Plugin_Base {
|
|
4976 |
$memory_limit = '32000M';
|
4977 |
}
|
4978 |
|
4979 |
-
return
|
4980 |
}
|
4981 |
|
4982 |
/**
|
4976 |
$memory_limit = '32000M';
|
4977 |
}
|
4978 |
|
4979 |
+
return wp_convert_hr_to_bytes( $memory_limit );
|
4980 |
}
|
4981 |
|
4982 |
/**
|
@@ -250,7 +250,10 @@ class AS3CF_Local_To_S3 extends AS3CF_Filter {
|
|
250 |
}
|
251 |
|
252 |
foreach ( $query_set as $url ) {
|
253 |
-
|
|
|
|
|
|
|
254 |
|
255 |
if ( isset( $this->query_cache[ $full_url ] ) ) {
|
256 |
// ID already cached, use it.
|
@@ -259,7 +262,7 @@ class AS3CF_Local_To_S3 extends AS3CF_Filter {
|
|
259 |
continue;
|
260 |
}
|
261 |
|
262 |
-
$path = AS3CF_Utils::decode_filename_in_path( ltrim( str_replace( $this->get_bare_upload_base_urls(), '', $
|
263 |
|
264 |
$paths[ $path ] = $full_url;
|
265 |
$full_urls[ $full_url ][] = $url;
|
250 |
}
|
251 |
|
252 |
foreach ( $query_set as $url ) {
|
253 |
+
// Path to search for in query set should be based on bare URL.
|
254 |
+
$bare_url = AS3CF_Utils::remove_scheme( $url );
|
255 |
+
// There can be multiple URLs in the query set that belong to the same full URL for the Media Library item.
|
256 |
+
$full_url = AS3CF_Utils::remove_size_from_filename( $bare_url );
|
257 |
|
258 |
if ( isset( $this->query_cache[ $full_url ] ) ) {
|
259 |
// ID already cached, use it.
|
262 |
continue;
|
263 |
}
|
264 |
|
265 |
+
$path = AS3CF_Utils::decode_filename_in_path( ltrim( str_replace( $this->get_bare_upload_base_urls(), '', $bare_url ), '/' ) );
|
266 |
|
267 |
$paths[ $path ] = $full_url;
|
268 |
$full_urls[ $full_url ][] = $url;
|
@@ -218,11 +218,14 @@ class AWS_Provider extends Storage_Provider {
|
|
218 |
*/
|
219 |
protected function default_client_args() {
|
220 |
return array(
|
221 |
-
'signature_version'
|
222 |
-
'version'
|
223 |
-
'region'
|
224 |
-
'csm'
|
225 |
-
'use_arn_region'
|
|
|
|
|
|
|
226 |
);
|
227 |
}
|
228 |
|
218 |
*/
|
219 |
protected function default_client_args() {
|
220 |
return array(
|
221 |
+
'signature_version' => static::SIGNATURE_VERSION,
|
222 |
+
'version' => static::API_VERSION,
|
223 |
+
'region' => $this->default_region,
|
224 |
+
'csm' => apply_filters( 'as3cf_disable_aws_csm', true ) ? false : true,
|
225 |
+
'use_arn_region' => apply_filters( 'as3cf_disable_aws_use_arn_region', true ) ? false : true,
|
226 |
+
's3_us_east_1_regional_endpoint' => apply_filters( 'as3cf_aws_s3_us_east_1_regional_endpoint', 'legacy' ),
|
227 |
+
'endpoint_discovery' => apply_filters( 'as3cf_disable_aws_endpoint_discovery', true ) ? array( 'enabled' => false ) : array( 'enabled' => true ),
|
228 |
+
'sts_regional_endpoints' => apply_filters( 'as3cf_aws_sts_regional_endpoints', 'legacy' ),
|
229 |
);
|
230 |
}
|
231 |
|
@@ -8,7 +8,7 @@ msgid ""
|
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: amazon-s3-and-cloudfront\n"
|
10 |
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: amazon-s3-and-cloudfront\n"
|
10 |
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
|
11 |
+
"POT-Creation-Date: 2020-08-27 12:18+0100\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -4,7 +4,7 @@ Tags: uploads, amazon, s3, amazon s3, digitalocean, digitalocean spaces, google
|
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.5
|
6 |
Requires PHP: 5.5
|
7 |
-
Stable tag: 2.4.
|
8 |
License: GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
@@ -81,6 +81,14 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
|
|
81 |
|
82 |
== Changelog ==
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
= WP Offload Media Lite 2.4.1 - 2020-07-21 =
|
85 |
* Bug fix: Fatal Error with EWWW Image Optimizer 5.5 or earlier installed
|
86 |
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message when Use ARN Region in effect
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.5
|
6 |
Requires PHP: 5.5
|
7 |
+
Stable tag: 2.4.2
|
8 |
License: GPLv3
|
9 |
|
10 |
Copies files to Amazon S3, DigitalOcean Spaces or Google Cloud Storage as they are uploaded to the Media Library. Optionally configure Amazon CloudFront or another CDN for faster delivery.
|
81 |
|
82 |
== Changelog ==
|
83 |
|
84 |
+
= WP Offload Media Lite 2.4.2 - 2020-08-27 =
|
85 |
+
* Improvement: Updated AWS PHP SDK to v3.150.1
|
86 |
+
* Bug fix: Image thumbnail URLs in custom HTML not rewritten to delivery provider URLs
|
87 |
+
* Bug fix: Background processes do not start when PHP memory limit in gigabytes
|
88 |
+
* Bug fix: PHP Fatal error: require(): Failed opening required '.../vendor/Aws3/Aws/Sts/StsClient.php'
|
89 |
+
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message from Regional Endpoint check
|
90 |
+
* Bug fix: Bottom and right button borders in settings page are clipped when focused
|
91 |
+
|
92 |
= WP Offload Media Lite 2.4.1 - 2020-07-21 =
|
93 |
* Bug fix: Fatal Error with EWWW Image Optimizer 5.5 or earlier installed
|
94 |
* Bug fix: AWS SDK "Warning: is_readable(): open_basedir restriction in effect" message when Use ARN Region in effect
|
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api;
|
4 |
|
|
|
|
|
5 |
/**
|
6 |
* DateTime overrides that make DateTime work more seamlessly as a string,
|
7 |
* with JSON documents, and with JMESPath.
|
@@ -10,15 +12,71 @@ class DateTimeResult extends \DateTime implements \JsonSerializable
|
|
10 |
{
|
11 |
/**
|
12 |
* Create a new DateTimeResult from a unix timestamp.
|
13 |
-
*
|
|
|
|
|
14 |
* @param $unixTimestamp
|
15 |
*
|
16 |
* @return DateTimeResult
|
|
|
17 |
*/
|
18 |
public static function fromEpoch($unixTimestamp)
|
19 |
{
|
20 |
return new self(gmdate('c', $unixTimestamp));
|
21 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
/**
|
23 |
* Serialize the DateTimeResult as an ISO 8601 date string.
|
24 |
*
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException;
|
6 |
+
use Exception;
|
7 |
/**
|
8 |
* DateTime overrides that make DateTime work more seamlessly as a string,
|
9 |
* with JSON documents, and with JMESPath.
|
12 |
{
|
13 |
/**
|
14 |
* Create a new DateTimeResult from a unix timestamp.
|
15 |
+
* The Unix epoch (or Unix time or POSIX time or Unix
|
16 |
+
* timestamp) is the number of seconds that have elapsed since
|
17 |
+
* January 1, 1970 (midnight UTC/GMT).
|
18 |
* @param $unixTimestamp
|
19 |
*
|
20 |
* @return DateTimeResult
|
21 |
+
* @throws Exception
|
22 |
*/
|
23 |
public static function fromEpoch($unixTimestamp)
|
24 |
{
|
25 |
return new self(gmdate('c', $unixTimestamp));
|
26 |
}
|
27 |
+
/**
|
28 |
+
* @param $iso8601Timestamp
|
29 |
+
*
|
30 |
+
* @return DateTimeResult
|
31 |
+
*/
|
32 |
+
public static function fromISO8601($iso8601Timestamp)
|
33 |
+
{
|
34 |
+
if (is_numeric($iso8601Timestamp) || !is_string($iso8601Timestamp)) {
|
35 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromISO8601');
|
36 |
+
}
|
37 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult($iso8601Timestamp);
|
38 |
+
}
|
39 |
+
/**
|
40 |
+
* Create a new DateTimeResult from an unknown timestamp.
|
41 |
+
*
|
42 |
+
* @param $timestamp
|
43 |
+
*
|
44 |
+
* @return DateTimeResult
|
45 |
+
* @throws ParserException|Exception
|
46 |
+
*/
|
47 |
+
public static function fromTimestamp($timestamp, $expectedFormat = null)
|
48 |
+
{
|
49 |
+
if (empty($timestamp)) {
|
50 |
+
return self::fromEpoch(0);
|
51 |
+
}
|
52 |
+
if (!(is_string($timestamp) || is_numeric($timestamp))) {
|
53 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
|
54 |
+
}
|
55 |
+
try {
|
56 |
+
if ($expectedFormat == 'iso8601') {
|
57 |
+
try {
|
58 |
+
return self::fromISO8601($timestamp);
|
59 |
+
} catch (Exception $exception) {
|
60 |
+
return self::fromEpoch($timestamp);
|
61 |
+
}
|
62 |
+
} else {
|
63 |
+
if ($expectedFormat == 'unixTimestamp') {
|
64 |
+
try {
|
65 |
+
return self::fromEpoch($timestamp);
|
66 |
+
} catch (Exception $exception) {
|
67 |
+
return self::fromISO8601($timestamp);
|
68 |
+
}
|
69 |
+
} else {
|
70 |
+
if (\DeliciousBrains\WP_Offload_Media\Aws3\Aws\is_valid_epoch($timestamp)) {
|
71 |
+
return self::fromEpoch($timestamp);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
return self::fromISO8601($timestamp);
|
76 |
+
} catch (Exception $exception) {
|
77 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
|
78 |
+
}
|
79 |
+
}
|
80 |
/**
|
81 |
* Serialize the DateTimeResult as an ISO 8601 date string.
|
82 |
*
|
@@ -46,6 +46,7 @@ abstract class AbstractErrorParser
|
|
46 |
if ($data['code'] == $error['name'] && $error instanceof StructureShape) {
|
47 |
$modeledError = $error;
|
48 |
$data['body'] = $this->extractPayload($modeledError, $response);
|
|
|
49 |
foreach ($error->getMembers() as $name => $member) {
|
50 |
switch ($member['location']) {
|
51 |
case 'header':
|
46 |
if ($data['code'] == $error['name'] && $error instanceof StructureShape) {
|
47 |
$modeledError = $error;
|
48 |
$data['body'] = $this->extractPayload($modeledError, $response);
|
49 |
+
$data['error_shape'] = $modeledError;
|
50 |
foreach ($error->getMembers() as $name => $member) {
|
51 |
switch ($member['location']) {
|
52 |
case 'header':
|
@@ -88,10 +88,7 @@ abstract class AbstractRestParser extends \DeliciousBrains\WP_Offload_Media\Aws3
|
|
88 |
break;
|
89 |
case 'timestamp':
|
90 |
try {
|
91 |
-
|
92 |
-
$value = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromEpoch($value);
|
93 |
-
}
|
94 |
-
$value = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult($value);
|
95 |
break;
|
96 |
} catch (\Exception $e) {
|
97 |
// If the value cannot be parsed, then do not add it to the
|
88 |
break;
|
89 |
case 'timestamp':
|
90 |
try {
|
91 |
+
$value = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
|
|
|
|
|
|
92 |
break;
|
93 |
} catch (\Exception $e) {
|
94 |
// If the value cannot be parsed, then do not add it to the
|
@@ -39,13 +39,7 @@ class JsonParser
|
|
39 |
}
|
40 |
return $target;
|
41 |
case 'timestamp':
|
42 |
-
|
43 |
-
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult($value);
|
44 |
-
}
|
45 |
-
// The Unix epoch (or Unix time or POSIX time or Unix
|
46 |
-
// timestamp) is the number of seconds that have elapsed since
|
47 |
-
// January 1, 1970 (midnight UTC/GMT).
|
48 |
-
return \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromEpoch($value);
|
49 |
case 'blob':
|
50 |
return base64_decode($value);
|
51 |
default:
|
39 |
}
|
40 |
return $target;
|
41 |
case 'timestamp':
|
42 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
case 'blob':
|
44 |
return base64_decode($value);
|
45 |
default:
|
@@ -29,10 +29,7 @@ trait MetadataParserTrait
|
|
29 |
break;
|
30 |
case 'timestamp':
|
31 |
try {
|
32 |
-
|
33 |
-
$value = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromEpoch($value);
|
34 |
-
}
|
35 |
-
$value = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult($value);
|
36 |
break;
|
37 |
} catch (\Exception $e) {
|
38 |
// If the value cannot be parsed, then do not add it to the
|
29 |
break;
|
30 |
case 'timestamp':
|
31 |
try {
|
32 |
+
$value = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
|
|
|
|
|
|
33 |
break;
|
34 |
} catch (\Exception $e) {
|
35 |
// If the value cannot be parsed, then do not add it to the
|
@@ -5,6 +5,7 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser;
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\ListShape;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\MapShape;
|
|
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\StructureShape;
|
10 |
/**
|
@@ -99,10 +100,10 @@ class XmlParser
|
|
99 |
}
|
100 |
private function parse_timestamp(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $shape, $value)
|
101 |
{
|
102 |
-
if (
|
103 |
-
return \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::
|
104 |
}
|
105 |
-
|
106 |
}
|
107 |
private function parse_xml_attribute(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $shape, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $memberShape, $value)
|
108 |
{
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\ListShape;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\MapShape;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape;
|
10 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\StructureShape;
|
11 |
/**
|
100 |
}
|
101 |
private function parse_timestamp(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $shape, $value)
|
102 |
{
|
103 |
+
if (is_string($value) || is_int($value) || is_object($value) && method_exists($value, '__toString')) {
|
104 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\DateTimeResult::fromTimestamp((string) $value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
105 |
}
|
106 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to XmlParser::parse_timestamp');
|
107 |
}
|
108 |
private function parse_xml_attribute(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $shape, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape $memberShape, $value)
|
109 |
{
|
@@ -101,9 +101,9 @@ class AwsClient implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientI
|
|
101 |
* Provide an instance of Aws\EndpointDiscovery\ConfigurationInterface,
|
102 |
* an instance Aws\CacheInterface, a callable that provides a promise for
|
103 |
* a Configuration object, or an associative array with the following
|
104 |
-
* keys: enabled: (bool) Set to true to enable endpoint discovery,
|
105 |
-
* defaults to false; cache_limit: (int) The
|
106 |
-
* endpoints cache, defaults to 1000.
|
107 |
* - endpoint_provider: (callable) An optional PHP callable that
|
108 |
* accepts a hash of options including a "service" and "region" key and
|
109 |
* returns NULL or a hash of endpoint data, of which the "endpoint" key
|
@@ -136,8 +136,16 @@ class AwsClient implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientI
|
|
136 |
* - region: (string, required) Region to connect to. See
|
137 |
* http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of
|
138 |
* available regions.
|
139 |
-
* - retries: (int,
|
140 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
* - scheme: (string, default=string(5) "https") URI scheme to use when
|
142 |
* connecting connect. The SDK will utilize "https" endpoints (i.e.,
|
143 |
* utilize SSL/TLS connections) by default. You can attempt to connect to
|
@@ -152,6 +160,10 @@ class AwsClient implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientI
|
|
152 |
* signature version to use with a service (e.g., v4). Note that
|
153 |
* per/operation signature version MAY override this requested signature
|
154 |
* version.
|
|
|
|
|
|
|
|
|
155 |
* - validate: (bool, default=bool(true)) Set to false to disable
|
156 |
* client-side parameter validation.
|
157 |
* - version: (string, required) The version of the webservice to
|
@@ -241,7 +253,7 @@ class AwsClient implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientI
|
|
241 |
*
|
242 |
* @return callable
|
243 |
*/
|
244 |
-
|
245 |
{
|
246 |
return $this->signatureProvider;
|
247 |
}
|
101 |
* Provide an instance of Aws\EndpointDiscovery\ConfigurationInterface,
|
102 |
* an instance Aws\CacheInterface, a callable that provides a promise for
|
103 |
* a Configuration object, or an associative array with the following
|
104 |
+
* keys: enabled: (bool) Set to true to enable endpoint discovery, false
|
105 |
+
* to explicitly disable it, defaults to false; cache_limit: (int) The
|
106 |
+
* maximum number of keys in the endpoints cache, defaults to 1000.
|
107 |
* - endpoint_provider: (callable) An optional PHP callable that
|
108 |
* accepts a hash of options including a "service" and "region" key and
|
109 |
* returns NULL or a hash of endpoint data, of which the "endpoint" key
|
136 |
* - region: (string, required) Region to connect to. See
|
137 |
* http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of
|
138 |
* available regions.
|
139 |
+
* - retries: (int, Aws\Retry\ConfigurationInterface, Aws\CacheInterface,
|
140 |
+
* array, callable) Configures the retry mode and maximum number of
|
141 |
+
* allowed retries for a client (pass 0 to disable retries). Provide an
|
142 |
+
* integer for 'legacy' mode with the specified number of retries.
|
143 |
+
* Otherwise provide an instance of Aws\Retry\ConfigurationInterface, an
|
144 |
+
* instance of Aws\CacheInterface, a callable function, or an array with
|
145 |
+
* the following keys: mode: (string) Set to 'legacy', 'standard' (uses
|
146 |
+
* retry quota management), or 'adapative' (an experimental mode that adds
|
147 |
+
* client-side rate limiting to standard mode); max_attempts (int) The
|
148 |
+
* maximum number of attempts for a given request.
|
149 |
* - scheme: (string, default=string(5) "https") URI scheme to use when
|
150 |
* connecting connect. The SDK will utilize "https" endpoints (i.e.,
|
151 |
* utilize SSL/TLS connections) by default. You can attempt to connect to
|
160 |
* signature version to use with a service (e.g., v4). Note that
|
161 |
* per/operation signature version MAY override this requested signature
|
162 |
* version.
|
163 |
+
* - use_aws_shared_config_files: (bool, default=bool(true)) Set to false to
|
164 |
+
* disable checking for shared config file in '~/.aws/config' and
|
165 |
+
* '~/.aws/credentials'. This will override the AWS_CONFIG_FILE
|
166 |
+
* environment variable.
|
167 |
* - validate: (bool, default=bool(true)) Set to false to disable
|
168 |
* client-side parameter validation.
|
169 |
* - version: (string, required) The version of the webservice to
|
253 |
*
|
254 |
* @return callable
|
255 |
*/
|
256 |
+
public final function getSignatureProvider()
|
257 |
{
|
258 |
return $this->signatureProvider;
|
259 |
}
|
@@ -14,6 +14,9 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\PartitionEndpointProvider
|
|
14 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationInterface;
|
15 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationProvider;
|
16 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\EndpointDiscoveryMiddleware;
|
|
|
|
|
|
|
17 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Signature\SignatureProvider;
|
18 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\EndpointProvider;
|
19 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\CredentialProvider;
|
@@ -28,7 +31,7 @@ class ClientResolver
|
|
28 |
private $argDefinitions;
|
29 |
/** @var array Map of types to a corresponding function */
|
30 |
private static $typeMap = ['resource' => 'is_resource', 'callable' => 'is_callable', 'int' => 'is_int', 'bool' => 'is_bool', 'string' => 'is_string', 'object' => 'is_object', 'array' => 'is_array'];
|
31 |
-
private static $defaultArgs = ['service' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'Name of the service to utilize. This value will be supplied by default when using one of the SDK clients (e.g., Aws\\S3\\S3Client).', 'required' => true, 'internal' => true], 'exception_class' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'Exception class to create when an error occurs.', 'default' => 'DeliciousBrains\\WP_Offload_Media\\Aws3\\Aws\\Exception\\AwsException', 'internal' => true], 'scheme' => ['type' => 'value', 'valid' => ['string'], 'default' => 'https', 'doc' => 'URI scheme to use when connecting connect. The SDK will utilize "https" endpoints (i.e., utilize SSL/TLS connections) by default. You can attempt to connect to a service over an unencrypted "http" endpoint by setting ``scheme`` to "http".'], 'disable_host_prefix_injection' => ['type' => 'value', 'valid' => ['bool'], 'doc' => 'Set to true to disable host prefix injection logic for services that use it. This disables the entire prefix injection, including the portions supplied by user-defined parameters. Setting this flag will have no effect on services that do not use host prefix injection.', 'default' => false], 'endpoint' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'The full URI of the webservice. This is only required when connecting to a custom endpoint (e.g., a local version of S3).', 'fn' => [__CLASS__, '_apply_endpoint']], 'region' => ['type' => 'value', 'valid' => ['string'], 'required' => [__CLASS__, '_missing_region'], 'doc' => 'Region to connect to. See http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of available regions.'], 'version' => ['type' => 'value', 'valid' => ['string'], 'required' => [__CLASS__, '_missing_version'], 'doc' => 'The version of the webservice to utilize (e.g., 2006-03-01).'], 'signature_provider' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'A callable that accepts a signature version name (e.g., "v4"), a service name, and region, and returns a SignatureInterface object or null. This provider is used to create signers utilized by the client. See Aws\\Signature\\SignatureProvider for a list of built-in providers', 'default' => [__CLASS__, '_default_signature_provider']], 'api_provider' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'An optional PHP callable that accepts a type, service, and version argument, and returns an array of corresponding configuration data. The type value can be one of api, waiter, or paginator.', 'fn' => [__CLASS__, '_apply_api_provider'], 'default' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\ApiProvider::class, 'defaultProvider']], 'endpoint_provider' => ['type' => 'value', 'valid' => ['callable'], 'fn' => [__CLASS__, '_apply_endpoint_provider'], 'doc' => 'An optional PHP callable that accepts a hash of options including a "service" and "region" key and returns NULL or a hash of endpoint data, of which the "endpoint" key is required. See Aws\\Endpoint\\EndpointProvider for a list of built-in providers.', 'default' => [__CLASS__, '_default_endpoint_provider']], 'serializer' => ['default' => [__CLASS__, '_default_serializer'], 'fn' => [__CLASS__, '_apply_serializer'], 'internal' => true, 'type' => 'value', 'valid' => ['callable']], 'signature_version' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom signature version to use with a service (e.g., v4). Note that per/operation signature version MAY override this requested signature version.', 'default' => [__CLASS__, '_default_signature_version']], 'signing_name' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom service name to be used when calculating a request signature.', 'default' => [__CLASS__, '_default_signing_name']], 'signing_region' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom region name to be used when calculating a request signature.', 'default' => [__CLASS__, '_default_signing_region']], 'profile' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'Allows you to specify which profile to use when credentials are created from the AWS credentials file in your HOME directory. This setting overrides the AWS_PROFILE environment variable. Note: Specifying "profile" will cause the "credentials" key to be ignored.', 'fn' => [__CLASS__, '_apply_profile']], 'credentials' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\CredentialsInterface::class, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface::class, 'array', 'bool', 'callable'], 'doc' => 'Specifies the credentials used to sign requests. Provide an Aws\\Credentials\\CredentialsInterface object, an associative array of "key", "secret", and an optional "token" key, `false` to use null credentials, or a callable credentials provider used to create credentials or return null. See Aws\\Credentials\\CredentialProvider for a list of built-in credentials providers. If no credentials are provided, the SDK will attempt to load them from the environment.', 'fn' => [__CLASS__, '_apply_credentials'], 'default' => [__CLASS__, '_default_credential_provider']], 'endpoint_discovery' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationInterface::class, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface::class, 'array', 'callable'], 'doc' => 'Specifies settings for endpoint discovery. Provide an instance of Aws\\EndpointDiscovery\\ConfigurationInterface, an instance Aws\\CacheInterface, a callable that provides a promise for a Configuration object, or an associative array with the following keys: enabled: (bool) Set to true to enable endpoint discovery. Defaults to false; cache_limit: (int) The maximum number of keys in the endpoints cache. Defaults to 1000.', 'fn' => [__CLASS__, '_apply_endpoint_discovery'], 'default' => [__CLASS__, '_default_endpoint_discovery_provider']], 'stats' => ['type' => 'value', 'valid' => ['bool', 'array'], 'default' => false, 'doc' => 'Set to true to gather transfer statistics on requests sent. Alternatively, you can provide an associative array with the following keys: retries: (bool) Set to false to disable reporting on retries attempted; http: (bool) Set to true to enable collecting statistics from lower level HTTP adapters (e.g., values returned in GuzzleHttp\\TransferStats). HTTP handlers must support an http_stats_receiver option for this to have an effect; timer: (bool) Set to true to enable a command timer that reports the total wall clock time spent on an operation in seconds.', 'fn' => [__CLASS__, '_apply_stats']], 'retries' => ['type' => 'value', 'valid' => ['int'], 'doc' => 'Configures the maximum number of allowed retries for a client (pass 0 to disable retries). ', 'fn' => [__CLASS__, '_apply_retries'], 'default' => 3], 'validate' => ['type' => 'value', 'valid' => ['bool', 'array'], 'default' => true, 'doc' => 'Set to false to disable client-side parameter validation. Set to true to utilize default validation constraints. Set to an associative array of validation options to enable specific validation constraints.', 'fn' => [__CLASS__, '_apply_validate']], 'debug' => ['type' => 'value', 'valid' => ['bool', 'array'], 'doc' => 'Set to true to display debug information when sending requests. Alternatively, you can provide an associative array with the following keys: logfn: (callable) Function that is invoked with log messages; stream_size: (int) When the size of a stream is greater than this number, the stream data will not be logged (set to "0" to not log any stream data); scrub_auth: (bool) Set to false to disable the scrubbing of auth data from the logged messages; http: (bool) Set to false to disable the "debug" feature of lower level HTTP adapters (e.g., verbose curl output).', 'fn' => [__CLASS__, '_apply_debug']], 'csm' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\ClientSideMonitoring\ConfigurationInterface::class, 'callable', 'array', 'bool'], 'doc' => 'CSM options for the client. Provides a callable wrapping a promise, a boolean "false", an instance of ConfigurationInterface, or an associative array of "enabled", "host", "port", and "client_id".', 'fn' => [__CLASS__, '_apply_csm'], 'default' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\ClientSideMonitoring\ConfigurationProvider::class, 'defaultProvider']], 'http' => ['type' => 'value', 'valid' => ['array'], 'default' => [], 'doc' => 'Set to an array of SDK request options to apply to each request (e.g., proxy, verify, etc.).'], 'http_handler' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'An HTTP handler is a function that accepts a PSR-7 request object and returns a promise that is fulfilled with a PSR-7 response object or rejected with an array of exception data. NOTE: This option supersedes any provided "handler" option.', 'fn' => [__CLASS__, '_apply_http_handler']], 'handler' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'A handler that accepts a command object, request object and returns a promise that is fulfilled with an Aws\\ResultInterface object or rejected with an Aws\\Exception\\AwsException. A handler does not accept a next handler as it is terminal and expected to fulfill a command. If no handler is provided, a default Guzzle handler will be utilized.', 'fn' => [__CLASS__, '_apply_handler'], 'default' => [__CLASS__, '_default_handler']], 'ua_append' => ['type' => 'value', 'valid' => ['string', 'array'], 'doc' => 'Provide a string or array of strings to send in the User-Agent header.', 'fn' => [__CLASS__, '_apply_user_agent'], 'default' => []], 'idempotency_auto_fill' => ['type' => 'value', 'valid' => ['bool', 'callable'], 'doc' => 'Set to false to disable SDK to populate parameters that enabled \'idempotencyToken\' trait with a random UUID v4 value on your behalf. Using default value \'true\' still allows parameter value to be overwritten when provided. Note: auto-fill only works when cryptographically secure random bytes generator functions(random_bytes, openssl_random_pseudo_bytes or mcrypt_create_iv) can be found. You may also provide a callable source of random bytes.', 'default' => true, 'fn' => [__CLASS__, '_apply_idempotency_auto_fill']]];
|
32 |
/**
|
33 |
* Gets an array of default client arguments, each argument containing a
|
34 |
* hash of the following:
|
@@ -187,9 +190,16 @@ class ClientResolver
|
|
187 |
}
|
188 |
public static function _apply_retries($value, array &$args, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList $list)
|
189 |
{
|
|
|
190 |
if ($value) {
|
191 |
-
$
|
192 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
}
|
194 |
}
|
195 |
public static function _apply_credentials($value, array &$args)
|
@@ -237,6 +247,11 @@ class ClientResolver
|
|
237 |
{
|
238 |
if (!isset($args['endpoint'])) {
|
239 |
$endpointPrefix = isset($args['api']['metadata']['endpointPrefix']) ? $args['api']['metadata']['endpointPrefix'] : $args['service'];
|
|
|
|
|
|
|
|
|
|
|
240 |
// Invoke the endpoint provider and throw if it does not resolve.
|
241 |
$result = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\EndpointProvider::resolve($value, ['service' => $endpointPrefix, 'region' => $args['region'], 'scheme' => $args['scheme'], 'options' => self::getEndpointProviderOptions($args)]);
|
242 |
$args['endpoint'] = $result['endpoint'];
|
@@ -437,4 +452,14 @@ EOT;
|
|
437 |
}
|
438 |
return $options;
|
439 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
}
|
14 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationInterface;
|
15 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationProvider;
|
16 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\EndpointDiscoveryMiddleware;
|
17 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\InvalidRegionException;
|
18 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface as RetryConfigInterface;
|
19 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationProvider as RetryConfigProvider;
|
20 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Signature\SignatureProvider;
|
21 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\EndpointProvider;
|
22 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\CredentialProvider;
|
31 |
private $argDefinitions;
|
32 |
/** @var array Map of types to a corresponding function */
|
33 |
private static $typeMap = ['resource' => 'is_resource', 'callable' => 'is_callable', 'int' => 'is_int', 'bool' => 'is_bool', 'string' => 'is_string', 'object' => 'is_object', 'array' => 'is_array'];
|
34 |
+
private static $defaultArgs = ['service' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'Name of the service to utilize. This value will be supplied by default when using one of the SDK clients (e.g., Aws\\S3\\S3Client).', 'required' => true, 'internal' => true], 'exception_class' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'Exception class to create when an error occurs.', 'default' => 'DeliciousBrains\\WP_Offload_Media\\Aws3\\Aws\\Exception\\AwsException', 'internal' => true], 'scheme' => ['type' => 'value', 'valid' => ['string'], 'default' => 'https', 'doc' => 'URI scheme to use when connecting connect. The SDK will utilize "https" endpoints (i.e., utilize SSL/TLS connections) by default. You can attempt to connect to a service over an unencrypted "http" endpoint by setting ``scheme`` to "http".'], 'disable_host_prefix_injection' => ['type' => 'value', 'valid' => ['bool'], 'doc' => 'Set to true to disable host prefix injection logic for services that use it. This disables the entire prefix injection, including the portions supplied by user-defined parameters. Setting this flag will have no effect on services that do not use host prefix injection.', 'default' => false], 'endpoint' => ['type' => 'value', 'valid' => ['string'], 'doc' => 'The full URI of the webservice. This is only required when connecting to a custom endpoint (e.g., a local version of S3).', 'fn' => [__CLASS__, '_apply_endpoint']], 'region' => ['type' => 'value', 'valid' => ['string'], 'required' => [__CLASS__, '_missing_region'], 'doc' => 'Region to connect to. See http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of available regions.'], 'version' => ['type' => 'value', 'valid' => ['string'], 'required' => [__CLASS__, '_missing_version'], 'doc' => 'The version of the webservice to utilize (e.g., 2006-03-01).'], 'signature_provider' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'A callable that accepts a signature version name (e.g., "v4"), a service name, and region, and returns a SignatureInterface object or null. This provider is used to create signers utilized by the client. See Aws\\Signature\\SignatureProvider for a list of built-in providers', 'default' => [__CLASS__, '_default_signature_provider']], 'api_provider' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'An optional PHP callable that accepts a type, service, and version argument, and returns an array of corresponding configuration data. The type value can be one of api, waiter, or paginator.', 'fn' => [__CLASS__, '_apply_api_provider'], 'default' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\ApiProvider::class, 'defaultProvider']], 'endpoint_provider' => ['type' => 'value', 'valid' => ['callable'], 'fn' => [__CLASS__, '_apply_endpoint_provider'], 'doc' => 'An optional PHP callable that accepts a hash of options including a "service" and "region" key and returns NULL or a hash of endpoint data, of which the "endpoint" key is required. See Aws\\Endpoint\\EndpointProvider for a list of built-in providers.', 'default' => [__CLASS__, '_default_endpoint_provider']], 'serializer' => ['default' => [__CLASS__, '_default_serializer'], 'fn' => [__CLASS__, '_apply_serializer'], 'internal' => true, 'type' => 'value', 'valid' => ['callable']], 'signature_version' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom signature version to use with a service (e.g., v4). Note that per/operation signature version MAY override this requested signature version.', 'default' => [__CLASS__, '_default_signature_version']], 'signing_name' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom service name to be used when calculating a request signature.', 'default' => [__CLASS__, '_default_signing_name']], 'signing_region' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'A string representing a custom region name to be used when calculating a request signature.', 'default' => [__CLASS__, '_default_signing_region']], 'profile' => ['type' => 'config', 'valid' => ['string'], 'doc' => 'Allows you to specify which profile to use when credentials are created from the AWS credentials file in your HOME directory. This setting overrides the AWS_PROFILE environment variable. Note: Specifying "profile" will cause the "credentials" key to be ignored.', 'fn' => [__CLASS__, '_apply_profile']], 'credentials' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\CredentialsInterface::class, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface::class, 'array', 'bool', 'callable'], 'doc' => 'Specifies the credentials used to sign requests. Provide an Aws\\Credentials\\CredentialsInterface object, an associative array of "key", "secret", and an optional "token" key, `false` to use null credentials, or a callable credentials provider used to create credentials or return null. See Aws\\Credentials\\CredentialProvider for a list of built-in credentials providers. If no credentials are provided, the SDK will attempt to load them from the environment.', 'fn' => [__CLASS__, '_apply_credentials'], 'default' => [__CLASS__, '_default_credential_provider']], 'endpoint_discovery' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationInterface::class, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface::class, 'array', 'callable'], 'doc' => 'Specifies settings for endpoint discovery. Provide an instance of Aws\\EndpointDiscovery\\ConfigurationInterface, an instance Aws\\CacheInterface, a callable that provides a promise for a Configuration object, or an associative array with the following keys: enabled: (bool) Set to true to enable endpoint discovery, false to explicitly disable it. Defaults to false; cache_limit: (int) The maximum number of keys in the endpoints cache. Defaults to 1000.', 'fn' => [__CLASS__, '_apply_endpoint_discovery'], 'default' => [__CLASS__, '_default_endpoint_discovery_provider']], 'stats' => ['type' => 'value', 'valid' => ['bool', 'array'], 'default' => false, 'doc' => 'Set to true to gather transfer statistics on requests sent. Alternatively, you can provide an associative array with the following keys: retries: (bool) Set to false to disable reporting on retries attempted; http: (bool) Set to true to enable collecting statistics from lower level HTTP adapters (e.g., values returned in GuzzleHttp\\TransferStats). HTTP handlers must support an http_stats_receiver option for this to have an effect; timer: (bool) Set to true to enable a command timer that reports the total wall clock time spent on an operation in seconds.', 'fn' => [__CLASS__, '_apply_stats']], 'retries' => ['type' => 'value', 'valid' => ['int', \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface::class, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface::class, 'callable', 'array'], 'doc' => "Configures the retry mode and maximum number of allowed retries for a client (pass 0 to disable retries). Provide an integer for 'legacy' mode with the specified number of retries. Otherwise provide an instance of Aws\\Retry\\ConfigurationInterface, an instance of Aws\\CacheInterface, a callable function, or an array with the following keys: mode: (string) Set to 'legacy', 'standard' (uses retry quota management), or 'adapative' (an experimental mode that adds client-side rate limiting to standard mode); max_attempts: (int) The maximum number of attempts for a given request. ", 'fn' => [__CLASS__, '_apply_retries'], 'default' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationProvider::class, 'defaultProvider']], 'validate' => ['type' => 'value', 'valid' => ['bool', 'array'], 'default' => true, 'doc' => 'Set to false to disable client-side parameter validation. Set to true to utilize default validation constraints. Set to an associative array of validation options to enable specific validation constraints.', 'fn' => [__CLASS__, '_apply_validate']], 'debug' => ['type' => 'value', 'valid' => ['bool', 'array'], 'doc' => 'Set to true to display debug information when sending requests. Alternatively, you can provide an associative array with the following keys: logfn: (callable) Function that is invoked with log messages; stream_size: (int) When the size of a stream is greater than this number, the stream data will not be logged (set to "0" to not log any stream data); scrub_auth: (bool) Set to false to disable the scrubbing of auth data from the logged messages; http: (bool) Set to false to disable the "debug" feature of lower level HTTP adapters (e.g., verbose curl output).', 'fn' => [__CLASS__, '_apply_debug']], 'csm' => ['type' => 'value', 'valid' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\ClientSideMonitoring\ConfigurationInterface::class, 'callable', 'array', 'bool'], 'doc' => 'CSM options for the client. Provides a callable wrapping a promise, a boolean "false", an instance of ConfigurationInterface, or an associative array of "enabled", "host", "port", and "client_id".', 'fn' => [__CLASS__, '_apply_csm'], 'default' => [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\ClientSideMonitoring\ConfigurationProvider::class, 'defaultProvider']], 'http' => ['type' => 'value', 'valid' => ['array'], 'default' => [], 'doc' => 'Set to an array of SDK request options to apply to each request (e.g., proxy, verify, etc.).'], 'http_handler' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'An HTTP handler is a function that accepts a PSR-7 request object and returns a promise that is fulfilled with a PSR-7 response object or rejected with an array of exception data. NOTE: This option supersedes any provided "handler" option.', 'fn' => [__CLASS__, '_apply_http_handler']], 'handler' => ['type' => 'value', 'valid' => ['callable'], 'doc' => 'A handler that accepts a command object, request object and returns a promise that is fulfilled with an Aws\\ResultInterface object or rejected with an Aws\\Exception\\AwsException. A handler does not accept a next handler as it is terminal and expected to fulfill a command. If no handler is provided, a default Guzzle handler will be utilized.', 'fn' => [__CLASS__, '_apply_handler'], 'default' => [__CLASS__, '_default_handler']], 'ua_append' => ['type' => 'value', 'valid' => ['string', 'array'], 'doc' => 'Provide a string or array of strings to send in the User-Agent header.', 'fn' => [__CLASS__, '_apply_user_agent'], 'default' => []], 'idempotency_auto_fill' => ['type' => 'value', 'valid' => ['bool', 'callable'], 'doc' => 'Set to false to disable SDK to populate parameters that enabled \'idempotencyToken\' trait with a random UUID v4 value on your behalf. Using default value \'true\' still allows parameter value to be overwritten when provided. Note: auto-fill only works when cryptographically secure random bytes generator functions(random_bytes, openssl_random_pseudo_bytes or mcrypt_create_iv) can be found. You may also provide a callable source of random bytes.', 'default' => true, 'fn' => [__CLASS__, '_apply_idempotency_auto_fill']], 'use_aws_shared_config_files' => ['type' => 'value', 'valid' => ['bool'], 'doc' => 'Set to false to disable checking for shared aws config files usually located in \'~/.aws/config\' and \'~/.aws/credentials\'.', 'default' => true]];
|
35 |
/**
|
36 |
* Gets an array of default client arguments, each argument containing a
|
37 |
* hash of the following:
|
190 |
}
|
191 |
public static function _apply_retries($value, array &$args, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList $list)
|
192 |
{
|
193 |
+
// A value of 0 for the config option disables retries
|
194 |
if ($value) {
|
195 |
+
$config = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationProvider::unwrap($value);
|
196 |
+
if ($config->getMode() === 'legacy') {
|
197 |
+
// # of retries is 1 less than # of attempts
|
198 |
+
$decider = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware::createDefaultDecider($config->getMaxAttempts() - 1);
|
199 |
+
$list->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::retry($decider, null, $args['stats']['retries']), 'retry');
|
200 |
+
} else {
|
201 |
+
$list->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddlewareV2::wrap($config, ['collect_stats' => $args['stats']['retries']]), 'retry');
|
202 |
+
}
|
203 |
}
|
204 |
}
|
205 |
public static function _apply_credentials($value, array &$args)
|
247 |
{
|
248 |
if (!isset($args['endpoint'])) {
|
249 |
$endpointPrefix = isset($args['api']['metadata']['endpointPrefix']) ? $args['api']['metadata']['endpointPrefix'] : $args['service'];
|
250 |
+
// Check region is a valid host label when it is being used to
|
251 |
+
// generate an endpoint
|
252 |
+
if (!self::isValidRegion($args['region'])) {
|
253 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\InvalidRegionException('Region must be a valid RFC' . ' host label.');
|
254 |
+
}
|
255 |
// Invoke the endpoint provider and throw if it does not resolve.
|
256 |
$result = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\EndpointProvider::resolve($value, ['service' => $endpointPrefix, 'region' => $args['region'], 'scheme' => $args['scheme'], 'options' => self::getEndpointProviderOptions($args)]);
|
257 |
$args['endpoint'] = $result['endpoint'];
|
452 |
}
|
453 |
return $options;
|
454 |
}
|
455 |
+
/**
|
456 |
+
* Validates a region to be used for endpoint construction
|
457 |
+
*
|
458 |
+
* @param $region
|
459 |
+
* @return bool
|
460 |
+
*/
|
461 |
+
private static function isValidRegion($region)
|
462 |
+
{
|
463 |
+
return is_valid_hostlabel($region);
|
464 |
+
}
|
465 |
}
|
@@ -73,7 +73,11 @@ class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\A
|
|
73 |
*/
|
74 |
public static function defaultProvider(array $config = [])
|
75 |
{
|
76 |
-
$configProviders = [self::env()
|
|
|
|
|
|
|
|
|
77 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
78 |
if (isset($config['csm']) && $config['csm'] instanceof CacheInterface) {
|
79 |
return self::cache($memo, $config['csm'], self::$cacheKey);
|
73 |
*/
|
74 |
public static function defaultProvider(array $config = [])
|
75 |
{
|
76 |
+
$configProviders = [self::env()];
|
77 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
78 |
+
$configProviders[] = self::ini();
|
79 |
+
}
|
80 |
+
$configProviders[] = self::fallback();
|
81 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
82 |
if (isset($config['csm']) && $config['csm'] instanceof CacheInterface) {
|
83 |
return self::cache($memo, $config['csm'], self::$cacheKey);
|
@@ -50,54 +50,82 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient;
|
|
50 |
* @method \GuzzleHttp\Promise\Promise updateDistributionAsync(array $args = [])
|
51 |
* @method \Aws\Result updateStreamingDistribution(array $args = [])
|
52 |
* @method \GuzzleHttp\Promise\Promise updateStreamingDistributionAsync(array $args = [])
|
53 |
-
* @method \Aws\Result createDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
54 |
-
* @method \GuzzleHttp\Promise\Promise createDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
55 |
-
* @method \Aws\Result createStreamingDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
56 |
-
* @method \GuzzleHttp\Promise\Promise createStreamingDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
57 |
-
* @method \Aws\Result listTagsForResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
58 |
-
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
59 |
-
* @method \Aws\Result tagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
60 |
-
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
61 |
-
* @method \Aws\Result untagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
62 |
-
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
63 |
* @method \Aws\Result deleteServiceLinkedRole(array $args = []) (supported in versions 2017-03-25)
|
64 |
* @method \GuzzleHttp\Promise\Promise deleteServiceLinkedRoleAsync(array $args = []) (supported in versions 2017-03-25)
|
65 |
-
* @method \Aws\Result createFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
66 |
-
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
67 |
-
* @method \Aws\Result createFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
68 |
-
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
69 |
-
* @method \Aws\Result createPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
70 |
-
* @method \GuzzleHttp\Promise\Promise createPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
71 |
-
* @method \Aws\Result deleteFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
72 |
-
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
73 |
-
* @method \Aws\Result deleteFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
74 |
-
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
75 |
-
* @method \Aws\Result deletePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
76 |
-
* @method \GuzzleHttp\Promise\Promise deletePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
77 |
-
* @method \Aws\Result getFieldLevelEncryption(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
78 |
-
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
79 |
-
* @method \Aws\Result getFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
80 |
-
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
81 |
-
* @method \Aws\Result getFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
82 |
-
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
83 |
-
* @method \Aws\Result getFieldLevelEncryptionProfileConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
84 |
-
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
85 |
-
* @method \Aws\Result getPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
86 |
-
* @method \GuzzleHttp\Promise\Promise getPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
87 |
-
* @method \Aws\Result getPublicKeyConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
88 |
-
* @method \GuzzleHttp\Promise\Promise getPublicKeyConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
89 |
-
* @method \Aws\Result listFieldLevelEncryptionConfigs(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
90 |
-
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionConfigsAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
91 |
-
* @method \Aws\Result listFieldLevelEncryptionProfiles(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
92 |
-
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionProfilesAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
93 |
-
* @method \Aws\Result listPublicKeys(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
94 |
-
* @method \GuzzleHttp\Promise\Promise listPublicKeysAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
95 |
-
* @method \Aws\Result updateFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
96 |
-
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
97 |
-
* @method \Aws\Result updateFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
98 |
-
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
99 |
-
* @method \Aws\Result updatePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
100 |
-
* @method \GuzzleHttp\Promise\Promise updatePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
*/
|
102 |
class CloudFrontClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient
|
103 |
{
|
50 |
* @method \GuzzleHttp\Promise\Promise updateDistributionAsync(array $args = [])
|
51 |
* @method \Aws\Result updateStreamingDistribution(array $args = [])
|
52 |
* @method \GuzzleHttp\Promise\Promise updateStreamingDistributionAsync(array $args = [])
|
53 |
+
* @method \Aws\Result createDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
54 |
+
* @method \GuzzleHttp\Promise\Promise createDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
55 |
+
* @method \Aws\Result createStreamingDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
56 |
+
* @method \GuzzleHttp\Promise\Promise createStreamingDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
57 |
+
* @method \Aws\Result listTagsForResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
58 |
+
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
59 |
+
* @method \Aws\Result tagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
60 |
+
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
61 |
+
* @method \Aws\Result untagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
62 |
+
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
63 |
* @method \Aws\Result deleteServiceLinkedRole(array $args = []) (supported in versions 2017-03-25)
|
64 |
* @method \GuzzleHttp\Promise\Promise deleteServiceLinkedRoleAsync(array $args = []) (supported in versions 2017-03-25)
|
65 |
+
* @method \Aws\Result createFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
66 |
+
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
67 |
+
* @method \Aws\Result createFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
68 |
+
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
69 |
+
* @method \Aws\Result createPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
70 |
+
* @method \GuzzleHttp\Promise\Promise createPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
71 |
+
* @method \Aws\Result deleteFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
72 |
+
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
73 |
+
* @method \Aws\Result deleteFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
74 |
+
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
75 |
+
* @method \Aws\Result deletePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
76 |
+
* @method \GuzzleHttp\Promise\Promise deletePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
77 |
+
* @method \Aws\Result getFieldLevelEncryption(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
78 |
+
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
79 |
+
* @method \Aws\Result getFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
80 |
+
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
81 |
+
* @method \Aws\Result getFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
82 |
+
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
83 |
+
* @method \Aws\Result getFieldLevelEncryptionProfileConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
84 |
+
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
85 |
+
* @method \Aws\Result getPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
86 |
+
* @method \GuzzleHttp\Promise\Promise getPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
87 |
+
* @method \Aws\Result getPublicKeyConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
88 |
+
* @method \GuzzleHttp\Promise\Promise getPublicKeyConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
89 |
+
* @method \Aws\Result listFieldLevelEncryptionConfigs(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
90 |
+
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionConfigsAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
91 |
+
* @method \Aws\Result listFieldLevelEncryptionProfiles(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
92 |
+
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionProfilesAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
93 |
+
* @method \Aws\Result listPublicKeys(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
94 |
+
* @method \GuzzleHttp\Promise\Promise listPublicKeysAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
95 |
+
* @method \Aws\Result updateFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
96 |
+
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
97 |
+
* @method \Aws\Result updateFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
98 |
+
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
99 |
+
* @method \Aws\Result updatePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
100 |
+
* @method \GuzzleHttp\Promise\Promise updatePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05, 2019-03-26, 2020-05-31)
|
101 |
+
* @method \Aws\Result createCachePolicy(array $args = []) (supported in versions 2020-05-31)
|
102 |
+
* @method \GuzzleHttp\Promise\Promise createCachePolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
103 |
+
* @method \Aws\Result createOriginRequestPolicy(array $args = []) (supported in versions 2020-05-31)
|
104 |
+
* @method \GuzzleHttp\Promise\Promise createOriginRequestPolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
105 |
+
* @method \Aws\Result deleteCachePolicy(array $args = []) (supported in versions 2020-05-31)
|
106 |
+
* @method \GuzzleHttp\Promise\Promise deleteCachePolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
107 |
+
* @method \Aws\Result deleteOriginRequestPolicy(array $args = []) (supported in versions 2020-05-31)
|
108 |
+
* @method \GuzzleHttp\Promise\Promise deleteOriginRequestPolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
109 |
+
* @method \Aws\Result getCachePolicy(array $args = []) (supported in versions 2020-05-31)
|
110 |
+
* @method \GuzzleHttp\Promise\Promise getCachePolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
111 |
+
* @method \Aws\Result getCachePolicyConfig(array $args = []) (supported in versions 2020-05-31)
|
112 |
+
* @method \GuzzleHttp\Promise\Promise getCachePolicyConfigAsync(array $args = []) (supported in versions 2020-05-31)
|
113 |
+
* @method \Aws\Result getOriginRequestPolicy(array $args = []) (supported in versions 2020-05-31)
|
114 |
+
* @method \GuzzleHttp\Promise\Promise getOriginRequestPolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
115 |
+
* @method \Aws\Result getOriginRequestPolicyConfig(array $args = []) (supported in versions 2020-05-31)
|
116 |
+
* @method \GuzzleHttp\Promise\Promise getOriginRequestPolicyConfigAsync(array $args = []) (supported in versions 2020-05-31)
|
117 |
+
* @method \Aws\Result listCachePolicies(array $args = []) (supported in versions 2020-05-31)
|
118 |
+
* @method \GuzzleHttp\Promise\Promise listCachePoliciesAsync(array $args = []) (supported in versions 2020-05-31)
|
119 |
+
* @method \Aws\Result listDistributionsByCachePolicyId(array $args = []) (supported in versions 2020-05-31)
|
120 |
+
* @method \GuzzleHttp\Promise\Promise listDistributionsByCachePolicyIdAsync(array $args = []) (supported in versions 2020-05-31)
|
121 |
+
* @method \Aws\Result listDistributionsByOriginRequestPolicyId(array $args = []) (supported in versions 2020-05-31)
|
122 |
+
* @method \GuzzleHttp\Promise\Promise listDistributionsByOriginRequestPolicyIdAsync(array $args = []) (supported in versions 2020-05-31)
|
123 |
+
* @method \Aws\Result listOriginRequestPolicies(array $args = []) (supported in versions 2020-05-31)
|
124 |
+
* @method \GuzzleHttp\Promise\Promise listOriginRequestPoliciesAsync(array $args = []) (supported in versions 2020-05-31)
|
125 |
+
* @method \Aws\Result updateCachePolicy(array $args = []) (supported in versions 2020-05-31)
|
126 |
+
* @method \GuzzleHttp\Promise\Promise updateCachePolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
127 |
+
* @method \Aws\Result updateOriginRequestPolicy(array $args = []) (supported in versions 2020-05-31)
|
128 |
+
* @method \GuzzleHttp\Promise\Promise updateOriginRequestPolicyAsync(array $args = []) (supported in versions 2020-05-31)
|
129 |
*/
|
130 |
class CloudFrontClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient
|
131 |
{
|
@@ -72,7 +72,11 @@ class CredentialProvider
|
|
72 |
public static function defaultProvider(array $config = [])
|
73 |
{
|
74 |
$cacheable = ['web_identity', 'ecs', 'process_credentials', 'process_config', 'instance'];
|
75 |
-
$defaultChain = ['env' => self::env(), 'web_identity' => self::assumeRoleWithWebIdentityCredentialProvider($config)
|
|
|
|
|
|
|
|
|
76 |
if (!empty(getenv(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\EcsCredentialProvider::ENV_URI))) {
|
77 |
$defaultChain['ecs'] = self::ecsCredentials($config);
|
78 |
}
|
72 |
public static function defaultProvider(array $config = [])
|
73 |
{
|
74 |
$cacheable = ['web_identity', 'ecs', 'process_credentials', 'process_config', 'instance'];
|
75 |
+
$defaultChain = ['env' => self::env(), 'web_identity' => self::assumeRoleWithWebIdentityCredentialProvider($config)];
|
76 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] !== false) {
|
77 |
+
$defaultChain['ini'] = self::ini();
|
78 |
+
$defaultChain['ini_config'] = self::ini('profile default', self::getHomeDir() . '/.aws/config');
|
79 |
+
}
|
80 |
if (!empty(getenv(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\EcsCredentialProvider::ENV_URI))) {
|
81 |
$defaultChain['ecs'] = self::ecsCredentials($config);
|
82 |
}
|
@@ -6,11 +6,16 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherMethod;
|
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\Cbc;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream;
|
8 |
/**
|
|
|
|
|
|
|
|
|
9 |
* @internal
|
10 |
*/
|
11 |
abstract class AbstractCryptoClient
|
12 |
{
|
13 |
public static $supportedCiphers = ['cbc', 'gcm'];
|
|
|
14 |
/**
|
15 |
* Returns if the passed cipher name is supported for encryption by the SDK.
|
16 |
*
|
@@ -83,8 +88,8 @@ abstract class AbstractCryptoClient
|
|
83 |
*
|
84 |
* @param string $cipherText Plain-text data to be decrypted using the
|
85 |
* materials, algorithm, and data provided.
|
86 |
-
* @param
|
87 |
-
*
|
88 |
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
89 |
* metadata to be read from.
|
90 |
* @param array $cipherOptions Additional verification options.
|
@@ -93,5 +98,5 @@ abstract class AbstractCryptoClient
|
|
93 |
*
|
94 |
* @internal
|
95 |
*/
|
96 |
-
public abstract function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\
|
97 |
}
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\Cbc;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream;
|
8 |
/**
|
9 |
+
* Legacy abstract encryption client. New workflows should use
|
10 |
+
* AbstractCryptoClientV2.
|
11 |
+
*
|
12 |
+
* @deprecated
|
13 |
* @internal
|
14 |
*/
|
15 |
abstract class AbstractCryptoClient
|
16 |
{
|
17 |
public static $supportedCiphers = ['cbc', 'gcm'];
|
18 |
+
public static $supportedKeyWraps = [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\KmsMaterialsProvider::WRAP_ALGORITHM_NAME];
|
19 |
/**
|
20 |
* Returns if the passed cipher name is supported for encryption by the SDK.
|
21 |
*
|
88 |
*
|
89 |
* @param string $cipherText Plain-text data to be decrypted using the
|
90 |
* materials, algorithm, and data provided.
|
91 |
+
* @param MaterialsProviderInterface $provider A provider to supply and encrypt
|
92 |
+
* materials used in encryption.
|
93 |
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
94 |
* metadata to be read from.
|
95 |
* @param array $cipherOptions Additional verification options.
|
98 |
*
|
99 |
* @internal
|
100 |
*/
|
101 |
+
public abstract function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterface $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope, array $cipherOptions = []);
|
102 |
}
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherMethod;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream;
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
abstract class AbstractCryptoClientV2
|
11 |
+
{
|
12 |
+
public static $supportedCiphers = ['gcm'];
|
13 |
+
public static $supportedKeyWraps = [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\KmsMaterialsProviderV2::WRAP_ALGORITHM_NAME];
|
14 |
+
public static $supportedSecurityProfiles = ['V2', 'V2_AND_LEGACY'];
|
15 |
+
public static $legacySecurityProfiles = ['V2_AND_LEGACY'];
|
16 |
+
/**
|
17 |
+
* Returns if the passed cipher name is supported for encryption by the SDK.
|
18 |
+
*
|
19 |
+
* @param string $cipherName The name of a cipher to verify is registered.
|
20 |
+
*
|
21 |
+
* @return bool If the cipher passed is in our supported list.
|
22 |
+
*/
|
23 |
+
public static function isSupportedCipher($cipherName)
|
24 |
+
{
|
25 |
+
return in_array($cipherName, self::$supportedCiphers, true);
|
26 |
+
}
|
27 |
+
/**
|
28 |
+
* Returns an identifier recognizable by `openssl_*` functions, such as
|
29 |
+
* `aes-256-gcm`
|
30 |
+
*
|
31 |
+
* @param string $cipherName Name of the cipher being used for encrypting
|
32 |
+
* or decrypting.
|
33 |
+
* @param int $keySize Size of the encryption key, in bits, that will be
|
34 |
+
* used.
|
35 |
+
*
|
36 |
+
* @return string
|
37 |
+
*/
|
38 |
+
protected abstract function getCipherOpenSslName($cipherName, $keySize);
|
39 |
+
/**
|
40 |
+
* Constructs a CipherMethod for the given name, initialized with the other
|
41 |
+
* data passed for use in encrypting or decrypting.
|
42 |
+
*
|
43 |
+
* @param string $cipherName Name of the cipher to generate for encrypting.
|
44 |
+
* @param string $iv Base Initialization Vector for the cipher.
|
45 |
+
* @param int $keySize Size of the encryption key, in bits, that will be
|
46 |
+
* used.
|
47 |
+
*
|
48 |
+
* @return CipherMethod
|
49 |
+
*
|
50 |
+
* @internal
|
51 |
+
*/
|
52 |
+
protected abstract function buildCipherMethod($cipherName, $iv, $keySize);
|
53 |
+
/**
|
54 |
+
* Performs a reverse lookup to get the openssl_* cipher name from the
|
55 |
+
* AESName passed in from the MetadataEnvelope.
|
56 |
+
*
|
57 |
+
* @param $aesName
|
58 |
+
*
|
59 |
+
* @return string
|
60 |
+
*
|
61 |
+
* @internal
|
62 |
+
*/
|
63 |
+
protected abstract function getCipherFromAesName($aesName);
|
64 |
+
/**
|
65 |
+
* Dependency to provide an interface for building an encryption stream for
|
66 |
+
* data given cipher details, metadata, and materials to do so.
|
67 |
+
*
|
68 |
+
* @param Stream $plaintext Plain-text data to be encrypted using the
|
69 |
+
* materials, algorithm, and data provided.
|
70 |
+
* @param array $options Options for use in encryption.
|
71 |
+
* @param MaterialsProviderV2 $provider A provider to supply and encrypt
|
72 |
+
* materials used in encryption.
|
73 |
+
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
74 |
+
* metadata to be added to.
|
75 |
+
*
|
76 |
+
* @return AesStreamInterface
|
77 |
+
*
|
78 |
+
* @internal
|
79 |
+
*/
|
80 |
+
public abstract function encrypt(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream $plaintext, array $options, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderV2 $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope);
|
81 |
+
/**
|
82 |
+
* Dependency to provide an interface for building a decryption stream for
|
83 |
+
* cipher text given metadata and materials to do so.
|
84 |
+
*
|
85 |
+
* @param string $cipherText Plain-text data to be decrypted using the
|
86 |
+
* materials, algorithm, and data provided.
|
87 |
+
* @param MaterialsProviderInterface $provider A provider to supply and encrypt
|
88 |
+
* materials used in encryption.
|
89 |
+
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
90 |
+
* metadata to be read from.
|
91 |
+
* @param array $options Options used for decryption.
|
92 |
+
*
|
93 |
+
* @return AesStreamInterface
|
94 |
+
*
|
95 |
+
* @internal
|
96 |
+
*/
|
97 |
+
public abstract function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterfaceV2 $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope, array $options = []);
|
98 |
+
}
|
@@ -2,10 +2,12 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\StreamDecoratorTrait;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
8 |
-
use
|
|
|
9 |
/**
|
10 |
* @internal Represents a stream of data to be gcm decrypted.
|
11 |
*/
|
@@ -30,9 +32,6 @@ class AesGcmDecryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
30 |
*/
|
31 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $cipherText, $key, $initializationVector, $tag, $aad = '', $tagLength = 128, $keySize = 256)
|
32 |
{
|
33 |
-
if (version_compare(PHP_VERSION, '7.1', '<')) {
|
34 |
-
throw new \RuntimeException('AES-GCM decryption is only supported in PHP 7.1 or greater');
|
35 |
-
}
|
36 |
$this->cipherText = $cipherText;
|
37 |
$this->key = $key;
|
38 |
$this->initializationVector = $initializationVector;
|
@@ -55,7 +54,15 @@ class AesGcmDecryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
55 |
}
|
56 |
public function createStream()
|
57 |
{
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
public function isWritable()
|
61 |
{
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\StreamDecoratorTrait;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key;
|
11 |
/**
|
12 |
* @internal Represents a stream of data to be gcm decrypted.
|
13 |
*/
|
32 |
*/
|
33 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $cipherText, $key, $initializationVector, $tag, $aad = '', $tagLength = 128, $keySize = 256)
|
34 |
{
|
|
|
|
|
|
|
35 |
$this->cipherText = $cipherText;
|
36 |
$this->key = $key;
|
37 |
$this->initializationVector = $initializationVector;
|
54 |
}
|
55 |
public function createStream()
|
56 |
{
|
57 |
+
if (version_compare(PHP_VERSION, '7.1', '<')) {
|
58 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm::decrypt((string) $this->cipherText, $this->initializationVector, new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key($this->key), $this->aad, $this->tag, $this->keySize));
|
59 |
+
} else {
|
60 |
+
$result = \openssl_decrypt((string) $this->cipherText, $this->getOpenSslName(), $this->key, OPENSSL_RAW_DATA, $this->initializationVector, $this->tag, $this->aad);
|
61 |
+
if ($result === false) {
|
62 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException('The requested object could not be' . ' decrypted due to an invalid authentication tag.');
|
63 |
+
}
|
64 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($result);
|
65 |
+
}
|
66 |
}
|
67 |
public function isWritable()
|
68 |
{
|
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
|
|
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\StreamDecoratorTrait;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
@@ -9,7 +11,7 @@ use RuntimeException;
|
|
9 |
/**
|
10 |
* @internal Represents a stream of data to be gcm encrypted.
|
11 |
*/
|
12 |
-
class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesStreamInterface
|
13 |
{
|
14 |
use StreamDecoratorTrait;
|
15 |
private $aad;
|
@@ -19,6 +21,16 @@ class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
19 |
private $plaintext;
|
20 |
private $tag = '';
|
21 |
private $tagLength;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
/**
|
23 |
* @param StreamInterface $plaintext
|
24 |
* @param string $key
|
@@ -29,9 +41,6 @@ class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
29 |
*/
|
30 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $plaintext, $key, $initializationVector, $aad = '', $tagLength = 16, $keySize = 256)
|
31 |
{
|
32 |
-
if (version_compare(PHP_VERSION, '7.1', '<')) {
|
33 |
-
throw new \RuntimeException('AES-GCM decryption is only supported in PHP 7.1 or greater');
|
34 |
-
}
|
35 |
$this->plaintext = $plaintext;
|
36 |
$this->key = $key;
|
37 |
$this->initializationVector = $initializationVector;
|
@@ -43,9 +52,14 @@ class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
43 |
{
|
44 |
return "aes-{$this->keySize}-gcm";
|
45 |
}
|
|
|
|
|
|
|
|
|
|
|
46 |
public function getAesName()
|
47 |
{
|
48 |
-
return
|
49 |
}
|
50 |
public function getCurrentIv()
|
51 |
{
|
@@ -53,7 +67,11 @@ class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\A
|
|
53 |
}
|
54 |
public function createStream()
|
55 |
{
|
56 |
-
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
/**
|
59 |
* @return string
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\StreamDecoratorTrait;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
11 |
/**
|
12 |
* @internal Represents a stream of data to be gcm encrypted.
|
13 |
*/
|
14 |
+
class AesGcmEncryptingStream implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesStreamInterface, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesStreamInterfaceV2
|
15 |
{
|
16 |
use StreamDecoratorTrait;
|
17 |
private $aad;
|
21 |
private $plaintext;
|
22 |
private $tag = '';
|
23 |
private $tagLength;
|
24 |
+
/**
|
25 |
+
* Same as non-static 'getAesName' method, allowing calls in a static
|
26 |
+
* context.
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
public static function getStaticAesName()
|
31 |
+
{
|
32 |
+
return 'AES/GCM/NoPadding';
|
33 |
+
}
|
34 |
/**
|
35 |
* @param StreamInterface $plaintext
|
36 |
* @param string $key
|
41 |
*/
|
42 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $plaintext, $key, $initializationVector, $aad = '', $tagLength = 16, $keySize = 256)
|
43 |
{
|
|
|
|
|
|
|
44 |
$this->plaintext = $plaintext;
|
45 |
$this->key = $key;
|
46 |
$this->initializationVector = $initializationVector;
|
52 |
{
|
53 |
return "aes-{$this->keySize}-gcm";
|
54 |
}
|
55 |
+
/**
|
56 |
+
* Same as static method and retained for backwards compatibility
|
57 |
+
*
|
58 |
+
* @return string
|
59 |
+
*/
|
60 |
public function getAesName()
|
61 |
{
|
62 |
+
return self::getStaticAesName();
|
63 |
}
|
64 |
public function getCurrentIv()
|
65 |
{
|
67 |
}
|
68 |
public function createStream()
|
69 |
{
|
70 |
+
if (version_compare(PHP_VERSION, '7.1', '<')) {
|
71 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm::encrypt((string) $this->plaintext, $this->initializationVector, new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key($this->key), $this->aad, $this->tag, $this->keySize));
|
72 |
+
} else {
|
73 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for(\openssl_encrypt((string) $this->plaintext, $this->getOpenSslName(), $this->key, OPENSSL_RAW_DATA, $this->initializationVector, $this->tag, $this->aad, $this->tagLength));
|
74 |
+
}
|
75 |
}
|
76 |
/**
|
77 |
* @return string
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
6 |
+
interface AesStreamInterfaceV2 extends StreamInterface
|
7 |
+
{
|
8 |
+
/**
|
9 |
+
* Returns an AES recognizable name, such as 'AES/GCM/NoPadding'. V2
|
10 |
+
* interface is accessible from a static context.
|
11 |
+
*
|
12 |
+
* @return string
|
13 |
+
*/
|
14 |
+
public static function getStaticAesName();
|
15 |
+
/**
|
16 |
+
* Returns an identifier recognizable by `openssl_*` functions, such as
|
17 |
+
* `aes-256-cbc` or `aes-128-ctr`.
|
18 |
+
*
|
19 |
+
* @return string
|
20 |
+
*/
|
21 |
+
public function getOpenSslName();
|
22 |
+
/**
|
23 |
+
* Returns the IV that should be used to initialize the next block in
|
24 |
+
* encrypt or decrypt.
|
25 |
+
*
|
26 |
+
* @return string
|
27 |
+
*/
|
28 |
+
public function getCurrentIv();
|
29 |
+
}
|
@@ -7,6 +7,12 @@ use LogicException;
|
|
7 |
/**
|
8 |
* An implementation of the CBC cipher for use with an AesEncryptingStream or
|
9 |
* AesDecrypting stream.
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
*/
|
11 |
class Cbc implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherMethod
|
12 |
{
|
7 |
/**
|
8 |
* An implementation of the CBC cipher for use with an AesEncryptingStream or
|
9 |
* AesDecrypting stream.
|
10 |
+
*
|
11 |
+
* This cipher method is deprecated and in maintenance mode - no new updates will be
|
12 |
+
* released. Please see https://docs.aws.amazon.com/general/latest/gr/aws_sdk_cryptography.html
|
13 |
+
* for more information.
|
14 |
+
*
|
15 |
+
* @deprecated
|
16 |
*/
|
17 |
class Cbc implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherMethod
|
18 |
{
|
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher;
|
4 |
|
|
|
5 |
trait CipherBuilderTrait
|
6 |
{
|
7 |
/**
|
@@ -59,7 +60,7 @@ trait CipherBuilderTrait
|
|
59 |
case 'AES/CBC/PKCS5Padding':
|
60 |
return 'cbc';
|
61 |
default:
|
62 |
-
throw new \
|
63 |
}
|
64 |
}
|
65 |
}
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException;
|
6 |
trait CipherBuilderTrait
|
7 |
{
|
8 |
/**
|
60 |
case 'AES/CBC/PKCS5Padding':
|
61 |
return 'cbc';
|
62 |
default:
|
63 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException('Unrecognized or unsupported' . ' AESName for reverse lookup.');
|
64 |
}
|
65 |
}
|
66 |
}
|
@@ -34,12 +34,13 @@ trait DecryptionTrait
|
|
34 |
protected abstract function buildCipherMethod($cipherName, $iv, $keySize);
|
35 |
/**
|
36 |
* Builds an AesStreamInterface using cipher options loaded from the
|
37 |
-
* MetadataEnvelope and MaterialsProvider.
|
|
|
38 |
*
|
39 |
* @param string $cipherText Plain-text data to be encrypted using the
|
40 |
* materials, algorithm, and data provided.
|
41 |
-
* @param
|
42 |
-
*
|
43 |
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
44 |
* metadata to be read from.
|
45 |
* @param array $cipherOptions Additional verification options.
|
@@ -51,7 +52,7 @@ trait DecryptionTrait
|
|
51 |
*
|
52 |
* @internal
|
53 |
*/
|
54 |
-
public function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\
|
55 |
{
|
56 |
$cipherOptions['Iv'] = base64_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::IV_HEADER]);
|
57 |
$cipherOptions['TagLength'] = $envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] / 8;
|
34 |
protected abstract function buildCipherMethod($cipherName, $iv, $keySize);
|
35 |
/**
|
36 |
* Builds an AesStreamInterface using cipher options loaded from the
|
37 |
+
* MetadataEnvelope and MaterialsProvider. Can decrypt data from both the
|
38 |
+
* legacy and V2 encryption client workflows.
|
39 |
*
|
40 |
* @param string $cipherText Plain-text data to be encrypted using the
|
41 |
* materials, algorithm, and data provided.
|
42 |
+
* @param MaterialsProviderInterface $provider A provider to supply and encrypt
|
43 |
+
* materials used in encryption.
|
44 |
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
45 |
* metadata to be read from.
|
46 |
* @param array $cipherOptions Additional verification options.
|
52 |
*
|
53 |
* @internal
|
54 |
*/
|
55 |
+
public function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterface $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope, array $cipherOptions = [])
|
56 |
{
|
57 |
$cipherOptions['Iv'] = base64_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::IV_HEADER]);
|
58 |
$cipherOptions['TagLength'] = $envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] / 8;
|
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\LimitStream;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
9 |
+
trait DecryptionTraitV2
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* Dependency to reverse lookup the openssl_* cipher name from the AESName
|
13 |
+
* in the MetadataEnvelope.
|
14 |
+
*
|
15 |
+
* @param $aesName
|
16 |
+
*
|
17 |
+
* @return string
|
18 |
+
*
|
19 |
+
* @internal
|
20 |
+
*/
|
21 |
+
protected abstract function getCipherFromAesName($aesName);
|
22 |
+
/**
|
23 |
+
* Dependency to generate a CipherMethod from a set of inputs for loading
|
24 |
+
* in to an AesDecryptingStream.
|
25 |
+
*
|
26 |
+
* @param string $cipherName Name of the cipher to generate for decrypting.
|
27 |
+
* @param string $iv Base Initialization Vector for the cipher.
|
28 |
+
* @param int $keySize Size of the encryption key, in bits, that will be
|
29 |
+
* used.
|
30 |
+
*
|
31 |
+
* @return Cipher\CipherMethod
|
32 |
+
*
|
33 |
+
* @internal
|
34 |
+
*/
|
35 |
+
protected abstract function buildCipherMethod($cipherName, $iv, $keySize);
|
36 |
+
/**
|
37 |
+
* Builds an AesStreamInterface using cipher options loaded from the
|
38 |
+
* MetadataEnvelope and MaterialsProvider. Can decrypt data from both the
|
39 |
+
* legacy and V2 encryption client workflows.
|
40 |
+
*
|
41 |
+
* @param string $cipherText Plain-text data to be encrypted using the
|
42 |
+
* materials, algorithm, and data provided.
|
43 |
+
* @param MaterialsProviderInterfaceV2 $provider A provider to supply and encrypt
|
44 |
+
* materials used in encryption.
|
45 |
+
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
46 |
+
* metadata to be read from.
|
47 |
+
* @param array $options Options used for decryption.
|
48 |
+
*
|
49 |
+
* @return AesStreamInterface
|
50 |
+
*
|
51 |
+
* @throws \InvalidArgumentException Thrown when a value in $cipherOptions
|
52 |
+
* is not valid.
|
53 |
+
*
|
54 |
+
* @internal
|
55 |
+
*/
|
56 |
+
public function decrypt($cipherText, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterfaceV2 $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope, array $options = [])
|
57 |
+
{
|
58 |
+
$options['@CipherOptions'] = !empty($options['@CipherOptions']) ? $options['@CipherOptions'] : [];
|
59 |
+
$options['@CipherOptions']['Iv'] = base64_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::IV_HEADER]);
|
60 |
+
$options['@CipherOptions']['TagLength'] = $envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] / 8;
|
61 |
+
$cek = $provider->decryptCek(base64_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_KEY_V2_HEADER]), json_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER], true), $options);
|
62 |
+
$options['@CipherOptions']['KeySize'] = strlen($cek) * 8;
|
63 |
+
$options['@CipherOptions']['Cipher'] = $this->getCipherFromAesName($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER]);
|
64 |
+
$this->validateOptionsAndEnvelope($options, $envelope);
|
65 |
+
$decryptionSteam = $this->getDecryptingStream($cipherText, $cek, $options['@CipherOptions']);
|
66 |
+
unset($cek);
|
67 |
+
return $decryptionSteam;
|
68 |
+
}
|
69 |
+
private function getTagFromCiphertextStream(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $cipherText, $tagLength)
|
70 |
+
{
|
71 |
+
$cipherTextSize = $cipherText->getSize();
|
72 |
+
if ($cipherTextSize == null || $cipherTextSize <= 0) {
|
73 |
+
throw new \RuntimeException('Cannot decrypt a stream of unknown' . ' size.');
|
74 |
+
}
|
75 |
+
return (string) new \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\LimitStream($cipherText, $tagLength, $cipherTextSize - $tagLength);
|
76 |
+
}
|
77 |
+
private function getStrippedCiphertextStream(\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface $cipherText, $tagLength)
|
78 |
+
{
|
79 |
+
$cipherTextSize = $cipherText->getSize();
|
80 |
+
if ($cipherTextSize == null || $cipherTextSize <= 0) {
|
81 |
+
throw new \RuntimeException('Cannot decrypt a stream of unknown' . ' size.');
|
82 |
+
}
|
83 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\LimitStream($cipherText, $cipherTextSize - $tagLength, 0);
|
84 |
+
}
|
85 |
+
private function validateOptionsAndEnvelope($options, $envelope)
|
86 |
+
{
|
87 |
+
$allowedCiphers = AbstractCryptoClientV2::$supportedCiphers;
|
88 |
+
$allowedKeywraps = AbstractCryptoClientV2::$supportedKeyWraps;
|
89 |
+
if ($options['@SecurityProfile'] == 'V2_AND_LEGACY') {
|
90 |
+
$allowedCiphers = array_unique(array_merge($allowedCiphers, AbstractCryptoClient::$supportedCiphers));
|
91 |
+
$allowedKeywraps = array_unique(array_merge($allowedKeywraps, AbstractCryptoClient::$supportedKeyWraps));
|
92 |
+
}
|
93 |
+
$v1SchemaException = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("The requested object is encrypted" . " with V1 encryption schemas that have been disabled by" . " client configuration @SecurityProfile=V2. Retry with" . " V2_AND_LEGACY enabled or reencrypt the object.");
|
94 |
+
if (!in_array($options['@CipherOptions']['Cipher'], $allowedCiphers)) {
|
95 |
+
if (in_array($options['@CipherOptions']['Cipher'], AbstractCryptoClient::$supportedCiphers)) {
|
96 |
+
throw $v1SchemaException;
|
97 |
+
}
|
98 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("The requested object is encrypted with" . " the cipher '{$options['@CipherOptions']['Cipher']}', which is not" . " supported for decryption with the selected security profile." . " This profile allows decryption with: " . implode(", ", $allowedCiphers));
|
99 |
+
}
|
100 |
+
if (!in_array($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER], $allowedKeywraps)) {
|
101 |
+
if (in_array($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER], AbstractCryptoClient::$supportedKeyWraps)) {
|
102 |
+
throw $v1SchemaException;
|
103 |
+
}
|
104 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("The requested object is encrypted with" . " the keywrap schema '{$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER]}'," . " which is not supported for decryption with the current security" . " profile.");
|
105 |
+
}
|
106 |
+
$matdesc = json_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER], true);
|
107 |
+
if (isset($matdesc['aws:x-amz-cek-alg']) && $envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER] !== $matdesc['aws:x-amz-cek-alg']) {
|
108 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("There is a mismatch in specified content" . " encryption algrithm between the materials description value" . " and the metadata envelope value: {$matdesc['aws:x-amz-cek-alg']}" . " vs. {$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER]}.");
|
109 |
+
}
|
110 |
+
}
|
111 |
+
/**
|
112 |
+
* Generates a stream that wraps the cipher text with the proper cipher and
|
113 |
+
* uses the content encryption key (CEK) to decrypt the data when read.
|
114 |
+
*
|
115 |
+
* @param string $cipherText Plain-text data to be encrypted using the
|
116 |
+
* materials, algorithm, and data provided.
|
117 |
+
* @param string $cek A content encryption key for use by the stream for
|
118 |
+
* encrypting the plaintext data.
|
119 |
+
* @param array $cipherOptions Options for use in determining the cipher to
|
120 |
+
* be used for encrypting data.
|
121 |
+
*
|
122 |
+
* @return AesStreamInterface
|
123 |
+
*
|
124 |
+
* @internal
|
125 |
+
*/
|
126 |
+
protected function getDecryptingStream($cipherText, $cek, $cipherOptions)
|
127 |
+
{
|
128 |
+
$cipherTextStream = \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($cipherText);
|
129 |
+
switch ($cipherOptions['Cipher']) {
|
130 |
+
case 'gcm':
|
131 |
+
$cipherOptions['Tag'] = $this->getTagFromCiphertextStream($cipherTextStream, $cipherOptions['TagLength']);
|
132 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesGcmDecryptingStream($this->getStrippedCiphertextStream($cipherTextStream, $cipherOptions['TagLength']), $cek, $cipherOptions['Iv'], $cipherOptions['Tag'], $cipherOptions['Aad'] = isset($cipherOptions['Aad']) ? $cipherOptions['Aad'] : null, $cipherOptions['TagLength'] ?: null, $cipherOptions['KeySize']);
|
133 |
+
default:
|
134 |
+
$cipherMethod = $this->buildCipherMethod($cipherOptions['Cipher'], $cipherOptions['Iv'], $cipherOptions['KeySize']);
|
135 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesDecryptingStream($cipherTextStream, $cek, $cipherMethod);
|
136 |
+
}
|
137 |
+
}
|
138 |
+
}
|
@@ -71,7 +71,6 @@ trait EncryptionTrait
|
|
71 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER] = $provider->getWrapAlgorithmName();
|
72 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER] = $aesName;
|
73 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::UNENCRYPTED_CONTENT_LENGTH_HEADER] = strlen($plaintext);
|
74 |
-
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::UNENCRYPTED_CONTENT_MD5_HEADER] = base64_encode(md5($plaintext));
|
75 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER] = json_encode($materialsDescription);
|
76 |
if (!empty($cipherOptions['Tag'])) {
|
77 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] = strlen($cipherOptions['Tag']) * 8;
|
@@ -99,6 +98,9 @@ trait EncryptionTrait
|
|
99 |
case 'gcm':
|
100 |
$cipherOptions['TagLength'] = 16;
|
101 |
$cipherTextStream = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesGcmEncryptingStream($plaintext, $cek, $cipherOptions['Iv'], $cipherOptions['Aad'] = isset($cipherOptions['Aad']) ? $cipherOptions['Aad'] : null, $cipherOptions['TagLength'], $cipherOptions['KeySize']);
|
|
|
|
|
|
|
102 |
$appendStream = new \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\AppendStream([$cipherTextStream->createStream()]);
|
103 |
$cipherOptions['Tag'] = $cipherTextStream->getTag();
|
104 |
$appendStream->addStream(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($cipherOptions['Tag']));
|
71 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER] = $provider->getWrapAlgorithmName();
|
72 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER] = $aesName;
|
73 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::UNENCRYPTED_CONTENT_LENGTH_HEADER] = strlen($plaintext);
|
|
|
74 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER] = json_encode($materialsDescription);
|
75 |
if (!empty($cipherOptions['Tag'])) {
|
76 |
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] = strlen($cipherOptions['Tag']) * 8;
|
98 |
case 'gcm':
|
99 |
$cipherOptions['TagLength'] = 16;
|
100 |
$cipherTextStream = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesGcmEncryptingStream($plaintext, $cek, $cipherOptions['Iv'], $cipherOptions['Aad'] = isset($cipherOptions['Aad']) ? $cipherOptions['Aad'] : null, $cipherOptions['TagLength'], $cipherOptions['KeySize']);
|
101 |
+
if (!empty($cipherOptions['Aad'])) {
|
102 |
+
trigger_error("'Aad' has been supplied for content encryption" . " with " . $cipherTextStream->getAesName() . ". The" . " PHP SDK encryption client can decrypt an object" . " encrypted in this way, but other AWS SDKs may not be" . " able to.", E_USER_WARNING);
|
103 |
+
}
|
104 |
$appendStream = new \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\AppendStream([$cipherTextStream->createStream()]);
|
105 |
$cipherOptions['Tag'] = $cipherTextStream->getTag();
|
106 |
$appendStream->addStream(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($cipherOptions['Tag']));
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\AppendStream;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
9 |
+
trait EncryptionTraitV2
|
10 |
+
{
|
11 |
+
private static $allowedOptions = ['Cipher' => true, 'KeySize' => true, 'Aad' => true];
|
12 |
+
private static $encryptClasses = ['gcm' => \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AesGcmEncryptingStream::class];
|
13 |
+
/**
|
14 |
+
* Dependency to generate a CipherMethod from a set of inputs for loading
|
15 |
+
* in to an AesEncryptingStream.
|
16 |
+
*
|
17 |
+
* @param string $cipherName Name of the cipher to generate for encrypting.
|
18 |
+
* @param string $iv Base Initialization Vector for the cipher.
|
19 |
+
* @param int $keySize Size of the encryption key, in bits, that will be
|
20 |
+
* used.
|
21 |
+
*
|
22 |
+
* @return Cipher\CipherMethod
|
23 |
+
*
|
24 |
+
* @internal
|
25 |
+
*/
|
26 |
+
protected abstract function buildCipherMethod($cipherName, $iv, $keySize);
|
27 |
+
/**
|
28 |
+
* Builds an AesStreamInterface and populates encryption metadata into the
|
29 |
+
* supplied envelope.
|
30 |
+
*
|
31 |
+
* @param Stream $plaintext Plain-text data to be encrypted using the
|
32 |
+
* materials, algorithm, and data provided.
|
33 |
+
* @param array $options Options for use in encryption, including cipher
|
34 |
+
* options, and encryption context.
|
35 |
+
* @param MaterialsProviderV2 $provider A provider to supply and encrypt
|
36 |
+
* materials used in encryption.
|
37 |
+
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
38 |
+
* metadata to be added to.
|
39 |
+
*
|
40 |
+
* @return StreamInterface
|
41 |
+
*
|
42 |
+
* @throws \InvalidArgumentException Thrown when a value in $options['@CipherOptions']
|
43 |
+
* is not valid.
|
44 |
+
*s
|
45 |
+
* @internal
|
46 |
+
*/
|
47 |
+
public function encrypt(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream $plaintext, array $options, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderV2 $provider, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope)
|
48 |
+
{
|
49 |
+
$options = array_change_key_case($options);
|
50 |
+
$cipherOptions = array_intersect_key($options['@cipheroptions'], self::$allowedOptions);
|
51 |
+
if (empty($cipherOptions['Cipher'])) {
|
52 |
+
throw new \InvalidArgumentException('An encryption cipher must be' . ' specified in @CipherOptions["Cipher"].');
|
53 |
+
}
|
54 |
+
$cipherOptions['Cipher'] = strtolower($cipherOptions['Cipher']);
|
55 |
+
if (!self::isSupportedCipher($cipherOptions['Cipher'])) {
|
56 |
+
throw new \InvalidArgumentException('The cipher requested is not' . ' supported by the SDK.');
|
57 |
+
}
|
58 |
+
if (empty($cipherOptions['KeySize'])) {
|
59 |
+
$cipherOptions['KeySize'] = 256;
|
60 |
+
}
|
61 |
+
if (!is_int($cipherOptions['KeySize'])) {
|
62 |
+
throw new \InvalidArgumentException('The cipher "KeySize" must be' . ' an integer.');
|
63 |
+
}
|
64 |
+
if (!\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderV2::isSupportedKeySize($cipherOptions['KeySize'])) {
|
65 |
+
throw new \InvalidArgumentException('The cipher "KeySize" requested' . ' is not supported by AES (128 or 256).');
|
66 |
+
}
|
67 |
+
$cipherOptions['Iv'] = $provider->generateIv($this->getCipherOpenSslName($cipherOptions['Cipher'], $cipherOptions['KeySize']));
|
68 |
+
$encryptClass = self::$encryptClasses[$cipherOptions['Cipher']];
|
69 |
+
$aesName = $encryptClass::getStaticAesName();
|
70 |
+
$materialsDescription = ['aws:x-amz-cek-alg' => $aesName];
|
71 |
+
$keys = $provider->generateCek($cipherOptions['KeySize'], $materialsDescription, $options);
|
72 |
+
// Some providers modify materials description based on options
|
73 |
+
if (isset($keys['UpdatedContext'])) {
|
74 |
+
$materialsDescription = $keys['UpdatedContext'];
|
75 |
+
}
|
76 |
+
$encryptingStream = $this->getEncryptingStream($plaintext, $keys['Plaintext'], $cipherOptions);
|
77 |
+
// Populate envelope data
|
78 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_KEY_V2_HEADER] = $keys['Ciphertext'];
|
79 |
+
unset($keys);
|
80 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::IV_HEADER] = base64_encode($cipherOptions['Iv']);
|
81 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::KEY_WRAP_ALGORITHM_HEADER] = $provider->getWrapAlgorithmName();
|
82 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CONTENT_CRYPTO_SCHEME_HEADER] = $aesName;
|
83 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::UNENCRYPTED_CONTENT_LENGTH_HEADER] = strlen($plaintext);
|
84 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER] = json_encode($materialsDescription);
|
85 |
+
if (!empty($cipherOptions['Tag'])) {
|
86 |
+
$envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::CRYPTO_TAG_LENGTH_HEADER] = strlen($cipherOptions['Tag']) * 8;
|
87 |
+
}
|
88 |
+
return $encryptingStream;
|
89 |
+
}
|
90 |
+
/**
|
91 |
+
* Generates a stream that wraps the plaintext with the proper cipher and
|
92 |
+
* uses the content encryption key (CEK) to encrypt the data when read.
|
93 |
+
*
|
94 |
+
* @param Stream $plaintext Plain-text data to be encrypted using the
|
95 |
+
* materials, algorithm, and data provided.
|
96 |
+
* @param string $cek A content encryption key for use by the stream for
|
97 |
+
* encrypting the plaintext data.
|
98 |
+
* @param array $cipherOptions Options for use in determining the cipher to
|
99 |
+
* be used for encrypting data.
|
100 |
+
*
|
101 |
+
* @return [AesStreamInterface, string]
|
102 |
+
*
|
103 |
+
* @internal
|
104 |
+
*/
|
105 |
+
protected function getEncryptingStream(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\Stream $plaintext, $cek, &$cipherOptions)
|
106 |
+
{
|
107 |
+
switch ($cipherOptions['Cipher']) {
|
108 |
+
// Only 'gcm' is supported for encryption currently
|
109 |
+
case 'gcm':
|
110 |
+
$cipherOptions['TagLength'] = 16;
|
111 |
+
$encryptClass = self::$encryptClasses['gcm'];
|
112 |
+
$cipherTextStream = new $encryptClass($plaintext, $cek, $cipherOptions['Iv'], $cipherOptions['Aad'] = isset($cipherOptions['Aad']) ? $cipherOptions['Aad'] : '', $cipherOptions['TagLength'], $cipherOptions['KeySize']);
|
113 |
+
if (!empty($cipherOptions['Aad'])) {
|
114 |
+
trigger_error("'Aad' has been supplied for content encryption" . " with " . $cipherTextStream->getAesName() . ". The" . " PHP SDK encryption client can decrypt an object" . " encrypted in this way, but other AWS SDKs may not be" . " able to.", E_USER_WARNING);
|
115 |
+
}
|
116 |
+
$appendStream = new \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\AppendStream([$cipherTextStream->createStream()]);
|
117 |
+
$cipherOptions['Tag'] = $cipherTextStream->getTag();
|
118 |
+
$appendStream->addStream(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($cipherOptions['Tag']));
|
119 |
+
return $appendStream;
|
120 |
+
}
|
121 |
+
}
|
122 |
+
}
|
@@ -5,9 +5,17 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Kms\KmsClient;
|
6 |
/**
|
7 |
* Uses KMS to supply materials for encrypting and decrypting data.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
*/
|
9 |
-
class KmsMaterialsProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProvider
|
10 |
{
|
|
|
11 |
private $kmsClient;
|
12 |
private $kmsKeyId;
|
13 |
/**
|
@@ -24,13 +32,13 @@ class KmsMaterialsProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Cr
|
|
24 |
public function fromDecryptionEnvelope(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope)
|
25 |
{
|
26 |
if (empty($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER])) {
|
27 |
-
throw new \RuntimeException('Not able to detect
|
28 |
}
|
29 |
$materialsDescription = json_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER], true);
|
30 |
-
if (empty($materialsDescription['kms_cmk_id'])) {
|
31 |
-
throw new \RuntimeException('Not able to detect kms_cmk_id
|
32 |
}
|
33 |
-
return new
|
34 |
}
|
35 |
/**
|
36 |
* The KMS key id for use in matching this Provider to its keys,
|
@@ -44,7 +52,7 @@ class KmsMaterialsProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Cr
|
|
44 |
}
|
45 |
public function getWrapAlgorithmName()
|
46 |
{
|
47 |
-
return
|
48 |
}
|
49 |
/**
|
50 |
* Takes a content encryption key (CEK) and description to return an encrypted
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Kms\KmsClient;
|
6 |
/**
|
7 |
* Uses KMS to supply materials for encrypting and decrypting data.
|
8 |
+
*
|
9 |
+
* Legacy implementation that supports legacy S3EncryptionClient and
|
10 |
+
* S3EncryptionMultipartUploader, which use an older encryption workflow. Use
|
11 |
+
* KmsMaterialsProviderV2 with S3EncryptionClientV2 or
|
12 |
+
* S3EncryptionMultipartUploaderV2 if possible.
|
13 |
+
*
|
14 |
+
* @deprecated
|
15 |
*/
|
16 |
+
class KmsMaterialsProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProvider implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterface
|
17 |
{
|
18 |
+
const WRAP_ALGORITHM_NAME = 'kms';
|
19 |
private $kmsClient;
|
20 |
private $kmsKeyId;
|
21 |
/**
|
32 |
public function fromDecryptionEnvelope(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope)
|
33 |
{
|
34 |
if (empty($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER])) {
|
35 |
+
throw new \RuntimeException('Not able to detect the materials description.');
|
36 |
}
|
37 |
$materialsDescription = json_decode($envelope[\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope::MATERIALS_DESCRIPTION_HEADER], true);
|
38 |
+
if (empty($materialsDescription['kms_cmk_id']) && empty($materialsDescription['aws:x-amz-cek-alg'])) {
|
39 |
+
throw new \RuntimeException('Not able to detect kms_cmk_id (legacy' . ' implementation) or aws:x-amz-cek-alg (current implementation)' . ' from kms materials description.');
|
40 |
}
|
41 |
+
return new self($this->kmsClient, isset($materialsDescription['kms_cmk_id']) ? $materialsDescription['kms_cmk_id'] : null);
|
42 |
}
|
43 |
/**
|
44 |
* The KMS key id for use in matching this Provider to its keys,
|
52 |
}
|
53 |
public function getWrapAlgorithmName()
|
54 |
{
|
55 |
+
return self::WRAP_ALGORITHM_NAME;
|
56 |
}
|
57 |
/**
|
58 |
* Takes a content encryption key (CEK) and description to return an encrypted
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Kms\KmsClient;
|
7 |
+
/**
|
8 |
+
* Uses KMS to supply materials for encrypting and decrypting data. This
|
9 |
+
* V2 implementation should be used with the V2 encryption clients (i.e.
|
10 |
+
* S3EncryptionClientV2).
|
11 |
+
*/
|
12 |
+
class KmsMaterialsProviderV2 extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderV2 implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterfaceV2
|
13 |
+
{
|
14 |
+
const WRAP_ALGORITHM_NAME = 'kms+context';
|
15 |
+
private $kmsClient;
|
16 |
+
private $kmsKeyId;
|
17 |
+
/**
|
18 |
+
* @param KmsClient $kmsClient A KMS Client for use encrypting and
|
19 |
+
* decrypting keys.
|
20 |
+
* @param string $kmsKeyId The private KMS key id to be used for encrypting
|
21 |
+
* and decrypting keys.
|
22 |
+
*/
|
23 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Kms\KmsClient $kmsClient, $kmsKeyId = null)
|
24 |
+
{
|
25 |
+
$this->kmsClient = $kmsClient;
|
26 |
+
$this->kmsKeyId = $kmsKeyId;
|
27 |
+
}
|
28 |
+
/**
|
29 |
+
* @inheritDoc
|
30 |
+
*/
|
31 |
+
public function getWrapAlgorithmName()
|
32 |
+
{
|
33 |
+
return self::WRAP_ALGORITHM_NAME;
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* @inheritDoc
|
37 |
+
*/
|
38 |
+
public function decryptCek($encryptedCek, $materialDescription, $options)
|
39 |
+
{
|
40 |
+
$params = ['CiphertextBlob' => $encryptedCek, 'EncryptionContext' => $materialDescription];
|
41 |
+
if (empty($options['@KmsAllowDecryptWithAnyCmk'])) {
|
42 |
+
if (empty($this->kmsKeyId)) {
|
43 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException('KMS CMK ID was not specified and the' . ' operation is not opted-in to attempting to use any valid' . ' CMK it discovers. Please specify a CMK ID, or explicitly' . ' enable attempts to use any valid KMS CMK with the' . ' @KmsAllowDecryptWithAnyCmk option.');
|
44 |
+
}
|
45 |
+
$params['KeyId'] = $this->kmsKeyId;
|
46 |
+
}
|
47 |
+
$result = $this->kmsClient->decrypt($params);
|
48 |
+
return $result['Plaintext'];
|
49 |
+
}
|
50 |
+
/**
|
51 |
+
* @inheritDoc
|
52 |
+
*/
|
53 |
+
public function generateCek($keySize, $context, $options)
|
54 |
+
{
|
55 |
+
if (empty($this->kmsKeyId)) {
|
56 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException('A KMS key id is required for encryption' . ' with KMS keywrap. Use a KmsMaterialsProviderV2 that has been' . ' instantiated with a KMS key id.');
|
57 |
+
}
|
58 |
+
$options = array_change_key_case($options);
|
59 |
+
if (!isset($options['@kmsencryptioncontext']) || !is_array($options['@kmsencryptioncontext'])) {
|
60 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("'@KmsEncryptionContext' is a" . " required argument when using KmsMaterialsProviderV2, and" . " must be an associative array (or empty array).");
|
61 |
+
}
|
62 |
+
if (isset($options['@kmsencryptioncontext']['aws:x-amz-cek-alg'])) {
|
63 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("Conflict in reserved @KmsEncryptionContext" . " key aws:x-amz-cek-alg. This value is reserved for the S3" . " Encryption Client and cannot be set by the user.");
|
64 |
+
}
|
65 |
+
$context = array_merge($options['@kmsencryptioncontext'], $context);
|
66 |
+
$result = $this->kmsClient->generateDataKey(['KeyId' => $this->kmsKeyId, 'KeySpec' => "AES_{$keySize}", 'EncryptionContext' => $context]);
|
67 |
+
return ['Plaintext' => $result['Plaintext'], 'Ciphertext' => base64_encode($result['CiphertextBlob']), 'UpdatedContext' => $context];
|
68 |
+
}
|
69 |
+
}
|
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
5 |
-
abstract class MaterialsProvider
|
6 |
{
|
7 |
private static $supportedKeySizes = [128 => true, 192 => true, 256 => true];
|
8 |
/**
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
|
5 |
+
abstract class MaterialsProvider implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterface
|
6 |
{
|
7 |
private static $supportedKeySizes = [128 => true, 192 => true, 256 => true];
|
8 |
/**
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
interface MaterialsProviderInterface
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* Returns if the requested size is supported by AES.
|
9 |
+
*
|
10 |
+
* @param int $keySize Size of the requested key in bits.
|
11 |
+
*
|
12 |
+
* @return bool
|
13 |
+
*/
|
14 |
+
public static function isSupportedKeySize($keySize);
|
15 |
+
/**
|
16 |
+
* Performs further initialization of the MaterialsProvider based on the
|
17 |
+
* data inside the MetadataEnvelope.
|
18 |
+
*
|
19 |
+
* @param MetadataEnvelope $envelope A storage envelope for encryption
|
20 |
+
* metadata to be read from.
|
21 |
+
*
|
22 |
+
* @internal
|
23 |
+
*/
|
24 |
+
public function fromDecryptionEnvelope(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope $envelope);
|
25 |
+
/**
|
26 |
+
* Returns the wrap algorithm name for this Provider.
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
public function getWrapAlgorithmName();
|
31 |
+
/**
|
32 |
+
* Takes an encrypted content encryption key (CEK) and material description
|
33 |
+
* for use decrypting the key according to the Provider's specifications.
|
34 |
+
*
|
35 |
+
* @param string $encryptedCek Encrypted key to be decrypted by the Provider
|
36 |
+
* for use decrypting other data.
|
37 |
+
* @param string $materialDescription Material Description for use in
|
38 |
+
* encrypting the $cek.
|
39 |
+
*
|
40 |
+
* @return string
|
41 |
+
*/
|
42 |
+
public function decryptCek($encryptedCek, $materialDescription);
|
43 |
+
/**
|
44 |
+
* @param string $keySize Length of a cipher key in bits for generating a
|
45 |
+
* random content encryption key (CEK).
|
46 |
+
*
|
47 |
+
* @return string
|
48 |
+
*/
|
49 |
+
public function generateCek($keySize);
|
50 |
+
/**
|
51 |
+
* @param string $openSslName Cipher OpenSSL name to use for generating
|
52 |
+
* an initialization vector.
|
53 |
+
*
|
54 |
+
* @return string
|
55 |
+
*/
|
56 |
+
public function generateIv($openSslName);
|
57 |
+
}
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
interface MaterialsProviderInterfaceV2
|
6 |
+
{
|
7 |
+
/**
|
8 |
+
* Returns if the requested size is supported by AES.
|
9 |
+
*
|
10 |
+
* @param int $keySize Size of the requested key in bits.
|
11 |
+
*
|
12 |
+
* @return bool
|
13 |
+
*/
|
14 |
+
public static function isSupportedKeySize($keySize);
|
15 |
+
/**
|
16 |
+
* Returns the wrap algorithm name for this Provider.
|
17 |
+
*
|
18 |
+
* @return string
|
19 |
+
*/
|
20 |
+
public function getWrapAlgorithmName();
|
21 |
+
/**
|
22 |
+
* Takes an encrypted content encryption key (CEK) and material description
|
23 |
+
* for use decrypting the key according to the Provider's specifications.
|
24 |
+
*
|
25 |
+
* @param string $encryptedCek Encrypted key to be decrypted by the Provider
|
26 |
+
* for use decrypting other data.
|
27 |
+
* @param string $materialDescription Material Description for use in
|
28 |
+
* decrypting the CEK.
|
29 |
+
* @param array $options Options for use in decrypting the CEK.
|
30 |
+
*
|
31 |
+
* @return string
|
32 |
+
*/
|
33 |
+
public function decryptCek($encryptedCek, $materialDescription, $options);
|
34 |
+
/**
|
35 |
+
* @param string $keySize Length of a cipher key in bits for generating a
|
36 |
+
* random content encryption key (CEK).
|
37 |
+
* @param array $context Context map needed for key encryption
|
38 |
+
* @param array $options Additional options to be used in CEK generation
|
39 |
+
*
|
40 |
+
* @return array
|
41 |
+
*/
|
42 |
+
public function generateCek($keySize, $context, $options);
|
43 |
+
/**
|
44 |
+
* @param string $openSslName Cipher OpenSSL name to use for generating
|
45 |
+
* an initialization vector.
|
46 |
+
*
|
47 |
+
* @return string
|
48 |
+
*/
|
49 |
+
public function generateIv($openSslName);
|
50 |
+
}
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
|
4 |
+
|
5 |
+
abstract class MaterialsProviderV2 implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterfaceV2
|
6 |
+
{
|
7 |
+
private static $supportedKeySizes = [128 => true, 256 => true];
|
8 |
+
/**
|
9 |
+
* Returns if the requested size is supported by AES.
|
10 |
+
*
|
11 |
+
* @param int $keySize Size of the requested key in bits.
|
12 |
+
*
|
13 |
+
* @return bool
|
14 |
+
*/
|
15 |
+
public static function isSupportedKeySize($keySize)
|
16 |
+
{
|
17 |
+
return isset(self::$supportedKeySizes[$keySize]);
|
18 |
+
}
|
19 |
+
/**
|
20 |
+
* Returns the wrap algorithm name for this Provider.
|
21 |
+
*
|
22 |
+
* @return string
|
23 |
+
*/
|
24 |
+
public abstract function getWrapAlgorithmName();
|
25 |
+
/**
|
26 |
+
* Takes an encrypted content encryption key (CEK) and material description
|
27 |
+
* for use decrypting the key according to the Provider's specifications.
|
28 |
+
*
|
29 |
+
* @param string $encryptedCek Encrypted key to be decrypted by the Provider
|
30 |
+
* for use decrypting other data.
|
31 |
+
* @param string $materialDescription Material Description for use in
|
32 |
+
* decrypting the CEK.
|
33 |
+
* @param string $options Options for use in decrypting the CEK.
|
34 |
+
*
|
35 |
+
* @return string
|
36 |
+
*/
|
37 |
+
public abstract function decryptCek($encryptedCek, $materialDescription, $options);
|
38 |
+
/**
|
39 |
+
* @param string $keySize Length of a cipher key in bits for generating a
|
40 |
+
* random content encryption key (CEK).
|
41 |
+
* @param array $context Context map needed for key encryption
|
42 |
+
* @param array $options Additional options to be used in CEK generation
|
43 |
+
*
|
44 |
+
* @return array
|
45 |
+
*/
|
46 |
+
public abstract function generateCek($keySize, $context, $options);
|
47 |
+
/**
|
48 |
+
* @param string $openSslName Cipher OpenSSL name to use for generating
|
49 |
+
* an initialization vector.
|
50 |
+
*
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public function generateIv($openSslName)
|
54 |
+
{
|
55 |
+
return openssl_random_pseudo_bytes(openssl_cipher_iv_length($openSslName));
|
56 |
+
}
|
57 |
+
}
|
@@ -21,7 +21,6 @@ class MetadataEnvelope implements \ArrayAccess, \IteratorAggregate, \JsonSeriali
|
|
21 |
const KEY_WRAP_ALGORITHM_HEADER = 'x-amz-wrap-alg';
|
22 |
const CONTENT_CRYPTO_SCHEME_HEADER = 'x-amz-cek-alg';
|
23 |
const CRYPTO_TAG_LENGTH_HEADER = 'x-amz-tag-len';
|
24 |
-
const UNENCRYPTED_CONTENT_MD5_HEADER = 'x-amz-unencrypted-content-md5';
|
25 |
const UNENCRYPTED_CONTENT_LENGTH_HEADER = 'x-amz-unencrypted-content-length';
|
26 |
private static $constants = [];
|
27 |
public static function getConstantValues()
|
21 |
const KEY_WRAP_ALGORITHM_HEADER = 'x-amz-wrap-alg';
|
22 |
const CONTENT_CRYPTO_SCHEME_HEADER = 'x-amz-cek-alg';
|
23 |
const CRYPTO_TAG_LENGTH_HEADER = 'x-amz-tag-len';
|
|
|
24 |
const UNENCRYPTED_CONTENT_LENGTH_HEADER = 'x-amz-unencrypted-content-length';
|
25 |
private static $constants = [];
|
26 |
public static function getConstantValues()
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoPolyfillException;
|
6 |
+
use InvalidArgumentException;
|
7 |
+
use RangeException;
|
8 |
+
/**
|
9 |
+
* Class AesGcm
|
10 |
+
*
|
11 |
+
* This provides a polyfill for AES-GCM encryption/decryption, with caveats:
|
12 |
+
*
|
13 |
+
* 1. Only 96-bit nonces are supported.
|
14 |
+
* 2. Only 128-bit authentication tags are supported. (i.e. non-truncated)
|
15 |
+
*
|
16 |
+
* Supports AES key sizes of 128-bit, 192-bit, and 256-bit.
|
17 |
+
*
|
18 |
+
* @package Aws\Crypto\Polyfill
|
19 |
+
*/
|
20 |
+
class AesGcm
|
21 |
+
{
|
22 |
+
use NeedsTrait;
|
23 |
+
/** @var Key $aesKey */
|
24 |
+
private $aesKey;
|
25 |
+
/** @var int $keySize */
|
26 |
+
private $keySize;
|
27 |
+
/** @var int $blockSize */
|
28 |
+
protected $blockSize = 8192;
|
29 |
+
/**
|
30 |
+
* AesGcm constructor.
|
31 |
+
*
|
32 |
+
* @param Key $aesKey
|
33 |
+
* @param int $keySize
|
34 |
+
* @param int $blockSize
|
35 |
+
*
|
36 |
+
* @throws CryptoPolyfillException
|
37 |
+
* @throws InvalidArgumentException
|
38 |
+
* @throws RangeException
|
39 |
+
*/
|
40 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key $aesKey, $keySize = 256, $blockSize = 8192)
|
41 |
+
{
|
42 |
+
/* Preconditions: */
|
43 |
+
self::needs(\in_array($keySize, [128, 192, 256], true), "Key size must be 128, 192, or 256 bits; {$keySize} given", \InvalidArgumentException::class);
|
44 |
+
self::needs(\is_int($blockSize) && $blockSize > 0 && $blockSize <= PHP_INT_MAX, 'Block size must be a positive integer.', \RangeException::class);
|
45 |
+
self::needs($aesKey->length() << 3 === $keySize, 'Incorrect key size; expected ' . $keySize . ' bits, got ' . ($aesKey->length() << 3) . ' bits.');
|
46 |
+
$this->aesKey = $aesKey;
|
47 |
+
$this->keySize = $keySize;
|
48 |
+
}
|
49 |
+
/**
|
50 |
+
* Encryption interface for AES-GCM
|
51 |
+
*
|
52 |
+
* @param string $plaintext Message to be encrypted
|
53 |
+
* @param string $nonce Number to be used ONCE
|
54 |
+
* @param Key $key AES Key
|
55 |
+
* @param string $aad Additional authenticated data
|
56 |
+
* @param string &$tag Reference to variable to hold tag
|
57 |
+
* @param int $keySize Key size (bits)
|
58 |
+
* @param int $blockSize Block size (bytes) -- How much memory to buffer
|
59 |
+
* @return string
|
60 |
+
* @throws InvalidArgumentException
|
61 |
+
*/
|
62 |
+
public static function encrypt($plaintext, $nonce, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key $key, $aad, &$tag, $keySize = 256, $blockSize = 8192)
|
63 |
+
{
|
64 |
+
self::needs(self::strlen($nonce) === 12, 'Nonce must be exactly 12 bytes', \InvalidArgumentException::class);
|
65 |
+
$encryptor = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm($key, $keySize, $blockSize);
|
66 |
+
list($aadLength, $gmac) = $encryptor->gmacInit($nonce, $aad);
|
67 |
+
$ciphertext = \openssl_encrypt($plaintext, "aes-{$encryptor->keySize}-ctr", $key->get(), OPENSSL_NO_PADDING | OPENSSL_RAW_DATA, $nonce . "\0\0\0\2");
|
68 |
+
/* Calculate auth tag in a streaming fashion to minimize memory usage: */
|
69 |
+
$ciphertextLength = self::strlen($ciphertext);
|
70 |
+
for ($i = 0; $i < $ciphertextLength; $i += $encryptor->blockSize) {
|
71 |
+
$cBlock = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(self::substr($ciphertext, $i, $encryptor->blockSize));
|
72 |
+
$gmac->update($cBlock);
|
73 |
+
}
|
74 |
+
$tag = $gmac->finish($aadLength, $ciphertextLength)->toString();
|
75 |
+
return $ciphertext;
|
76 |
+
}
|
77 |
+
/**
|
78 |
+
* Decryption interface for AES-GCM
|
79 |
+
*
|
80 |
+
* @param string $ciphertext Ciphertext to decrypt
|
81 |
+
* @param string $nonce Number to be used ONCE
|
82 |
+
* @param Key $key AES key
|
83 |
+
* @param string $aad Additional authenticated data
|
84 |
+
* @param string $tag Authentication tag
|
85 |
+
* @param int $keySize Key size (bits)
|
86 |
+
* @param int $blockSize Block size (bytes) -- How much memory to buffer
|
87 |
+
* @return string Plaintext
|
88 |
+
*
|
89 |
+
* @throws CryptoPolyfillException
|
90 |
+
* @throws InvalidArgumentException
|
91 |
+
*/
|
92 |
+
public static function decrypt($ciphertext, $nonce, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key $key, $aad, &$tag, $keySize = 256, $blockSize = 8192)
|
93 |
+
{
|
94 |
+
/* Precondition: */
|
95 |
+
self::needs(self::strlen($nonce) === 12, 'Nonce must be exactly 12 bytes', \InvalidArgumentException::class);
|
96 |
+
$encryptor = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\AesGcm($key, $keySize, $blockSize);
|
97 |
+
list($aadLength, $gmac) = $encryptor->gmacInit($nonce, $aad);
|
98 |
+
/* Calculate auth tag in a streaming fashion to minimize memory usage: */
|
99 |
+
$ciphertextLength = self::strlen($ciphertext);
|
100 |
+
for ($i = 0; $i < $ciphertextLength; $i += $encryptor->blockSize) {
|
101 |
+
$cBlock = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(self::substr($ciphertext, $i, $encryptor->blockSize));
|
102 |
+
$gmac->update($cBlock);
|
103 |
+
}
|
104 |
+
/* Validate auth tag in constant-time: */
|
105 |
+
$calc = $gmac->finish($aadLength, $ciphertextLength);
|
106 |
+
$expected = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray($tag);
|
107 |
+
self::needs($calc->equals($expected), 'Invalid authentication tag');
|
108 |
+
/* Return plaintext if auth tag check succeeded: */
|
109 |
+
return \openssl_decrypt($ciphertext, "aes-{$encryptor->keySize}-ctr", $key->get(), OPENSSL_NO_PADDING | OPENSSL_RAW_DATA, $nonce . "\0\0\0\2");
|
110 |
+
}
|
111 |
+
/**
|
112 |
+
* Initialize a Gmac object with the nonce and this object's key.
|
113 |
+
*
|
114 |
+
* @param string $nonce Must be exactly 12 bytes long.
|
115 |
+
* @param string|null $aad
|
116 |
+
* @return array
|
117 |
+
*/
|
118 |
+
protected function gmacInit($nonce, $aad = null)
|
119 |
+
{
|
120 |
+
$gmac = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Gmac($this->aesKey, $nonce . "\0\0\0\1", $this->keySize);
|
121 |
+
$aadBlock = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray($aad);
|
122 |
+
$aadLength = $aadBlock->count();
|
123 |
+
$gmac->update($aadBlock);
|
124 |
+
$gmac->flush();
|
125 |
+
return [$aadLength, $gmac];
|
126 |
+
}
|
127 |
+
/**
|
128 |
+
* Calculate the length of a string.
|
129 |
+
*
|
130 |
+
* Uses the appropriate PHP function without being brittle to
|
131 |
+
* mbstring.func_overload.
|
132 |
+
*
|
133 |
+
* @param string $string
|
134 |
+
* @return int
|
135 |
+
*/
|
136 |
+
protected static function strlen($string)
|
137 |
+
{
|
138 |
+
if (\is_callable('\\mb_strlen')) {
|
139 |
+
return (int) \mb_strlen($string, '8bit');
|
140 |
+
}
|
141 |
+
return (int) \strlen($string);
|
142 |
+
}
|
143 |
+
/**
|
144 |
+
* Return a substring of the provided string.
|
145 |
+
*
|
146 |
+
* Uses the appropriate PHP function without being brittle to
|
147 |
+
* mbstring.func_overload.
|
148 |
+
*
|
149 |
+
* @param string $string
|
150 |
+
* @param int $offset
|
151 |
+
* @param int|null $length
|
152 |
+
* @return string
|
153 |
+
*/
|
154 |
+
protected static function substr($string, $offset = 0, $length = null)
|
155 |
+
{
|
156 |
+
if (\is_callable('\\mb_substr')) {
|
157 |
+
return \mb_substr($string, $offset, $length, '8bit');
|
158 |
+
} elseif (!\is_null($length)) {
|
159 |
+
return \substr($string, $offset, $length);
|
160 |
+
}
|
161 |
+
return \substr($string, $offset);
|
162 |
+
}
|
163 |
+
}
|
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class ByteArray
|
7 |
+
* @package Aws\Crypto\Polyfill
|
8 |
+
*/
|
9 |
+
class ByteArray extends \SplFixedArray
|
10 |
+
{
|
11 |
+
use NeedsTrait;
|
12 |
+
/**
|
13 |
+
* ByteArray constructor.
|
14 |
+
*
|
15 |
+
* @param int|string|int[] $size
|
16 |
+
* If you pass in an integer, it creates a ByteArray of that size.
|
17 |
+
* If you pass in a string or array, it converts it to an array of
|
18 |
+
* integers between 0 and 255.
|
19 |
+
* @throws \InvalidArgumentException
|
20 |
+
*/
|
21 |
+
public function __construct($size = 0)
|
22 |
+
{
|
23 |
+
$arr = null;
|
24 |
+
// Integer? This behaves just like SplFixedArray.
|
25 |
+
if (\is_array($size)) {
|
26 |
+
// Array? We need to pass the count to parent::__construct() then populate
|
27 |
+
$arr = $size;
|
28 |
+
$size = \count($arr);
|
29 |
+
} elseif (\is_string($size)) {
|
30 |
+
// We need to avoid mbstring.func_overload
|
31 |
+
if (\is_callable('\\mb_str_split')) {
|
32 |
+
$tmp = \mb_str_split($size, 1, '8bit');
|
33 |
+
} else {
|
34 |
+
$tmp = \str_split($size, 1);
|
35 |
+
}
|
36 |
+
// Let's convert each character to an 8-bit integer and store in $arr
|
37 |
+
$arr = [];
|
38 |
+
if (!empty($tmp)) {
|
39 |
+
foreach ($tmp as $t) {
|
40 |
+
if (strlen($t) < 1) {
|
41 |
+
continue;
|
42 |
+
}
|
43 |
+
$arr[] = \unpack('C', $t)[1] & 0xff;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
$size = \count($arr);
|
47 |
+
} elseif ($size instanceof ByteArray) {
|
48 |
+
$arr = $size->toArray();
|
49 |
+
$size = $size->count();
|
50 |
+
} elseif (!\is_int($size)) {
|
51 |
+
throw new \InvalidArgumentException('Argument must be an integer, string, or array of integers.');
|
52 |
+
}
|
53 |
+
parent::__construct($size);
|
54 |
+
if (!empty($arr)) {
|
55 |
+
// Populate this object with values from constructor argument
|
56 |
+
foreach ($arr as $i => $v) {
|
57 |
+
$this->offsetSet($i, $v);
|
58 |
+
}
|
59 |
+
} else {
|
60 |
+
// Initialize to zero.
|
61 |
+
for ($i = 0; $i < $size; ++$i) {
|
62 |
+
$this->offsetSet($i, 0);
|
63 |
+
}
|
64 |
+
}
|
65 |
+
}
|
66 |
+
/**
|
67 |
+
* Encode an integer into a byte array. 32-bit (unsigned), big endian byte order.
|
68 |
+
*
|
69 |
+
* @param int $num
|
70 |
+
* @return self
|
71 |
+
*/
|
72 |
+
public static function enc32be($num)
|
73 |
+
{
|
74 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(\pack('N', $num));
|
75 |
+
}
|
76 |
+
/**
|
77 |
+
* @param ByteArray $other
|
78 |
+
* @return bool
|
79 |
+
*/
|
80 |
+
public function equals(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $other)
|
81 |
+
{
|
82 |
+
if ($this->count() !== $other->count()) {
|
83 |
+
return false;
|
84 |
+
}
|
85 |
+
$d = 0;
|
86 |
+
for ($i = $this->count() - 1; $i >= 0; --$i) {
|
87 |
+
$d |= $this[$i] ^ $other[$i];
|
88 |
+
}
|
89 |
+
return $d === 0;
|
90 |
+
}
|
91 |
+
/**
|
92 |
+
* @param ByteArray $array
|
93 |
+
* @return ByteArray
|
94 |
+
*/
|
95 |
+
public function exclusiveOr(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $array)
|
96 |
+
{
|
97 |
+
self::needs($this->count() === $array->count(), 'Both ByteArrays must be equal size for exclusiveOr()');
|
98 |
+
$out = clone $this;
|
99 |
+
for ($i = 0; $i < $this->count(); ++$i) {
|
100 |
+
$out[$i] = $array[$i] ^ $out[$i];
|
101 |
+
}
|
102 |
+
return $out;
|
103 |
+
}
|
104 |
+
/**
|
105 |
+
* Returns a new ByteArray incremented by 1 (big endian byte order).
|
106 |
+
*
|
107 |
+
* @param int $increase
|
108 |
+
* @return self
|
109 |
+
*/
|
110 |
+
public function getIncremented($increase = 1)
|
111 |
+
{
|
112 |
+
$clone = clone $this;
|
113 |
+
$index = $clone->count();
|
114 |
+
while ($index > 0) {
|
115 |
+
--$index;
|
116 |
+
$tmp = $clone[$index] + $increase & PHP_INT_MAX;
|
117 |
+
$clone[$index] = $tmp & 0xff;
|
118 |
+
$increase = $tmp >> 8;
|
119 |
+
}
|
120 |
+
return $clone;
|
121 |
+
}
|
122 |
+
/**
|
123 |
+
* Sets a value. See SplFixedArray for more.
|
124 |
+
*
|
125 |
+
* @param int $index
|
126 |
+
* @param int $newval
|
127 |
+
* @return void
|
128 |
+
*/
|
129 |
+
public function offsetSet($index, $newval)
|
130 |
+
{
|
131 |
+
parent::offsetSet($index, $newval & 0xff);
|
132 |
+
}
|
133 |
+
/**
|
134 |
+
* Return a copy of this ByteArray, bitshifted to the right by 1.
|
135 |
+
* Used in Gmac.
|
136 |
+
*
|
137 |
+
* @return self
|
138 |
+
*/
|
139 |
+
public function rshift()
|
140 |
+
{
|
141 |
+
$out = clone $this;
|
142 |
+
for ($j = $this->count() - 1; $j > 0; --$j) {
|
143 |
+
$out[$j] = ($out[$j - 1] & 1) << 7 | $out[$j] >> 1;
|
144 |
+
}
|
145 |
+
$out[0] >>= 1;
|
146 |
+
return $out;
|
147 |
+
}
|
148 |
+
/**
|
149 |
+
* Constant-time conditional select. This is meant to read like a ternary operator.
|
150 |
+
*
|
151 |
+
* $z = ByteArray::select(1, $x, $y); // $z is equal to $x
|
152 |
+
* $z = ByteArray::select(0, $x, $y); // $z is equal to $y
|
153 |
+
*
|
154 |
+
* @param int $select
|
155 |
+
* @param ByteArray $left
|
156 |
+
* @param ByteArray $right
|
157 |
+
* @return ByteArray
|
158 |
+
*/
|
159 |
+
public static function select($select, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $left, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $right)
|
160 |
+
{
|
161 |
+
self::needs($left->count() === $right->count(), 'Both ByteArrays must be equal size for select()');
|
162 |
+
$rightLength = $right->count();
|
163 |
+
$out = clone $right;
|
164 |
+
$mask = -($select & 1) & 0xff;
|
165 |
+
for ($i = 0; $i < $rightLength; $i++) {
|
166 |
+
$out[$i] = $out[$i] ^ ($left[$i] ^ $right[$i]) & $mask;
|
167 |
+
}
|
168 |
+
return $out;
|
169 |
+
}
|
170 |
+
/**
|
171 |
+
* Overwrite values of this ByteArray based on a separate ByteArray, with
|
172 |
+
* a given starting offset and length.
|
173 |
+
*
|
174 |
+
* See JavaScript's Uint8Array.set() for more information.
|
175 |
+
*
|
176 |
+
* @param ByteArray $input
|
177 |
+
* @param int $offset
|
178 |
+
* @param int|null $length
|
179 |
+
* @return self
|
180 |
+
*/
|
181 |
+
public function set(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $input, $offset = 0, $length = null)
|
182 |
+
{
|
183 |
+
self::needs(is_int($offset) && $offset >= 0, 'Offset must be a positive integer or zero');
|
184 |
+
if (is_null($length)) {
|
185 |
+
$length = $input->count();
|
186 |
+
}
|
187 |
+
$i = 0;
|
188 |
+
$j = $offset;
|
189 |
+
while ($i < $length && $j < $this->count()) {
|
190 |
+
$this[$j] = $input[$i];
|
191 |
+
++$i;
|
192 |
+
++$j;
|
193 |
+
}
|
194 |
+
return $this;
|
195 |
+
}
|
196 |
+
/**
|
197 |
+
* Returns a slice of this ByteArray.
|
198 |
+
*
|
199 |
+
* @param int $start
|
200 |
+
* @param null $length
|
201 |
+
* @return self
|
202 |
+
*/
|
203 |
+
public function slice($start = 0, $length = null)
|
204 |
+
{
|
205 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(\array_slice($this->toArray(), $start, $length));
|
206 |
+
}
|
207 |
+
/**
|
208 |
+
* Mutates the current state and sets all values to zero.
|
209 |
+
*
|
210 |
+
* @return void
|
211 |
+
*/
|
212 |
+
public function zeroize()
|
213 |
+
{
|
214 |
+
for ($i = $this->count() - 1; $i >= 0; --$i) {
|
215 |
+
$this->offsetSet($i, 0);
|
216 |
+
}
|
217 |
+
}
|
218 |
+
/**
|
219 |
+
* Converts the ByteArray to a raw binary string.
|
220 |
+
*
|
221 |
+
* @return string
|
222 |
+
*/
|
223 |
+
public function toString()
|
224 |
+
{
|
225 |
+
$count = $this->count();
|
226 |
+
if ($count === 0) {
|
227 |
+
return '';
|
228 |
+
}
|
229 |
+
$args = $this->toArray();
|
230 |
+
\array_unshift($args, \str_repeat('C', $count));
|
231 |
+
// constant-time, PHP <5.6 equivalent to pack('C*', ...$args);
|
232 |
+
return \call_user_func_array('\\pack', $args);
|
233 |
+
}
|
234 |
+
}
|
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Gmac
|
7 |
+
*
|
8 |
+
* @package Aws\Crypto\Polyfill
|
9 |
+
*/
|
10 |
+
class Gmac
|
11 |
+
{
|
12 |
+
use NeedsTrait;
|
13 |
+
const BLOCK_SIZE = 16;
|
14 |
+
/** @var ByteArray $buf */
|
15 |
+
protected $buf;
|
16 |
+
/** @var int $bufLength */
|
17 |
+
protected $bufLength = 0;
|
18 |
+
/** @var ByteArray $h */
|
19 |
+
protected $h;
|
20 |
+
/** @var ByteArray $hf */
|
21 |
+
protected $hf;
|
22 |
+
/** @var Key $key */
|
23 |
+
protected $key;
|
24 |
+
/** @var ByteArray $x */
|
25 |
+
protected $x;
|
26 |
+
/**
|
27 |
+
* Gmac constructor.
|
28 |
+
*
|
29 |
+
* @param Key $aesKey
|
30 |
+
* @param string $nonce
|
31 |
+
* @param int $keySize
|
32 |
+
*/
|
33 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\Key $aesKey, $nonce, $keySize = 256)
|
34 |
+
{
|
35 |
+
$this->buf = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(16);
|
36 |
+
$this->h = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(\openssl_encrypt(\str_repeat("\0", 16), "aes-{$keySize}-ecb", $aesKey->get(), OPENSSL_RAW_DATA | OPENSSL_NO_PADDING));
|
37 |
+
$this->key = $aesKey;
|
38 |
+
$this->x = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(16);
|
39 |
+
$this->hf = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(\openssl_encrypt($nonce, "aes-{$keySize}-ecb", $aesKey->get(), OPENSSL_RAW_DATA | OPENSSL_NO_PADDING));
|
40 |
+
}
|
41 |
+
/**
|
42 |
+
* Update the object with some data.
|
43 |
+
*
|
44 |
+
* This method mutates this Gmac object.
|
45 |
+
*
|
46 |
+
* @param ByteArray $blocks
|
47 |
+
* @return self
|
48 |
+
*/
|
49 |
+
public function update(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $blocks)
|
50 |
+
{
|
51 |
+
if ($blocks->count() + $this->bufLength < self::BLOCK_SIZE) {
|
52 |
+
// Write to internal buffer until we reach enough to write.
|
53 |
+
$this->buf->set($blocks, $this->bufLength);
|
54 |
+
$this->bufLength += $blocks->count();
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
// Process internal buffer first.
|
58 |
+
if ($this->bufLength > 0) {
|
59 |
+
// 0 <= state.buf_len < BLOCK_SIZE is an invariant
|
60 |
+
$tmp = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(self::BLOCK_SIZE);
|
61 |
+
$tmp->set($this->buf->slice(0, $this->bufLength));
|
62 |
+
$remainingBlockLength = self::BLOCK_SIZE - $this->bufLength;
|
63 |
+
$tmp->set($blocks->slice(0, $remainingBlockLength), $this->bufLength);
|
64 |
+
$blocks = $blocks->slice($remainingBlockLength);
|
65 |
+
$this->bufLength = 0;
|
66 |
+
$this->x = $this->blockMultiply($this->x->exclusiveOr($tmp), $this->h);
|
67 |
+
}
|
68 |
+
// Process full blocks.
|
69 |
+
$numBlocks = $blocks->count() >> 4;
|
70 |
+
for ($i = 0; $i < $numBlocks; ++$i) {
|
71 |
+
$tmp = $blocks->slice($i << 4, self::BLOCK_SIZE);
|
72 |
+
$this->x = $this->blockMultiply($this->x->exclusiveOr($tmp), $this->h);
|
73 |
+
}
|
74 |
+
$last = $numBlocks << 4;
|
75 |
+
// Zero-fill buffer
|
76 |
+
for ($i = 0; $i < 16; ++$i) {
|
77 |
+
$this->buf[$i] = 0;
|
78 |
+
}
|
79 |
+
// Feed leftover into buffer.
|
80 |
+
if ($last < $blocks->count()) {
|
81 |
+
$tmp = $blocks->slice($last);
|
82 |
+
$this->buf->set($tmp);
|
83 |
+
$this->bufLength += $blocks->count() - $last;
|
84 |
+
}
|
85 |
+
return $this;
|
86 |
+
}
|
87 |
+
/**
|
88 |
+
* Finish processing the authentication tag.
|
89 |
+
*
|
90 |
+
* This method mutates this Gmac object (effectively resetting it).
|
91 |
+
*
|
92 |
+
* @param int $aadLength
|
93 |
+
* @param int $ciphertextLength
|
94 |
+
* @return ByteArray
|
95 |
+
*/
|
96 |
+
public function finish($aadLength, $ciphertextLength)
|
97 |
+
{
|
98 |
+
$lengthBlock = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(16);
|
99 |
+
$state = $this->flush();
|
100 |
+
// AES-GCM expects bit lengths, not byte lengths.
|
101 |
+
$lengthBlock->set(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::enc32be($aadLength >> 29), 0);
|
102 |
+
$lengthBlock->set(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::enc32be($aadLength << 3), 4);
|
103 |
+
$lengthBlock->set(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::enc32be($ciphertextLength >> 29), 8);
|
104 |
+
$lengthBlock->set(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::enc32be($ciphertextLength << 3), 12);
|
105 |
+
$state->update($lengthBlock);
|
106 |
+
$output = $state->x->exclusiveOr($state->hf);
|
107 |
+
// Zeroize the internal values as a best-effort.
|
108 |
+
$state->buf->zeroize();
|
109 |
+
$state->x->zeroize();
|
110 |
+
$state->h->zeroize();
|
111 |
+
$state->hf->zeroize();
|
112 |
+
return $output;
|
113 |
+
}
|
114 |
+
/**
|
115 |
+
* Get a specific bit from the provided array, at the given index.
|
116 |
+
*
|
117 |
+
* [01234567], 8+[01234567], 16+[01234567], ...
|
118 |
+
*
|
119 |
+
* @param ByteArray $x
|
120 |
+
* @param int $i
|
121 |
+
* @return int
|
122 |
+
*/
|
123 |
+
protected function bit(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $x, $i)
|
124 |
+
{
|
125 |
+
$byte = $i >> 3;
|
126 |
+
return $x[$byte] >> (7 - $i & 7) & 1;
|
127 |
+
}
|
128 |
+
/**
|
129 |
+
* Galois Field Multiplication
|
130 |
+
*
|
131 |
+
* This function is the critical path that must be constant-time in order to
|
132 |
+
* avoid timing side-channels against AES-GCM.
|
133 |
+
*
|
134 |
+
* The contents of each are always calculated, regardless of the branching
|
135 |
+
* condition, to prevent another kind of timing leak.
|
136 |
+
*
|
137 |
+
* @param ByteArray $x
|
138 |
+
* @param ByteArray $y
|
139 |
+
* @return ByteArray
|
140 |
+
*/
|
141 |
+
protected function blockMultiply(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $x, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray $y)
|
142 |
+
{
|
143 |
+
static $fieldPolynomial = null;
|
144 |
+
if (!$fieldPolynomial) {
|
145 |
+
$fieldPolynomial = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray([0xe1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
|
146 |
+
}
|
147 |
+
self::needs($x->count() === 16, 'Argument 1 must be a ByteArray of exactly 16 bytes');
|
148 |
+
self::needs($y->count() === 16, 'Argument 2 must be a ByteArray of exactly 16 bytes');
|
149 |
+
$v = clone $y;
|
150 |
+
$z = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray(16);
|
151 |
+
for ($i = 0; $i < 128; ++$i) {
|
152 |
+
// if ($b) $z = $z->exclusiveOr($v);
|
153 |
+
$b = $this->bit($x, $i);
|
154 |
+
$z = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::select($b, $z->exclusiveOr($v), $z);
|
155 |
+
// if ($b) $v = $v->exclusiveOr($fieldPolynomial);
|
156 |
+
$b = $v[15] & 1;
|
157 |
+
$v = $v->rshift();
|
158 |
+
$v = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill\ByteArray::select($b, $v->exclusiveOr($fieldPolynomial), $v);
|
159 |
+
}
|
160 |
+
return $z;
|
161 |
+
}
|
162 |
+
/**
|
163 |
+
* Finish processing any leftover bytes in the internal buffer.
|
164 |
+
*
|
165 |
+
* @return self
|
166 |
+
*/
|
167 |
+
public function flush()
|
168 |
+
{
|
169 |
+
if ($this->bufLength !== 0) {
|
170 |
+
$this->x = $this->blockMultiply($this->x->exclusiveOr($this->buf), $this->h);
|
171 |
+
$this->bufLength = 0;
|
172 |
+
}
|
173 |
+
return $this;
|
174 |
+
}
|
175 |
+
}
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class Key
|
7 |
+
*
|
8 |
+
* Wraps a string to keep it hidden from stack traces.
|
9 |
+
*
|
10 |
+
* @package Aws\Crypto\Polyfill
|
11 |
+
*/
|
12 |
+
class Key
|
13 |
+
{
|
14 |
+
/**
|
15 |
+
* @var string $internalString
|
16 |
+
*/
|
17 |
+
private $internalString;
|
18 |
+
/**
|
19 |
+
* Hide contents of
|
20 |
+
*
|
21 |
+
* @return array
|
22 |
+
*/
|
23 |
+
public function __debugInfo()
|
24 |
+
{
|
25 |
+
return [];
|
26 |
+
}
|
27 |
+
/**
|
28 |
+
* Key constructor.
|
29 |
+
* @param string $str
|
30 |
+
*/
|
31 |
+
public function __construct($str)
|
32 |
+
{
|
33 |
+
$this->internalString = $str;
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* Defense in depth:
|
37 |
+
*
|
38 |
+
* PHP 7.2 includes the Sodium cryptography library, which (among other things)
|
39 |
+
* exposes a function called sodium_memzero() that we can use to zero-fill strings
|
40 |
+
* to minimize the risk of sensitive cryptographic materials persisting in memory.
|
41 |
+
*
|
42 |
+
* If this function is not available, we XOR the string in-place with itself as a
|
43 |
+
* best-effort attempt.
|
44 |
+
*/
|
45 |
+
public function __destruct()
|
46 |
+
{
|
47 |
+
if (extension_loaded('sodium') && function_exists('sodium_memzero')) {
|
48 |
+
try {
|
49 |
+
\sodium_memzero($this->internalString);
|
50 |
+
} catch (\SodiumException $ex) {
|
51 |
+
// This is a best effort, but does not provide the same guarantees as sodium_memzero():
|
52 |
+
$this->internalString ^= $this->internalString;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
56 |
+
/**
|
57 |
+
* @return string
|
58 |
+
*/
|
59 |
+
public function get()
|
60 |
+
{
|
61 |
+
return $this->internalString;
|
62 |
+
}
|
63 |
+
/**
|
64 |
+
* @return int
|
65 |
+
*/
|
66 |
+
public function length()
|
67 |
+
{
|
68 |
+
if (\is_callable('\\mb_strlen')) {
|
69 |
+
return (int) \mb_strlen($this->internalString, '8bit');
|
70 |
+
}
|
71 |
+
return (int) \strlen($this->internalString);
|
72 |
+
}
|
73 |
+
}
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Polyfill;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoPolyfillException;
|
6 |
+
/**
|
7 |
+
* Trait NeedsTrait
|
8 |
+
* @package Aws\Crypto\Polyfill
|
9 |
+
*/
|
10 |
+
trait NeedsTrait
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Preconditions, postconditions, and loop invariants are very
|
14 |
+
* useful for safe programing. They also document the specifications.
|
15 |
+
* This function is to help simplify the semantic burden of parsing
|
16 |
+
* these constructions.
|
17 |
+
*
|
18 |
+
* Instead of constructions like
|
19 |
+
* if (!(GOOD CONDITION)) {
|
20 |
+
* throw new \Exception('condition not true');
|
21 |
+
* }
|
22 |
+
*
|
23 |
+
* you can write:
|
24 |
+
* needs(GOOD CONDITION, 'condition not true');
|
25 |
+
* @param $condition
|
26 |
+
* @param $errorMessage
|
27 |
+
* @param null $exceptionClass
|
28 |
+
*/
|
29 |
+
public static function needs($condition, $errorMessage, $exceptionClass = null)
|
30 |
+
{
|
31 |
+
if (!$condition) {
|
32 |
+
if (!$exceptionClass) {
|
33 |
+
$exceptionClass = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoPolyfillException::class;
|
34 |
+
}
|
35 |
+
throw new $exceptionClass($errorMessage);
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
@@ -98,10 +98,10 @@ class PartitionEndpointProvider
|
|
98 |
$prefixGroups = $prefixData['prefix-groups'];
|
99 |
foreach ($data["partitions"] as $index => $partition) {
|
100 |
foreach ($prefixGroups as $current => $old) {
|
101 |
-
$serviceData = \DeliciousBrains\WP_Offload_Media\Aws3\JmesPath\Env::search("services
|
102 |
if (!empty($serviceData)) {
|
103 |
foreach ($old as $prefix) {
|
104 |
-
if (empty(\DeliciousBrains\WP_Offload_Media\Aws3\JmesPath\Env::search("services
|
105 |
$data["partitions"][$index]["services"][$prefix] = $serviceData;
|
106 |
}
|
107 |
}
|
98 |
$prefixGroups = $prefixData['prefix-groups'];
|
99 |
foreach ($data["partitions"] as $index => $partition) {
|
100 |
foreach ($prefixGroups as $current => $old) {
|
101 |
+
$serviceData = \DeliciousBrains\WP_Offload_Media\Aws3\JmesPath\Env::search("services.\"{$current}\"", $partition);
|
102 |
if (!empty($serviceData)) {
|
103 |
foreach ($old as $prefix) {
|
104 |
+
if (empty(\DeliciousBrains\WP_Offload_Media\Aws3\JmesPath\Env::search("services.\"{$prefix}\"", $partition))) {
|
105 |
$data["partitions"][$index]["services"][$prefix] = $serviceData;
|
106 |
}
|
107 |
}
|
@@ -69,7 +69,11 @@ class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\A
|
|
69 |
*/
|
70 |
public static function defaultProvider(array $config = [])
|
71 |
{
|
72 |
-
$configProviders = [self::env()
|
|
|
|
|
|
|
|
|
73 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
74 |
if (isset($config['endpoint_discovery']) && $config['endpoint_discovery'] instanceof CacheInterface) {
|
75 |
return self::cache($memo, $config['endpoint_discovery'], self::$cacheKey);
|
@@ -97,14 +101,30 @@ class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\A
|
|
97 |
};
|
98 |
}
|
99 |
/**
|
100 |
-
* Fallback config options when other sources are not set.
|
|
|
|
|
|
|
101 |
*
|
|
|
102 |
* @return callable
|
103 |
*/
|
104 |
-
public static function fallback()
|
105 |
{
|
106 |
-
|
107 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
};
|
109 |
}
|
110 |
/**
|
69 |
*/
|
70 |
public static function defaultProvider(array $config = [])
|
71 |
{
|
72 |
+
$configProviders = [self::env()];
|
73 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
74 |
+
$configProviders[] = self::ini();
|
75 |
+
}
|
76 |
+
$configProviders[] = self::fallback($config);
|
77 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
78 |
if (isset($config['endpoint_discovery']) && $config['endpoint_discovery'] instanceof CacheInterface) {
|
79 |
return self::cache($memo, $config['endpoint_discovery'], self::$cacheKey);
|
101 |
};
|
102 |
}
|
103 |
/**
|
104 |
+
* Fallback config options when other sources are not set. Will check the
|
105 |
+
* service model for any endpoint discovery required operations, and enable
|
106 |
+
* endpoint discovery in that case. If no required operations found, will use
|
107 |
+
* the class default values.
|
108 |
*
|
109 |
+
* @param array $config
|
110 |
* @return callable
|
111 |
*/
|
112 |
+
public static function fallback($config = [])
|
113 |
{
|
114 |
+
$enabled = self::DEFAULT_ENABLED;
|
115 |
+
if (!empty($config['api_provider']) && !empty($config['service']) && !empty($config['version'])) {
|
116 |
+
$provider = $config['api_provider'];
|
117 |
+
$apiData = $provider('api', $config['service'], $config['version']);
|
118 |
+
if (!empty($apiData['operations'])) {
|
119 |
+
foreach ($apiData['operations'] as $operation) {
|
120 |
+
if (!empty($operation['endpointdiscovery']['required'])) {
|
121 |
+
$enabled = true;
|
122 |
+
}
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
126 |
+
return function () use($enabled) {
|
127 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\Configuration($enabled, self::DEFAULT_CACHE_LIMIT));
|
128 |
};
|
129 |
}
|
130 |
/**
|
@@ -47,8 +47,11 @@ class EndpointDiscoveryMiddleware
|
|
47 |
if (isset($op['endpointdiscovery'])) {
|
48 |
$config = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationProvider::unwrap($this->config);
|
49 |
$isRequired = !empty($op['endpointdiscovery']['required']);
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
52 |
if (isset($op['endpointoperation'])) {
|
53 |
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\UnresolvedEndpointException('This operation is ' . 'contradictorily marked both as using endpoint discovery ' . 'and being the endpoint discovery operation. Please ' . 'verify the accuracy of your model files.');
|
54 |
}
|
47 |
if (isset($op['endpointdiscovery'])) {
|
48 |
$config = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\EndpointDiscovery\ConfigurationProvider::unwrap($this->config);
|
49 |
$isRequired = !empty($op['endpointdiscovery']['required']);
|
50 |
+
if ($isRequired && !$config->isEnabled()) {
|
51 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\UnresolvedEndpointException('This operation ' . 'requires the use of endpoint discovery, but this has ' . 'been disabled in the configuration. Enable endpoint ' . 'discovery or use a different operation.');
|
52 |
+
}
|
53 |
+
// Continue only if enabled by config
|
54 |
+
if ($config->isEnabled()) {
|
55 |
if (isset($op['endpointoperation'])) {
|
56 |
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\UnresolvedEndpointException('This operation is ' . 'contradictorily marked both as using endpoint discovery ' . 'and being the endpoint discovery operation. Please ' . 'verify the accuracy of your model files.');
|
57 |
}
|
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception;
|
4 |
|
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasDataTrait;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasMonitoringEventsTrait;
|
@@ -26,6 +27,7 @@ class AwsException extends \RuntimeException implements \DeliciousBrains\WP_Offl
|
|
26 |
private $requestId;
|
27 |
private $errorType;
|
28 |
private $errorCode;
|
|
|
29 |
private $connectionError;
|
30 |
private $transferInfo;
|
31 |
private $errorMessage;
|
@@ -45,6 +47,7 @@ class AwsException extends \RuntimeException implements \DeliciousBrains\WP_Offl
|
|
45 |
$this->requestId = isset($context['request_id']) ? $context['request_id'] : null;
|
46 |
$this->errorType = isset($context['type']) ? $context['type'] : null;
|
47 |
$this->errorCode = isset($context['code']) ? $context['code'] : null;
|
|
|
48 |
$this->connectionError = !empty($context['connection_error']);
|
49 |
$this->result = isset($context['result']) ? $context['result'] : null;
|
50 |
$this->transferInfo = isset($context['transfer_stats']) ? $context['transfer_stats'] : [];
|
@@ -158,6 +161,15 @@ class AwsException extends \RuntimeException implements \DeliciousBrains\WP_Offl
|
|
158 |
{
|
159 |
return $this->errorCode;
|
160 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
/**
|
162 |
* Get all transfer information as an associative array if no $name
|
163 |
* argument is supplied, or gets a specific transfer statistic if
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Shape;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasDataTrait;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasMonitoringEventsTrait;
|
27 |
private $requestId;
|
28 |
private $errorType;
|
29 |
private $errorCode;
|
30 |
+
private $errorShape;
|
31 |
private $connectionError;
|
32 |
private $transferInfo;
|
33 |
private $errorMessage;
|
47 |
$this->requestId = isset($context['request_id']) ? $context['request_id'] : null;
|
48 |
$this->errorType = isset($context['type']) ? $context['type'] : null;
|
49 |
$this->errorCode = isset($context['code']) ? $context['code'] : null;
|
50 |
+
$this->errorShape = isset($context['error_shape']) ? $context['error_shape'] : null;
|
51 |
$this->connectionError = !empty($context['connection_error']);
|
52 |
$this->result = isset($context['result']) ? $context['result'] : null;
|
53 |
$this->transferInfo = isset($context['transfer_stats']) ? $context['transfer_stats'] : [];
|
161 |
{
|
162 |
return $this->errorCode;
|
163 |
}
|
164 |
+
/**
|
165 |
+
* Get the AWS error shape.
|
166 |
+
*
|
167 |
+
* @return Shape|null Returns null if no response was received
|
168 |
+
*/
|
169 |
+
public function getAwsErrorShape()
|
170 |
+
{
|
171 |
+
return $this->errorShape;
|
172 |
+
}
|
173 |
/**
|
174 |
* Get all transfer information as an associative array if no $name
|
175 |
* argument is supplied, or gets a specific transfer statistic if
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This class represents exceptions related to logic surrounding client-side
|
7 |
+
* encryption usage.
|
8 |
+
*/
|
9 |
+
class CryptoException extends \RuntimeException
|
10 |
+
{
|
11 |
+
}
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class CryptoPolyfillException
|
7 |
+
* @package Aws\Exception
|
8 |
+
*/
|
9 |
+
class CryptoPolyfillException extends \RuntimeException
|
10 |
+
{
|
11 |
+
}
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception\ConfigurationException;
|
6 |
+
class Configuration implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface
|
7 |
+
{
|
8 |
+
private $mode;
|
9 |
+
private $maxAttempts;
|
10 |
+
private $validModes = ['legacy', 'standard', 'adaptive'];
|
11 |
+
public function __construct($mode = 'legacy', $maxAttempts = 3)
|
12 |
+
{
|
13 |
+
$mode = strtolower($mode);
|
14 |
+
if (!in_array($mode, $this->validModes)) {
|
15 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception\ConfigurationException("'{$mode}' is not a valid mode." . " The mode has to be 'legacy', 'standard', or 'adaptive'.");
|
16 |
+
}
|
17 |
+
if (!is_numeric($maxAttempts) || intval($maxAttempts) != $maxAttempts || $maxAttempts < 1) {
|
18 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception\ConfigurationException("The 'maxAttempts' parameter has" . " to be an integer >= 1.");
|
19 |
+
}
|
20 |
+
$this->mode = $mode;
|
21 |
+
$this->maxAttempts = intval($maxAttempts);
|
22 |
+
}
|
23 |
+
/**
|
24 |
+
* {@inheritdoc}
|
25 |
+
*/
|
26 |
+
public function getMode()
|
27 |
+
{
|
28 |
+
return $this->mode;
|
29 |
+
}
|
30 |
+
/**
|
31 |
+
* {@inheritdoc}
|
32 |
+
*/
|
33 |
+
public function getMaxAttempts()
|
34 |
+
{
|
35 |
+
return $this->maxAttempts;
|
36 |
+
}
|
37 |
+
/**
|
38 |
+
* {@inheritdoc}
|
39 |
+
*/
|
40 |
+
public function toArray()
|
41 |
+
{
|
42 |
+
return ['mode' => $this->getMode(), 'max_attempts' => $this->getMaxAttempts()];
|
43 |
+
}
|
44 |
+
}
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Provides access to retry configuration
|
7 |
+
*/
|
8 |
+
interface ConfigurationInterface
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Returns the retry mode. Available modes include 'legacy', 'standard', and
|
12 |
+
* 'adapative'.
|
13 |
+
*
|
14 |
+
* @return string
|
15 |
+
*/
|
16 |
+
public function getMode();
|
17 |
+
/**
|
18 |
+
* Returns the maximum number of attempts that will be used for a request
|
19 |
+
*
|
20 |
+
* @return string
|
21 |
+
*/
|
22 |
+
public function getMaxAttempts();
|
23 |
+
/**
|
24 |
+
* Returns the configuration as an associative array
|
25 |
+
*
|
26 |
+
* @return array
|
27 |
+
*/
|
28 |
+
public function toArray();
|
29 |
+
}
|
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\AbstractConfigurationProvider;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ConfigurationProviderInterface;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception\ConfigurationException;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\PromiseInterface;
|
11 |
+
/**
|
12 |
+
* A configuration provider is a function that returns a promise that is
|
13 |
+
* fulfilled with a {@see \Aws\Retry\ConfigurationInterface}
|
14 |
+
* or rejected with an {@see \Aws\Retry\Exception\ConfigurationException}.
|
15 |
+
*
|
16 |
+
* <code>
|
17 |
+
* use Aws\Sts\RegionalEndpoints\ConfigurationProvider;
|
18 |
+
* $provider = ConfigurationProvider::defaultProvider();
|
19 |
+
* // Returns a ConfigurationInterface or throws.
|
20 |
+
* $config = $provider()->wait();
|
21 |
+
* </code>
|
22 |
+
*
|
23 |
+
* Configuration providers can be composed to create configuration using
|
24 |
+
* conditional logic that can create different configurations in different
|
25 |
+
* environments. You can compose multiple providers into a single provider using
|
26 |
+
* {@see \Aws\Retry\ConfigurationProvider::chain}. This function
|
27 |
+
* accepts providers as variadic arguments and returns a new function that will
|
28 |
+
* invoke each provider until a successful configuration is returned.
|
29 |
+
*
|
30 |
+
* <code>
|
31 |
+
* // First try an INI file at this location.
|
32 |
+
* $a = ConfigurationProvider::ini(null, '/path/to/file.ini');
|
33 |
+
* // Then try an INI file at this location.
|
34 |
+
* $b = ConfigurationProvider::ini(null, '/path/to/other-file.ini');
|
35 |
+
* // Then try loading from environment variables.
|
36 |
+
* $c = ConfigurationProvider::env();
|
37 |
+
* // Combine the three providers together.
|
38 |
+
* $composed = ConfigurationProvider::chain($a, $b, $c);
|
39 |
+
* // Returns a promise that is fulfilled with a configuration or throws.
|
40 |
+
* $promise = $composed();
|
41 |
+
* // Wait on the configuration to resolve.
|
42 |
+
* $config = $promise->wait();
|
43 |
+
* </code>
|
44 |
+
*/
|
45 |
+
class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AbstractConfigurationProvider implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\ConfigurationProviderInterface
|
46 |
+
{
|
47 |
+
const DEFAULT_MAX_ATTEMPTS = 3;
|
48 |
+
const DEFAULT_MODE = 'legacy';
|
49 |
+
const ENV_MAX_ATTEMPTS = 'AWS_MAX_ATTEMPTS';
|
50 |
+
const ENV_MODE = 'AWS_RETRY_MODE';
|
51 |
+
const ENV_PROFILE = 'AWS_PROFILE';
|
52 |
+
const INI_MAX_ATTEMPTS = 'max_attempts';
|
53 |
+
const INI_MODE = 'retry_mode';
|
54 |
+
public static $cacheKey = 'aws_retries_config';
|
55 |
+
protected static $interfaceClass = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface::class;
|
56 |
+
protected static $exceptionClass = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception\ConfigurationException::class;
|
57 |
+
/**
|
58 |
+
* Create a default config provider that first checks for environment
|
59 |
+
* variables, then checks for a specified profile in the environment-defined
|
60 |
+
* config file location (env variable is 'AWS_CONFIG_FILE', file location
|
61 |
+
* defaults to ~/.aws/config), then checks for the "default" profile in the
|
62 |
+
* environment-defined config file location, and failing those uses a default
|
63 |
+
* fallback set of configuration options.
|
64 |
+
*
|
65 |
+
* This provider is automatically wrapped in a memoize function that caches
|
66 |
+
* previously provided config options.
|
67 |
+
*
|
68 |
+
* @param array $config
|
69 |
+
*
|
70 |
+
* @return callable
|
71 |
+
*/
|
72 |
+
public static function defaultProvider(array $config = [])
|
73 |
+
{
|
74 |
+
$configProviders = [self::env()];
|
75 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
76 |
+
$configProviders[] = self::ini();
|
77 |
+
}
|
78 |
+
$configProviders[] = self::fallback();
|
79 |
+
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
80 |
+
if (isset($config['retries']) && $config['retries'] instanceof CacheInterface) {
|
81 |
+
return self::cache($memo, $config['retries'], self::$cacheKey);
|
82 |
+
}
|
83 |
+
return $memo;
|
84 |
+
}
|
85 |
+
/**
|
86 |
+
* Provider that creates config from environment variables.
|
87 |
+
*
|
88 |
+
* @return callable
|
89 |
+
*/
|
90 |
+
public static function env()
|
91 |
+
{
|
92 |
+
return function () {
|
93 |
+
// Use config from environment variables, if available
|
94 |
+
$mode = getenv(self::ENV_MODE);
|
95 |
+
$maxAttempts = getenv(self::ENV_MAX_ATTEMPTS) ? getenv(self::ENV_MAX_ATTEMPTS) : self::DEFAULT_MAX_ATTEMPTS;
|
96 |
+
if (!empty($mode)) {
|
97 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Configuration($mode, $maxAttempts));
|
98 |
+
}
|
99 |
+
return self::reject('Could not find environment variable config' . ' in ' . self::ENV_MODE);
|
100 |
+
};
|
101 |
+
}
|
102 |
+
/**
|
103 |
+
* Fallback config options when other sources are not set.
|
104 |
+
*
|
105 |
+
* @return callable
|
106 |
+
*/
|
107 |
+
public static function fallback()
|
108 |
+
{
|
109 |
+
return function () {
|
110 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Configuration(self::DEFAULT_MODE, self::DEFAULT_MAX_ATTEMPTS));
|
111 |
+
};
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* Config provider that creates config using a config file whose location
|
115 |
+
* is specified by an environment variable 'AWS_CONFIG_FILE', defaulting to
|
116 |
+
* ~/.aws/config if not specified
|
117 |
+
*
|
118 |
+
* @param string|null $profile Profile to use. If not specified will use
|
119 |
+
* the "default" profile.
|
120 |
+
* @param string|null $filename If provided, uses a custom filename rather
|
121 |
+
* than looking in the default directory.
|
122 |
+
*
|
123 |
+
* @return callable
|
124 |
+
*/
|
125 |
+
public static function ini($profile = null, $filename = null)
|
126 |
+
{
|
127 |
+
$filename = $filename ?: self::getDefaultConfigFilename();
|
128 |
+
$profile = $profile ?: (getenv(self::ENV_PROFILE) ?: 'default');
|
129 |
+
return function () use($profile, $filename) {
|
130 |
+
if (!is_readable($filename)) {
|
131 |
+
return self::reject("Cannot read configuration from {$filename}");
|
132 |
+
}
|
133 |
+
$data = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\parse_ini_file($filename, true);
|
134 |
+
if ($data === false) {
|
135 |
+
return self::reject("Invalid config file: {$filename}");
|
136 |
+
}
|
137 |
+
if (!isset($data[$profile])) {
|
138 |
+
return self::reject("'{$profile}' not found in config file");
|
139 |
+
}
|
140 |
+
if (!isset($data[$profile][self::INI_MODE])) {
|
141 |
+
return self::reject("Required retry config values\n not present in INI profile '{$profile}' ({$filename})");
|
142 |
+
}
|
143 |
+
$maxAttempts = isset($data[$profile][self::INI_MAX_ATTEMPTS]) ? $data[$profile][self::INI_MAX_ATTEMPTS] : self::DEFAULT_MAX_ATTEMPTS;
|
144 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Configuration($data[$profile][self::INI_MODE], $maxAttempts));
|
145 |
+
};
|
146 |
+
}
|
147 |
+
/**
|
148 |
+
* Unwraps a configuration object in whatever valid form it is in,
|
149 |
+
* always returning a ConfigurationInterface object.
|
150 |
+
*
|
151 |
+
* @param mixed $config
|
152 |
+
* @return ConfigurationInterface
|
153 |
+
* @throws \InvalidArgumentException
|
154 |
+
*/
|
155 |
+
public static function unwrap($config)
|
156 |
+
{
|
157 |
+
if (is_callable($config)) {
|
158 |
+
$config = $config();
|
159 |
+
}
|
160 |
+
if ($config instanceof PromiseInterface) {
|
161 |
+
$config = $config->wait();
|
162 |
+
}
|
163 |
+
if ($config instanceof ConfigurationInterface) {
|
164 |
+
return $config;
|
165 |
+
}
|
166 |
+
// An integer value for this config indicates the legacy 'retries'
|
167 |
+
// config option, which is incremented to translate to max attempts
|
168 |
+
if (is_int($config)) {
|
169 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Configuration('legacy', $config + 1);
|
170 |
+
}
|
171 |
+
if (is_array($config) && isset($config['mode'])) {
|
172 |
+
$maxAttempts = isset($config['max_attempts']) ? $config['max_attempts'] : self::DEFAULT_MAX_ATTEMPTS;
|
173 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Configuration($config['mode'], $maxAttempts);
|
174 |
+
}
|
175 |
+
throw new \InvalidArgumentException('Not a valid retry configuration' . ' argument.');
|
176 |
+
}
|
177 |
+
}
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\Exception;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasMonitoringEventsTrait;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\MonitoringEventsInterface;
|
7 |
+
/**
|
8 |
+
* Represents an error interacting with retry configuration
|
9 |
+
*/
|
10 |
+
class ConfigurationException extends \RuntimeException implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\MonitoringEventsInterface
|
11 |
+
{
|
12 |
+
use HasMonitoringEventsTrait;
|
13 |
+
}
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface;
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
class QuotaManager
|
11 |
+
{
|
12 |
+
private $availableCapacity;
|
13 |
+
private $capacityAmount;
|
14 |
+
private $initialRetryTokens;
|
15 |
+
private $maxCapacity;
|
16 |
+
private $noRetryIncrement;
|
17 |
+
private $retryCost;
|
18 |
+
private $timeoutRetryCost;
|
19 |
+
public function __construct($config = [])
|
20 |
+
{
|
21 |
+
$this->initialRetryTokens = isset($config['initial_retry_tokens']) ? $config['initial_retry_tokens'] : 500;
|
22 |
+
$this->noRetryIncrement = isset($config['no_retry_increment']) ? $config['no_retry_increment'] : 1;
|
23 |
+
$this->retryCost = isset($config['retry_cost']) ? $config['retry_cost'] : 5;
|
24 |
+
$this->timeoutRetryCost = isset($config['timeout_retry_cost']) ? $config['timeout_retry_cost'] : 10;
|
25 |
+
$this->maxCapacity = $this->initialRetryTokens;
|
26 |
+
$this->availableCapacity = $this->initialRetryTokens;
|
27 |
+
}
|
28 |
+
public function hasRetryQuota($result)
|
29 |
+
{
|
30 |
+
if ($result instanceof AwsException && $result->isConnectionError()) {
|
31 |
+
$this->capacityAmount = $this->timeoutRetryCost;
|
32 |
+
} else {
|
33 |
+
$this->capacityAmount = $this->retryCost;
|
34 |
+
}
|
35 |
+
if ($this->capacityAmount > $this->availableCapacity) {
|
36 |
+
return false;
|
37 |
+
}
|
38 |
+
$this->availableCapacity -= $this->capacityAmount;
|
39 |
+
return true;
|
40 |
+
}
|
41 |
+
public function releaseToQuota($result)
|
42 |
+
{
|
43 |
+
if ($result instanceof AwsException) {
|
44 |
+
$statusCode = (int) $result->getStatusCode();
|
45 |
+
} elseif ($result instanceof ResultInterface) {
|
46 |
+
$statusCode = isset($result['@metadata']['statusCode']) ? (int) $result['@metadata']['statusCode'] : null;
|
47 |
+
}
|
48 |
+
if (!empty($statusCode) && $statusCode >= 200 && $statusCode < 300) {
|
49 |
+
if (isset($this->capacityAmount)) {
|
50 |
+
$amount = $this->capacityAmount;
|
51 |
+
$this->availableCapacity += $amount;
|
52 |
+
unset($this->capacityAmount);
|
53 |
+
} else {
|
54 |
+
$amount = $this->noRetryIncrement;
|
55 |
+
$this->availableCapacity += $amount;
|
56 |
+
}
|
57 |
+
$this->availableCapacity = min($this->availableCapacity, $this->maxCapacity);
|
58 |
+
}
|
59 |
+
return isset($amount) ? $amount : 0;
|
60 |
+
}
|
61 |
+
public function getAvailableCapacity()
|
62 |
+
{
|
63 |
+
return $this->availableCapacity;
|
64 |
+
}
|
65 |
+
}
|
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @internal
|
7 |
+
*/
|
8 |
+
class RateLimiter
|
9 |
+
{
|
10 |
+
// User-configurable constants
|
11 |
+
private $beta;
|
12 |
+
private $minCapacity;
|
13 |
+
private $minFillRate;
|
14 |
+
private $scaleConstant;
|
15 |
+
private $smooth;
|
16 |
+
// Optional callable time provider
|
17 |
+
private $timeProvider;
|
18 |
+
// Pre-set state variables
|
19 |
+
private $currentCapacity = 0;
|
20 |
+
private $enabled = false;
|
21 |
+
private $lastMaxRate = 0;
|
22 |
+
private $measuredTxRate = 0;
|
23 |
+
private $requestCount = 0;
|
24 |
+
// Other state variables
|
25 |
+
private $fillRate;
|
26 |
+
private $lastThrottleTime;
|
27 |
+
private $lastTimestamp;
|
28 |
+
private $lastTxRateBucket;
|
29 |
+
private $maxCapacity;
|
30 |
+
private $timeWindow;
|
31 |
+
public function __construct($options = [])
|
32 |
+
{
|
33 |
+
$this->beta = isset($options['beta']) ? $options['beta'] : 0.7;
|
34 |
+
$this->minCapacity = isset($options['min_capacity']) ? $options['min_capacity'] : 1;
|
35 |
+
$this->minFillRate = isset($options['min_fill_rate']) ? $options['min_fill_rate'] : 0.5;
|
36 |
+
$this->scaleConstant = isset($options['scale_constant']) ? $options['scale_constant'] : 0.4;
|
37 |
+
$this->smooth = isset($options['smooth']) ? $options['smooth'] : 0.8;
|
38 |
+
$this->timeProvider = isset($options['time_provider']) ? $options['time_provider'] : null;
|
39 |
+
$this->lastTxRateBucket = floor($this->time());
|
40 |
+
$this->lastThrottleTime = $this->time();
|
41 |
+
}
|
42 |
+
public function isEnabled()
|
43 |
+
{
|
44 |
+
return $this->enabled;
|
45 |
+
}
|
46 |
+
public function getSendToken()
|
47 |
+
{
|
48 |
+
$this->acquireToken(1);
|
49 |
+
}
|
50 |
+
public function updateSendingRate($isThrottled)
|
51 |
+
{
|
52 |
+
$this->updateMeasuredRate();
|
53 |
+
if ($isThrottled) {
|
54 |
+
if (!$this->isEnabled()) {
|
55 |
+
$rateToUse = $this->measuredTxRate;
|
56 |
+
} else {
|
57 |
+
$rateToUse = min($this->measuredTxRate, $this->fillRate);
|
58 |
+
}
|
59 |
+
$this->lastMaxRate = $rateToUse;
|
60 |
+
$this->calculateTimeWindow();
|
61 |
+
$this->lastThrottleTime = $this->time();
|
62 |
+
$calculatedRate = $this->cubicThrottle($rateToUse);
|
63 |
+
$this->enableTokenBucket();
|
64 |
+
} else {
|
65 |
+
$this->calculateTimeWindow();
|
66 |
+
$calculatedRate = $this->cubicSuccess($this->time());
|
67 |
+
}
|
68 |
+
$newRate = min($calculatedRate, 2 * $this->measuredTxRate);
|
69 |
+
$this->updateTokenBucketRate($newRate);
|
70 |
+
return $newRate;
|
71 |
+
}
|
72 |
+
private function acquireToken($amount)
|
73 |
+
{
|
74 |
+
if (!$this->enabled) {
|
75 |
+
return true;
|
76 |
+
}
|
77 |
+
$this->refillTokenBucket();
|
78 |
+
if ($amount > $this->currentCapacity) {
|
79 |
+
usleep(1000000 * ($amount - $this->currentCapacity) / $this->fillRate);
|
80 |
+
}
|
81 |
+
$this->currentCapacity -= $amount;
|
82 |
+
return true;
|
83 |
+
}
|
84 |
+
private function calculateTimeWindow()
|
85 |
+
{
|
86 |
+
$this->timeWindow = pow($this->lastMaxRate * (1 - $this->beta) / $this->scaleConstant, 0.333);
|
87 |
+
}
|
88 |
+
private function cubicSuccess($timestamp)
|
89 |
+
{
|
90 |
+
$dt = $timestamp - $this->lastThrottleTime;
|
91 |
+
return $this->scaleConstant * pow($dt - $this->timeWindow, 3) + $this->lastMaxRate;
|
92 |
+
}
|
93 |
+
private function cubicThrottle($rateToUse)
|
94 |
+
{
|
95 |
+
return $rateToUse * $this->beta;
|
96 |
+
}
|
97 |
+
private function enableTokenBucket()
|
98 |
+
{
|
99 |
+
$this->enabled = true;
|
100 |
+
}
|
101 |
+
private function refillTokenBucket()
|
102 |
+
{
|
103 |
+
$timestamp = $this->time();
|
104 |
+
if (!isset($this->lastTimestamp)) {
|
105 |
+
$this->lastTimestamp = $timestamp;
|
106 |
+
return;
|
107 |
+
}
|
108 |
+
$fillAmount = ($timestamp - $this->lastTimestamp) * $this->fillRate;
|
109 |
+
$this->currentCapacity = $this->currentCapacity + $fillAmount;
|
110 |
+
if (!is_null($this->maxCapacity)) {
|
111 |
+
$this->currentCapacity = min($this->maxCapacity, $this->currentCapacity);
|
112 |
+
}
|
113 |
+
$this->lastTimestamp = $timestamp;
|
114 |
+
}
|
115 |
+
private function time()
|
116 |
+
{
|
117 |
+
if (is_callable($this->timeProvider)) {
|
118 |
+
$provider = $this->timeProvider;
|
119 |
+
$time = $provider();
|
120 |
+
return $time;
|
121 |
+
}
|
122 |
+
return microtime(true);
|
123 |
+
}
|
124 |
+
private function updateMeasuredRate()
|
125 |
+
{
|
126 |
+
$timestamp = $this->time();
|
127 |
+
$timeBucket = floor(round($timestamp, 3) * 2) / 2;
|
128 |
+
$this->requestCount++;
|
129 |
+
if ($timeBucket > $this->lastTxRateBucket) {
|
130 |
+
$currentRate = $this->requestCount / ($timeBucket - $this->lastTxRateBucket);
|
131 |
+
$this->measuredTxRate = $currentRate * $this->smooth + $this->measuredTxRate * (1 - $this->smooth);
|
132 |
+
$this->requestCount = 0;
|
133 |
+
$this->lastTxRateBucket = $timeBucket;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
private function updateTokenBucketRate($newRps)
|
137 |
+
{
|
138 |
+
$this->refillTokenBucket();
|
139 |
+
$this->fillRate = max($newRps, $this->minFillRate);
|
140 |
+
$this->maxCapacity = max($newRps, $this->minCapacity);
|
141 |
+
$this->currentCapacity = min($this->currentCapacity, $this->maxCapacity);
|
142 |
+
}
|
143 |
+
}
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface;
|
7 |
+
trait RetryHelperTrait
|
8 |
+
{
|
9 |
+
private function addRetryHeader($request, $retries, $delayBy)
|
10 |
+
{
|
11 |
+
return $request->withHeader('aws-sdk-retry', "{$retries}/{$delayBy}");
|
12 |
+
}
|
13 |
+
private function updateStats($retries, $delay, array &$stats)
|
14 |
+
{
|
15 |
+
if (!isset($stats['total_retry_delay'])) {
|
16 |
+
$stats['total_retry_delay'] = 0;
|
17 |
+
}
|
18 |
+
$stats['total_retry_delay'] += $delay;
|
19 |
+
$stats['retries_attempted'] = $retries;
|
20 |
+
}
|
21 |
+
private function updateHttpStats($value, array &$stats)
|
22 |
+
{
|
23 |
+
if (empty($stats['http'])) {
|
24 |
+
$stats['http'] = [];
|
25 |
+
}
|
26 |
+
if ($value instanceof AwsException) {
|
27 |
+
$resultStats = $value->getTransferInfo();
|
28 |
+
$stats['http'][] = $resultStats;
|
29 |
+
} elseif ($value instanceof ResultInterface) {
|
30 |
+
$resultStats = isset($value['@metadata']['transferStats']['http'][0]) ? $value['@metadata']['transferStats']['http'][0] : [];
|
31 |
+
$stats['http'][] = $resultStats;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
private function bindStatsToReturn($return, array $stats)
|
35 |
+
{
|
36 |
+
if ($return instanceof ResultInterface) {
|
37 |
+
if (!isset($return['@metadata'])) {
|
38 |
+
$return['@metadata'] = [];
|
39 |
+
}
|
40 |
+
$return['@metadata']['transferStats'] = $stats;
|
41 |
+
} elseif ($return instanceof AwsException) {
|
42 |
+
$return->setTransferInfo($stats);
|
43 |
+
}
|
44 |
+
return $return;
|
45 |
+
}
|
46 |
+
}
|
@@ -3,15 +3,19 @@
|
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
|
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Exception\RequestException;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\PromiseInterface;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
10 |
/**
|
11 |
-
*
|
|
|
|
|
12 |
*/
|
13 |
class RetryMiddleware
|
14 |
{
|
|
|
15 |
private static $retryStatusCodes = [500 => true, 502 => true, 503 => true, 504 => true];
|
16 |
private static $retryCodes = [
|
17 |
// Throttling error
|
@@ -41,7 +45,7 @@ class RetryMiddleware
|
|
41 |
/**
|
42 |
* Creates a default AWS retry decider function.
|
43 |
*
|
44 |
-
* The optional $
|
45 |
* that specifies additional retry conditions on top of the ones specified
|
46 |
* by default by the Aws\RetryMiddleware class, with the following keys:
|
47 |
*
|
@@ -53,19 +57,19 @@ class RetryMiddleware
|
|
53 |
* these should be valid Curl constants. Optional.
|
54 |
*
|
55 |
* @param int $maxRetries
|
56 |
-
* @param array $
|
57 |
* @return callable
|
58 |
*/
|
59 |
-
public static function createDefaultDecider($maxRetries = 3, $
|
60 |
{
|
61 |
$retryCurlErrors = [];
|
62 |
if (extension_loaded('curl')) {
|
63 |
$retryCurlErrors[CURLE_RECV_ERROR] = true;
|
64 |
}
|
65 |
-
return function ($retries, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface $result = null, $error = null) use($maxRetries, $retryCurlErrors, $
|
66 |
// Allow command-level options to override this value
|
67 |
$maxRetries = null !== $command['@retries'] ? $command['@retries'] : $maxRetries;
|
68 |
-
$isRetryable = self::isRetryable($result, $error, $retryCurlErrors, $
|
69 |
if ($retries >= $maxRetries) {
|
70 |
if (!empty($error) && $error instanceof AwsException && $isRetryable) {
|
71 |
$error->setMaxRetriesExceeded();
|
@@ -75,22 +79,22 @@ class RetryMiddleware
|
|
75 |
return $isRetryable;
|
76 |
};
|
77 |
}
|
78 |
-
private static function isRetryable($result, $error, $retryCurlErrors, $
|
79 |
{
|
80 |
$errorCodes = self::$retryCodes;
|
81 |
-
if (!empty($
|
82 |
-
foreach ($
|
83 |
$errorCodes[$code] = true;
|
84 |
}
|
85 |
}
|
86 |
$statusCodes = self::$retryStatusCodes;
|
87 |
-
if (!empty($
|
88 |
-
foreach ($
|
89 |
$statusCodes[$code] = true;
|
90 |
}
|
91 |
}
|
92 |
-
if (!empty($
|
93 |
-
foreach ($
|
94 |
$retryCurlErrors[$code] = true;
|
95 |
}
|
96 |
}
|
@@ -184,41 +188,4 @@ class RetryMiddleware
|
|
184 |
};
|
185 |
return $handler($command, $request)->then($g, $g);
|
186 |
}
|
187 |
-
private function addRetryHeader($request, $retries, $delayBy)
|
188 |
-
{
|
189 |
-
return $request->withHeader('aws-sdk-retry', "{$retries}/{$delayBy}");
|
190 |
-
}
|
191 |
-
private function updateStats($retries, $delay, array &$stats)
|
192 |
-
{
|
193 |
-
if (!isset($stats['total_retry_delay'])) {
|
194 |
-
$stats['total_retry_delay'] = 0;
|
195 |
-
}
|
196 |
-
$stats['total_retry_delay'] += $delay;
|
197 |
-
$stats['retries_attempted'] = $retries;
|
198 |
-
}
|
199 |
-
private function updateHttpStats($value, array &$stats)
|
200 |
-
{
|
201 |
-
if (empty($stats['http'])) {
|
202 |
-
$stats['http'] = [];
|
203 |
-
}
|
204 |
-
if ($value instanceof AwsException) {
|
205 |
-
$resultStats = isset($value->getTransferInfo('http')[0]) ? $value->getTransferInfo('http')[0] : [];
|
206 |
-
$stats['http'][] = $resultStats;
|
207 |
-
} elseif ($value instanceof ResultInterface) {
|
208 |
-
$resultStats = isset($value['@metadata']['transferStats']['http'][0]) ? $value['@metadata']['transferStats']['http'][0] : [];
|
209 |
-
$stats['http'][] = $resultStats;
|
210 |
-
}
|
211 |
-
}
|
212 |
-
private function bindStatsToReturn($return, array $stats)
|
213 |
-
{
|
214 |
-
if ($return instanceof ResultInterface) {
|
215 |
-
if (!isset($return['@metadata'])) {
|
216 |
-
$return['@metadata'] = [];
|
217 |
-
}
|
218 |
-
$return['@metadata']['transferStats'] = $stats;
|
219 |
-
} elseif ($return instanceof AwsException) {
|
220 |
-
$return->setTransferInfo($stats);
|
221 |
-
}
|
222 |
-
return $return;
|
223 |
-
}
|
224 |
}
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\RetryHelperTrait;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Exception\RequestException;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\PromiseInterface;
|
10 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
11 |
/**
|
12 |
+
* Middleware that retries failures. V1 implemention that supports 'legacy' mode.
|
13 |
+
*
|
14 |
+
* @internal
|
15 |
*/
|
16 |
class RetryMiddleware
|
17 |
{
|
18 |
+
use RetryHelperTrait;
|
19 |
private static $retryStatusCodes = [500 => true, 502 => true, 503 => true, 504 => true];
|
20 |
private static $retryCodes = [
|
21 |
// Throttling error
|
45 |
/**
|
46 |
* Creates a default AWS retry decider function.
|
47 |
*
|
48 |
+
* The optional $extraConfig parameter is an associative array
|
49 |
* that specifies additional retry conditions on top of the ones specified
|
50 |
* by default by the Aws\RetryMiddleware class, with the following keys:
|
51 |
*
|
57 |
* these should be valid Curl constants. Optional.
|
58 |
*
|
59 |
* @param int $maxRetries
|
60 |
+
* @param array $extraConfig
|
61 |
* @return callable
|
62 |
*/
|
63 |
+
public static function createDefaultDecider($maxRetries = 3, $extraConfig = [])
|
64 |
{
|
65 |
$retryCurlErrors = [];
|
66 |
if (extension_loaded('curl')) {
|
67 |
$retryCurlErrors[CURLE_RECV_ERROR] = true;
|
68 |
}
|
69 |
+
return function ($retries, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface $result = null, $error = null) use($maxRetries, $retryCurlErrors, $extraConfig) {
|
70 |
// Allow command-level options to override this value
|
71 |
$maxRetries = null !== $command['@retries'] ? $command['@retries'] : $maxRetries;
|
72 |
+
$isRetryable = self::isRetryable($result, $error, $retryCurlErrors, $extraConfig);
|
73 |
if ($retries >= $maxRetries) {
|
74 |
if (!empty($error) && $error instanceof AwsException && $isRetryable) {
|
75 |
$error->setMaxRetriesExceeded();
|
79 |
return $isRetryable;
|
80 |
};
|
81 |
}
|
82 |
+
private static function isRetryable($result, $error, $retryCurlErrors, $extraConfig = [])
|
83 |
{
|
84 |
$errorCodes = self::$retryCodes;
|
85 |
+
if (!empty($extraConfig['error_codes']) && is_array($extraConfig['error_codes'])) {
|
86 |
+
foreach ($extraConfig['error_codes'] as $code) {
|
87 |
$errorCodes[$code] = true;
|
88 |
}
|
89 |
}
|
90 |
$statusCodes = self::$retryStatusCodes;
|
91 |
+
if (!empty($extraConfig['status_codes']) && is_array($extraConfig['status_codes'])) {
|
92 |
+
foreach ($extraConfig['status_codes'] as $code) {
|
93 |
$statusCodes[$code] = true;
|
94 |
}
|
95 |
}
|
96 |
+
if (!empty($extraConfig['curl_errors']) && is_array($extraConfig['curl_errors'])) {
|
97 |
+
foreach ($extraConfig['curl_errors'] as $code) {
|
98 |
$retryCurlErrors[$code] = true;
|
99 |
}
|
100 |
}
|
188 |
};
|
189 |
return $handler($command, $request)->then($g, $g);
|
190 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
}
|
@@ -0,0 +1,235 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\QuotaManager;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\RateLimiter;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\RetryHelperTrait;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Exception\RequestException;
|
11 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
12 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
13 |
+
/**
|
14 |
+
* Middleware that retries failures. V2 implementation that supports 'standard'
|
15 |
+
* and 'adaptive' modes.
|
16 |
+
*
|
17 |
+
* @internal
|
18 |
+
*/
|
19 |
+
class RetryMiddlewareV2
|
20 |
+
{
|
21 |
+
use RetryHelperTrait;
|
22 |
+
private static $standardThrottlingErrors = ['Throttling' => true, 'ThrottlingException' => true, 'ThrottledException' => true, 'RequestThrottledException' => true, 'TooManyRequestsException' => true, 'ProvisionedThroughputExceededException' => true, 'TransactionInProgressException' => true, 'RequestLimitExceeded' => true, 'BandwidthLimitExceeded' => true, 'LimitExceededException' => true, 'RequestThrottled' => true, 'SlowDown' => true, 'PriorRequestNotComplete' => true, 'EC2ThrottledException' => true];
|
23 |
+
private static $standardTransientErrors = ['RequestTimeout' => true, 'RequestTimeoutException' => true];
|
24 |
+
private static $standardTransientStatusCodes = [500 => true, 502 => true, 503 => true, 504 => true];
|
25 |
+
private $collectStats;
|
26 |
+
private $decider;
|
27 |
+
private $delayer;
|
28 |
+
private $maxAttempts;
|
29 |
+
private $maxBackoff;
|
30 |
+
private $mode;
|
31 |
+
private $nextHandler;
|
32 |
+
private $options;
|
33 |
+
private $quotaManager;
|
34 |
+
private $rateLimiter;
|
35 |
+
public static function wrap($config, $options)
|
36 |
+
{
|
37 |
+
return function (callable $handler) use($config, $options) {
|
38 |
+
return new static($config, $handler, $options);
|
39 |
+
};
|
40 |
+
}
|
41 |
+
public static function createDefaultDecider(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\QuotaManager $quotaManager, $maxAttempts = 3, $options = [])
|
42 |
+
{
|
43 |
+
$retryCurlErrors = [];
|
44 |
+
if (extension_loaded('curl')) {
|
45 |
+
$retryCurlErrors[CURLE_RECV_ERROR] = true;
|
46 |
+
}
|
47 |
+
return function ($attempts, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, $result) use($options, $quotaManager, $retryCurlErrors, $maxAttempts) {
|
48 |
+
// Release retry tokens back to quota on a successful result
|
49 |
+
$quotaManager->releaseToQuota($result);
|
50 |
+
// Allow command-level option to override this value
|
51 |
+
// # of attempts = # of retries + 1
|
52 |
+
$maxAttempts = null !== $command['@retries'] ? $command['@retries'] + 1 : $maxAttempts;
|
53 |
+
$isRetryable = self::isRetryable($result, $retryCurlErrors, $options);
|
54 |
+
if ($isRetryable) {
|
55 |
+
// Retrieve retry tokens and check if quota has been exceeded
|
56 |
+
if (!$quotaManager->hasRetryQuota($result)) {
|
57 |
+
return false;
|
58 |
+
}
|
59 |
+
if ($attempts >= $maxAttempts) {
|
60 |
+
if (!empty($result) && $result instanceof AwsException) {
|
61 |
+
$result->setMaxRetriesExceeded();
|
62 |
+
}
|
63 |
+
return false;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
return $isRetryable;
|
67 |
+
};
|
68 |
+
}
|
69 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationInterface $config, callable $handler, $options = [])
|
70 |
+
{
|
71 |
+
$this->options = $options;
|
72 |
+
$this->maxAttempts = $config->getMaxAttempts();
|
73 |
+
$this->mode = $config->getMode();
|
74 |
+
$this->nextHandler = $handler;
|
75 |
+
$this->quotaManager = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\QuotaManager();
|
76 |
+
$this->maxBackoff = isset($options['max_backoff']) ? $options['max_backoff'] : 20000;
|
77 |
+
$this->collectStats = isset($options['collect_stats']) ? (bool) $options['collect_stats'] : false;
|
78 |
+
$this->decider = isset($options['decider']) ? $options['decider'] : self::createDefaultDecider($this->quotaManager, $this->maxAttempts, $options);
|
79 |
+
$this->delayer = isset($options['delayer']) ? $options['delayer'] : function ($attempts) {
|
80 |
+
return $this->exponentialDelayWithJitter($attempts);
|
81 |
+
};
|
82 |
+
if ($this->mode === 'adaptive') {
|
83 |
+
$this->rateLimiter = isset($options['rate_limiter']) ? $options['rate_limiter'] : new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\RateLimiter();
|
84 |
+
}
|
85 |
+
}
|
86 |
+
public function __invoke(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $cmd, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $req)
|
87 |
+
{
|
88 |
+
$decider = $this->decider;
|
89 |
+
$delayer = $this->delayer;
|
90 |
+
$handler = $this->nextHandler;
|
91 |
+
$attempts = 1;
|
92 |
+
$monitoringEvents = [];
|
93 |
+
$requestStats = [];
|
94 |
+
$req = $this->addRetryHeader($req, 0, 0);
|
95 |
+
$callback = function ($value) use($handler, $cmd, $req, $decider, $delayer, &$attempts, &$requestStats, &$monitoringEvents, &$callback) {
|
96 |
+
if ($this->mode === 'adaptive') {
|
97 |
+
$this->rateLimiter->updateSendingRate($this->isThrottlingError($value));
|
98 |
+
}
|
99 |
+
$this->updateHttpStats($value, $requestStats);
|
100 |
+
if ($value instanceof MonitoringEventsInterface) {
|
101 |
+
$reversedEvents = array_reverse($monitoringEvents);
|
102 |
+
$monitoringEvents = array_merge($monitoringEvents, $value->getMonitoringEvents());
|
103 |
+
foreach ($reversedEvents as $event) {
|
104 |
+
$value->prependMonitoringEvent($event);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
if ($value instanceof \Exception || $value instanceof \Throwable) {
|
108 |
+
if (!$decider($attempts, $cmd, $value)) {
|
109 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\rejection_for($this->bindStatsToReturn($value, $requestStats));
|
110 |
+
}
|
111 |
+
} elseif ($value instanceof ResultInterface && !$decider($attempts, $cmd, $value)) {
|
112 |
+
return $this->bindStatsToReturn($value, $requestStats);
|
113 |
+
}
|
114 |
+
$delayBy = $delayer($attempts++);
|
115 |
+
$cmd['@http']['delay'] = $delayBy;
|
116 |
+
if ($this->collectStats) {
|
117 |
+
$this->updateStats($attempts - 1, $delayBy, $requestStats);
|
118 |
+
}
|
119 |
+
// Update retry header with retry count and delayBy
|
120 |
+
$req = $this->addRetryHeader($req, $attempts - 1, $delayBy);
|
121 |
+
// Get token from rate limiter, which will sleep if necessary
|
122 |
+
if ($this->mode === 'adaptive') {
|
123 |
+
$this->rateLimiter->getSendToken();
|
124 |
+
}
|
125 |
+
return $handler($cmd, $req)->then($callback, $callback);
|
126 |
+
};
|
127 |
+
// Get token from rate limiter, which will sleep if necessary
|
128 |
+
if ($this->mode === 'adaptive') {
|
129 |
+
$this->rateLimiter->getSendToken();
|
130 |
+
}
|
131 |
+
return $handler($cmd, $req)->then($callback, $callback);
|
132 |
+
}
|
133 |
+
/**
|
134 |
+
* Amount of milliseconds to delay as a function of attempt number
|
135 |
+
*
|
136 |
+
* @param $attempts
|
137 |
+
* @return mixed
|
138 |
+
*/
|
139 |
+
public function exponentialDelayWithJitter($attempts)
|
140 |
+
{
|
141 |
+
$rand = mt_rand() / mt_getrandmax();
|
142 |
+
return min(1000 * $rand * pow(2, $attempts), $this->maxBackoff);
|
143 |
+
}
|
144 |
+
private static function isRetryable($result, $retryCurlErrors, $options = [])
|
145 |
+
{
|
146 |
+
$errorCodes = self::$standardThrottlingErrors + self::$standardTransientErrors;
|
147 |
+
if (!empty($options['transient_error_codes']) && is_array($options['transient_error_codes'])) {
|
148 |
+
foreach ($options['transient_error_codes'] as $code) {
|
149 |
+
$errorCodes[$code] = true;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
if (!empty($options['throttling_error_codes']) && is_array($options['throttling_error_codes'])) {
|
153 |
+
foreach ($options['throttling_error_codes'] as $code) {
|
154 |
+
$errorCodes[$code] = true;
|
155 |
+
}
|
156 |
+
}
|
157 |
+
$statusCodes = self::$standardTransientStatusCodes;
|
158 |
+
if (!empty($options['status_codes']) && is_array($options['status_codes'])) {
|
159 |
+
foreach ($options['status_codes'] as $code) {
|
160 |
+
$statusCodes[$code] = true;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
if (!empty($options['curl_errors']) && is_array($options['curl_errors'])) {
|
164 |
+
foreach ($options['curl_errors'] as $code) {
|
165 |
+
$retryCurlErrors[$code] = true;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
if ($result instanceof \Exception || $result instanceof \Throwable) {
|
169 |
+
$isError = true;
|
170 |
+
} else {
|
171 |
+
$isError = false;
|
172 |
+
}
|
173 |
+
if (!$isError) {
|
174 |
+
if (!isset($result['@metadata']['statusCode'])) {
|
175 |
+
return false;
|
176 |
+
}
|
177 |
+
return isset($statusCodes[$result['@metadata']['statusCode']]);
|
178 |
+
}
|
179 |
+
if (!$result instanceof AwsException) {
|
180 |
+
return false;
|
181 |
+
}
|
182 |
+
if ($result->isConnectionError()) {
|
183 |
+
return true;
|
184 |
+
}
|
185 |
+
if (!empty($errorCodes[$result->getAwsErrorCode()])) {
|
186 |
+
return true;
|
187 |
+
}
|
188 |
+
if (!empty($statusCodes[$result->getStatusCode()])) {
|
189 |
+
return true;
|
190 |
+
}
|
191 |
+
if (count($retryCurlErrors) && ($previous = $result->getPrevious()) && $previous instanceof RequestException) {
|
192 |
+
if (method_exists($previous, 'getHandlerContext')) {
|
193 |
+
$context = $previous->getHandlerContext();
|
194 |
+
return !empty($context['errno']) && isset($retryCurlErrors[$context['errno']]);
|
195 |
+
}
|
196 |
+
$message = $previous->getMessage();
|
197 |
+
foreach (array_keys($retryCurlErrors) as $curlError) {
|
198 |
+
if (strpos($message, 'cURL error ' . $curlError . ':') === 0) {
|
199 |
+
return true;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
}
|
203 |
+
// Check error shape for the retryable trait
|
204 |
+
if (!empty($errorShape = $result->getAwsErrorShape())) {
|
205 |
+
$definition = $errorShape->toArray();
|
206 |
+
if (!empty($definition['retryable'])) {
|
207 |
+
return true;
|
208 |
+
}
|
209 |
+
}
|
210 |
+
return false;
|
211 |
+
}
|
212 |
+
private function isThrottlingError($result)
|
213 |
+
{
|
214 |
+
if ($result instanceof AwsException) {
|
215 |
+
// Check pre-defined throttling errors
|
216 |
+
$throttlingErrors = self::$standardThrottlingErrors;
|
217 |
+
if (!empty($this->options['throttling_error_codes']) && is_array($this->options['throttling_error_codes'])) {
|
218 |
+
foreach ($this->options['throttling_error_codes'] as $code) {
|
219 |
+
$throttlingErrors[$code] = true;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
if (!empty($result->getAwsErrorCode()) && !empty($throttlingErrors[$result->getAwsErrorCode()])) {
|
223 |
+
return true;
|
224 |
+
}
|
225 |
+
// Check error shape for the throttling trait
|
226 |
+
if (!empty($errorShape = $result->getAwsErrorShape())) {
|
227 |
+
$definition = $errorShape->toArray();
|
228 |
+
if (!empty($definition['retryable']['throttling'])) {
|
229 |
+
return true;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|
233 |
+
return false;
|
234 |
+
}
|
235 |
+
}
|
@@ -3,6 +3,7 @@
|
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\AbstractParser;
|
|
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\StructureShape;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
@@ -15,7 +16,7 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\StreamInterface;
|
|
15 |
*/
|
16 |
class AmbiguousSuccessParser extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\AbstractParser
|
17 |
{
|
18 |
-
private static $ambiguousSuccesses = ['UploadPartCopy' => true, 'CopyObject' => true, 'CompleteMultipartUpload' => true];
|
19 |
/** @var callable */
|
20 |
private $errorParser;
|
21 |
/** @var string */
|
@@ -30,7 +31,11 @@ class AmbiguousSuccessParser extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\
|
|
30 |
{
|
31 |
if (200 === $response->getStatusCode() && isset(self::$ambiguousSuccesses[$command->getName()])) {
|
32 |
$errorParser = $this->errorParser;
|
33 |
-
|
|
|
|
|
|
|
|
|
34 |
if (isset($parsed['code']) && isset($parsed['message'])) {
|
35 |
throw new $this->exceptionClass($parsed['message'], $command, ['connection_error' => true]);
|
36 |
}
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\AbstractParser;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\Exception\ParserException;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\StructureShape;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
16 |
*/
|
17 |
class AmbiguousSuccessParser extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Parser\AbstractParser
|
18 |
{
|
19 |
+
private static $ambiguousSuccesses = ['UploadPart' => true, 'UploadPartCopy' => true, 'CopyObject' => true, 'CompleteMultipartUpload' => true];
|
20 |
/** @var callable */
|
21 |
private $errorParser;
|
22 |
/** @var string */
|
31 |
{
|
32 |
if (200 === $response->getStatusCode() && isset(self::$ambiguousSuccesses[$command->getName()])) {
|
33 |
$errorParser = $this->errorParser;
|
34 |
+
try {
|
35 |
+
$parsed = $errorParser($response);
|
36 |
+
} catch (ParserException $e) {
|
37 |
+
$parsed = ['code' => 'ConnectionError', 'message' => "An error connecting to the service occurred" . " while performing the " . $command->getName() . " operation."];
|
38 |
+
}
|
39 |
if (isset($parsed['code']) && isset($parsed['message'])) {
|
40 |
throw new $this->exceptionClass($parsed['message'], $command, ['connection_error' => true]);
|
41 |
}
|
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
|
|
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
@@ -14,22 +16,25 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
|
14 |
*/
|
15 |
class ApplyChecksumMiddleware
|
16 |
{
|
17 |
-
private static $md5 = ['DeleteObjects', 'PutBucketCors', 'PutBucketLifecycle', 'PutBucketLifecycleConfiguration', 'PutBucketPolicy', 'PutBucketTagging', 'PutBucketReplication', 'PutObjectLegalHold', 'PutObjectRetention', 'PutObjectLockConfiguration'];
|
18 |
private static $sha256 = ['PutObject', 'UploadPart'];
|
|
|
|
|
19 |
private $nextHandler;
|
20 |
/**
|
21 |
* Create a middleware wrapper function.
|
22 |
*
|
|
|
23 |
* @return callable
|
24 |
*/
|
25 |
-
public static function wrap()
|
26 |
{
|
27 |
-
return function (callable $handler) {
|
28 |
-
return new self($handler);
|
29 |
};
|
30 |
}
|
31 |
-
public function __construct(callable $nextHandler)
|
32 |
{
|
|
|
33 |
$this->nextHandler = $nextHandler;
|
34 |
}
|
35 |
public function __invoke(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request)
|
@@ -37,7 +42,8 @@ class ApplyChecksumMiddleware
|
|
37 |
$next = $this->nextHandler;
|
38 |
$name = $command->getName();
|
39 |
$body = $request->getBody();
|
40 |
-
|
|
|
41 |
// Set the content MD5 header for operations that require it.
|
42 |
$request = $request->withHeader('Content-MD5', base64_encode(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\hash($body, 'md5', true)));
|
43 |
} elseif (in_array($name, self::$sha256) && $command['ContentSHA256']) {
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\ApiProvider;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Service;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
16 |
*/
|
17 |
class ApplyChecksumMiddleware
|
18 |
{
|
|
|
19 |
private static $sha256 = ['PutObject', 'UploadPart'];
|
20 |
+
/** @var Service */
|
21 |
+
private $api;
|
22 |
private $nextHandler;
|
23 |
/**
|
24 |
* Create a middleware wrapper function.
|
25 |
*
|
26 |
+
* @param Service $api
|
27 |
* @return callable
|
28 |
*/
|
29 |
+
public static function wrap(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Service $api)
|
30 |
{
|
31 |
+
return function (callable $handler) use($api) {
|
32 |
+
return new self($handler, $api);
|
33 |
};
|
34 |
}
|
35 |
+
public function __construct(callable $nextHandler, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Api\Service $api)
|
36 |
{
|
37 |
+
$this->api = $api;
|
38 |
$this->nextHandler = $nextHandler;
|
39 |
}
|
40 |
public function __invoke(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request)
|
42 |
$next = $this->nextHandler;
|
43 |
$name = $command->getName();
|
44 |
$body = $request->getBody();
|
45 |
+
$op = $this->api->getOperation($command->getName());
|
46 |
+
if (!empty($op['httpChecksumRequired']) && !$request->hasHeader('Content-MD5')) {
|
47 |
// Set the content MD5 header for operations that require it.
|
48 |
$request = $request->withHeader('Content-MD5', base64_encode(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\hash($body, 'md5', true)));
|
49 |
} elseif (in_array($name, self::$sha256) && $command['ContentSHA256']) {
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProviderInterfaceV2;
|
6 |
+
trait CryptoParamsTraitV2
|
7 |
+
{
|
8 |
+
use CryptoParamsTrait;
|
9 |
+
protected function getMaterialsProvider(array $args)
|
10 |
+
{
|
11 |
+
if ($args['@MaterialsProvider'] instanceof MaterialsProviderInterfaceV2) {
|
12 |
+
return $args['@MaterialsProvider'];
|
13 |
+
}
|
14 |
+
throw new \InvalidArgumentException('An instance of MaterialsProviderInterfaceV2' . ' must be passed in the "MaterialsProvider" field.');
|
15 |
+
}
|
16 |
+
}
|
@@ -7,7 +7,7 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope;
|
|
7 |
class HeadersMetadataStrategy implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataStrategyInterface
|
8 |
{
|
9 |
/**
|
10 |
-
* Places the information in the MetadataEnvelope in to the
|
11 |
* the PutObject request of the encrypted object.
|
12 |
*
|
13 |
* @param MetadataEnvelope $envelope Encryption data to save according to
|
@@ -25,7 +25,7 @@ class HeadersMetadataStrategy implements \DeliciousBrains\WP_Offload_Media\Aws3\
|
|
25 |
return $args;
|
26 |
}
|
27 |
/**
|
28 |
-
* Generates a MetadataEnvelope according to the
|
29 |
* GetObject result.
|
30 |
*
|
31 |
* @param array $args Arguments from Command and Result that contains
|
7 |
class HeadersMetadataStrategy implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataStrategyInterface
|
8 |
{
|
9 |
/**
|
10 |
+
* Places the information in the MetadataEnvelope in to the metadata for
|
11 |
* the PutObject request of the encrypted object.
|
12 |
*
|
13 |
* @param MetadataEnvelope $envelope Encryption data to save according to
|
25 |
return $args;
|
26 |
}
|
27 |
/**
|
28 |
+
* Generates a MetadataEnvelope according to the metadata headers from the
|
29 |
* GetObject result.
|
30 |
*
|
31 |
* @param array $args Arguments from Command and Result that contains
|
@@ -2,11 +2,11 @@
|
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
|
|
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HashingStream;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\PhpHash;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClient;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\EncryptionTrait;
|
9 |
-
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\DecryptionTrait;
|
10 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope;
|
11 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProvider;
|
12 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherBuilderTrait;
|
@@ -17,10 +17,25 @@ use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
|
17 |
/**
|
18 |
* Provides a wrapper for an S3Client that supplies functionality to encrypt
|
19 |
* data on putObject[Async] calls and decrypt data on getObject[Async] calls.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
*/
|
21 |
class S3EncryptionClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClient
|
22 |
{
|
23 |
-
use
|
|
|
|
|
|
|
|
|
|
|
24 |
private $client;
|
25 |
private $instructionFileSuffix;
|
26 |
/**
|
@@ -33,6 +48,7 @@ class S3EncryptionClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Cryp
|
|
33 |
*/
|
34 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3Client $client, $instructionFileSuffix = null)
|
35 |
{
|
|
|
36 |
$this->client = $client;
|
37 |
$this->instructionFileSuffix = $instructionFileSuffix;
|
38 |
}
|
@@ -54,12 +70,15 @@ class S3EncryptionClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Cryp
|
|
54 |
* - @CipherOptions: (array) Cipher options for encrypting data. Only the
|
55 |
* Cipher option is required. Accepts the following:
|
56 |
* - Cipher: (string) cbc|gcm
|
57 |
-
* See also: AbstractCryptoClient::$supportedCiphers
|
|
|
58 |
* - KeySize: (int) 128|192|256
|
59 |
* See also: MaterialsProvider::$supportedKeySizes
|
60 |
* - Aad: (string) Additional authentication data. This option is
|
61 |
* passed directly to OpenSSL when using gcm. It is ignored when
|
62 |
-
* using cbc.
|
|
|
|
|
63 |
*
|
64 |
* The optional configuration arguments are as follows:
|
65 |
*
|
@@ -122,12 +141,15 @@ class S3EncryptionClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Cryp
|
|
122 |
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
123 |
* is required. Accepts the following options:
|
124 |
* - Cipher: (string) cbc|gcm
|
125 |
-
* See also: AbstractCryptoClient::$supportedCiphers
|
|
|
126 |
* - KeySize: (int) 128|192|256
|
127 |
* See also: MaterialsProvider::$supportedKeySizes
|
128 |
* - Aad: (string) Additional authentication data. This option is
|
129 |
* passed directly to OpenSSL when using gcm. It is ignored when
|
130 |
-
* using cbc.
|
|
|
|
|
131 |
*
|
132 |
* The optional configuration arguments are as follows:
|
133 |
*
|
2 |
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\DecryptionTrait;
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HashingStream;
|
7 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\PhpHash;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClient;
|
9 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\EncryptionTrait;
|
|
|
10 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope;
|
11 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProvider;
|
12 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherBuilderTrait;
|
17 |
/**
|
18 |
* Provides a wrapper for an S3Client that supplies functionality to encrypt
|
19 |
* data on putObject[Async] calls and decrypt data on getObject[Async] calls.
|
20 |
+
*
|
21 |
+
* Legacy implementation using older encryption workflow.
|
22 |
+
*
|
23 |
+
* AWS strongly recommends the upgrade to the S3EncryptionClientV2 (over the
|
24 |
+
* S3EncryptionClient), as it offers updated data security best practices to our
|
25 |
+
* customers who upgrade. S3EncryptionClientV2 contains breaking changes, so this
|
26 |
+
* will require planning by engineering teams to migrate. New workflows should
|
27 |
+
* just start with S3EncryptionClientV2.
|
28 |
+
*
|
29 |
+
* @deprecated
|
30 |
*/
|
31 |
class S3EncryptionClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClient
|
32 |
{
|
33 |
+
use CipherBuilderTrait;
|
34 |
+
use CryptoParamsTrait;
|
35 |
+
use DecryptionTrait;
|
36 |
+
use EncryptionTrait;
|
37 |
+
use UserAgentTrait;
|
38 |
+
const CRYPTO_VERSION = '1n';
|
39 |
private $client;
|
40 |
private $instructionFileSuffix;
|
41 |
/**
|
48 |
*/
|
49 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3Client $client, $instructionFileSuffix = null)
|
50 |
{
|
51 |
+
$this->appendUserAgent($client, 'S3CryptoV' . self::CRYPTO_VERSION);
|
52 |
$this->client = $client;
|
53 |
$this->instructionFileSuffix = $instructionFileSuffix;
|
54 |
}
|
70 |
* - @CipherOptions: (array) Cipher options for encrypting data. Only the
|
71 |
* Cipher option is required. Accepts the following:
|
72 |
* - Cipher: (string) cbc|gcm
|
73 |
+
* See also: AbstractCryptoClient::$supportedCiphers. Note that
|
74 |
+
* cbc is deprecated and gcm should be used when possible.
|
75 |
* - KeySize: (int) 128|192|256
|
76 |
* See also: MaterialsProvider::$supportedKeySizes
|
77 |
* - Aad: (string) Additional authentication data. This option is
|
78 |
* passed directly to OpenSSL when using gcm. It is ignored when
|
79 |
+
* using cbc. Note if you pass in Aad for gcm encryption, the
|
80 |
+
* PHP SDK will be able to decrypt the resulting object, but other
|
81 |
+
* AWS SDKs may not be able to do so.
|
82 |
*
|
83 |
* The optional configuration arguments are as follows:
|
84 |
*
|
141 |
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
142 |
* is required. Accepts the following options:
|
143 |
* - Cipher: (string) cbc|gcm
|
144 |
+
* See also: AbstractCryptoClient::$supportedCiphers. Note that
|
145 |
+
* cbc is deprecated and gcm should be used when possible.
|
146 |
* - KeySize: (int) 128|192|256
|
147 |
* See also: MaterialsProvider::$supportedKeySizes
|
148 |
* - Aad: (string) Additional authentication data. This option is
|
149 |
* passed directly to OpenSSL when using gcm. It is ignored when
|
150 |
+
* using cbc. Note if you pass in Aad for gcm encryption, the
|
151 |
+
* PHP SDK will be able to decrypt the resulting object, but other
|
152 |
+
* AWS SDKs may not be able to do so.
|
153 |
*
|
154 |
* The optional configuration arguments are as follows:
|
155 |
*
|
@@ -0,0 +1,371 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\DecryptionTraitV2;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HashingStream;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\PhpHash;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClientV2;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\EncryptionTraitV2;
|
11 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope;
|
12 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MaterialsProvider;
|
13 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherBuilderTrait;
|
14 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3Client;
|
15 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
16 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\PromiseInterface;
|
17 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7;
|
18 |
+
/**
|
19 |
+
* Provides a wrapper for an S3Client that supplies functionality to encrypt
|
20 |
+
* data on putObject[Async] calls and decrypt data on getObject[Async] calls.
|
21 |
+
*
|
22 |
+
* AWS strongly recommends the upgrade to the S3EncryptionClientV2 (over the
|
23 |
+
* S3EncryptionClient), as it offers updated data security best practices to our
|
24 |
+
* customers who upgrade. S3EncryptionClientV2 contains breaking changes, so this
|
25 |
+
* will require planning by engineering teams to migrate. New workflows should
|
26 |
+
* just start with S3EncryptionClientV2.
|
27 |
+
*
|
28 |
+
* Note that for PHP versions of < 7.1, this class uses an AES-GCM polyfill
|
29 |
+
* for encryption since there is no native PHP support. The performance for large
|
30 |
+
* inputs will be a lot slower than for PHP 7.1+, so upgrading older PHP version
|
31 |
+
* environments may be necessary to use this effectively.
|
32 |
+
*
|
33 |
+
* Example write path:
|
34 |
+
*
|
35 |
+
* <code>
|
36 |
+
* use Aws\Crypto\KmsMaterialsProviderV2;
|
37 |
+
* use Aws\S3\Crypto\S3EncryptionClientV2;
|
38 |
+
* use Aws\S3\S3Client;
|
39 |
+
*
|
40 |
+
* $encryptionClient = new S3EncryptionClientV2(
|
41 |
+
* new S3Client([
|
42 |
+
* 'region' => 'us-west-2',
|
43 |
+
* 'version' => 'latest'
|
44 |
+
* ])
|
45 |
+
* );
|
46 |
+
* $materialsProvider = new KmsMaterialsProviderV2(
|
47 |
+
* new KmsClient([
|
48 |
+
* 'profile' => 'default',
|
49 |
+
* 'region' => 'us-east-1',
|
50 |
+
* 'version' => 'latest',
|
51 |
+
* ],
|
52 |
+
* 'your-kms-key-id'
|
53 |
+
* );
|
54 |
+
*
|
55 |
+
* $encryptionClient->putObject([
|
56 |
+
* '@MaterialsProvider' => $materialsProvider,
|
57 |
+
* '@CipherOptions' => [
|
58 |
+
* 'Cipher' => 'gcm',
|
59 |
+
* 'KeySize' => 256,
|
60 |
+
* ],
|
61 |
+
* '@KmsEncryptionContext' => ['foo' => 'bar'],
|
62 |
+
* 'Bucket' => 'your-bucket',
|
63 |
+
* 'Key' => 'your-key',
|
64 |
+
* 'Body' => 'your-encrypted-data',
|
65 |
+
* ]);
|
66 |
+
* </code>
|
67 |
+
*
|
68 |
+
* Example read call (using objects from previous example):
|
69 |
+
*
|
70 |
+
* <code>
|
71 |
+
* $encryptionClient->getObject([
|
72 |
+
* '@MaterialsProvider' => $materialsProvider,
|
73 |
+
* '@CipherOptions' => [
|
74 |
+
* 'Cipher' => 'gcm',
|
75 |
+
* 'KeySize' => 256,
|
76 |
+
* ],
|
77 |
+
* 'Bucket' => 'your-bucket',
|
78 |
+
* 'Key' => 'your-key',
|
79 |
+
* ]);
|
80 |
+
* </code>
|
81 |
+
*/
|
82 |
+
class S3EncryptionClientV2 extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClientV2
|
83 |
+
{
|
84 |
+
use CipherBuilderTrait;
|
85 |
+
use CryptoParamsTraitV2;
|
86 |
+
use DecryptionTraitV2;
|
87 |
+
use EncryptionTraitV2;
|
88 |
+
use UserAgentTrait;
|
89 |
+
const CRYPTO_VERSION = '2.1';
|
90 |
+
private $client;
|
91 |
+
private $instructionFileSuffix;
|
92 |
+
private $legacyWarningCount;
|
93 |
+
/**
|
94 |
+
* @param S3Client $client The S3Client to be used for true uploading and
|
95 |
+
* retrieving objects from S3 when using the
|
96 |
+
* encryption client.
|
97 |
+
* @param string|null $instructionFileSuffix Suffix for a client wide
|
98 |
+
* default when using instruction
|
99 |
+
* files for metadata storage.
|
100 |
+
*/
|
101 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3Client $client, $instructionFileSuffix = null)
|
102 |
+
{
|
103 |
+
$this->appendUserAgent($client, 'S3CryptoV' . self::CRYPTO_VERSION);
|
104 |
+
$this->client = $client;
|
105 |
+
$this->instructionFileSuffix = $instructionFileSuffix;
|
106 |
+
$this->legacyWarningCount = 0;
|
107 |
+
}
|
108 |
+
private static function getDefaultStrategy()
|
109 |
+
{
|
110 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto\HeadersMetadataStrategy();
|
111 |
+
}
|
112 |
+
/**
|
113 |
+
* Encrypts the data in the 'Body' field of $args and promises to upload it
|
114 |
+
* to the specified location on S3.
|
115 |
+
*
|
116 |
+
* Note that for PHP versions of < 7.1, this operation uses an AES-GCM
|
117 |
+
* polyfill for encryption since there is no native PHP support. The
|
118 |
+
* performance for large inputs will be a lot slower than for PHP 7.1+, so
|
119 |
+
* upgrading older PHP version environments may be necessary to use this
|
120 |
+
* effectively.
|
121 |
+
*
|
122 |
+
* @param array $args Arguments for encrypting an object and uploading it
|
123 |
+
* to S3 via PutObject.
|
124 |
+
*
|
125 |
+
* The required configuration arguments are as follows:
|
126 |
+
*
|
127 |
+
* - @MaterialsProvider: (MaterialsProviderV2) Provides Cek, Iv, and Cek
|
128 |
+
* encrypting/decrypting for encryption metadata.
|
129 |
+
* - @CipherOptions: (array) Cipher options for encrypting data. Only the
|
130 |
+
* Cipher option is required. Accepts the following:
|
131 |
+
* - Cipher: (string) gcm
|
132 |
+
* See also: AbstractCryptoClientV2::$supportedCiphers
|
133 |
+
* - KeySize: (int) 128|256
|
134 |
+
* See also: MaterialsProvider::$supportedKeySizes
|
135 |
+
* - Aad: (string) Additional authentication data. This option is
|
136 |
+
* passed directly to OpenSSL when using gcm. Note if you pass in
|
137 |
+
* Aad, the PHP SDK will be able to decrypt the resulting object,
|
138 |
+
* but other AWS SDKs may not be able to do so.
|
139 |
+
* - @KmsEncryptionContext: (array) Only required if using
|
140 |
+
* KmsMaterialsProviderV2. An associative array of key-value
|
141 |
+
* pairs to be added to the encryption context for KMS key encryption. An
|
142 |
+
* empty array may be passed if no additional context is desired.
|
143 |
+
*
|
144 |
+
* The optional configuration arguments are as follows:
|
145 |
+
*
|
146 |
+
* - @MetadataStrategy: (MetadataStrategy|string|null) Strategy for storing
|
147 |
+
* MetadataEnvelope information. Defaults to using a
|
148 |
+
* HeadersMetadataStrategy. Can either be a class implementing
|
149 |
+
* MetadataStrategy, a class name of a predefined strategy, or empty/null
|
150 |
+
* to default.
|
151 |
+
* - @InstructionFileSuffix: (string|null) Suffix used when writing to an
|
152 |
+
* instruction file if using an InstructionFileMetadataHandler.
|
153 |
+
*
|
154 |
+
* @return PromiseInterface
|
155 |
+
*
|
156 |
+
* @throws \InvalidArgumentException Thrown when arguments above are not
|
157 |
+
* passed or are passed incorrectly.
|
158 |
+
*/
|
159 |
+
public function putObjectAsync(array $args)
|
160 |
+
{
|
161 |
+
$provider = $this->getMaterialsProvider($args);
|
162 |
+
unset($args['@MaterialsProvider']);
|
163 |
+
$instructionFileSuffix = $this->getInstructionFileSuffix($args);
|
164 |
+
unset($args['@InstructionFileSuffix']);
|
165 |
+
$strategy = $this->getMetadataStrategy($args, $instructionFileSuffix);
|
166 |
+
unset($args['@MetadataStrategy']);
|
167 |
+
$envelope = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope();
|
168 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for($this->encrypt(\DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\stream_for($args['Body']), $args, $provider, $envelope))->then(function ($encryptedBodyStream) use($args) {
|
169 |
+
$hash = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\PhpHash('sha256');
|
170 |
+
$hashingEncryptedBodyStream = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HashingStream($encryptedBodyStream, $hash, self::getContentShaDecorator($args));
|
171 |
+
return [$hashingEncryptedBodyStream, $args];
|
172 |
+
})->then(function ($putObjectContents) use($strategy, $envelope) {
|
173 |
+
list($bodyStream, $args) = $putObjectContents;
|
174 |
+
if ($strategy === null) {
|
175 |
+
$strategy = self::getDefaultStrategy();
|
176 |
+
}
|
177 |
+
$updatedArgs = $strategy->save($envelope, $args);
|
178 |
+
$updatedArgs['Body'] = $bodyStream;
|
179 |
+
return $updatedArgs;
|
180 |
+
})->then(function ($args) {
|
181 |
+
unset($args['@CipherOptions']);
|
182 |
+
return $this->client->putObjectAsync($args);
|
183 |
+
});
|
184 |
+
}
|
185 |
+
private static function getContentShaDecorator(&$args)
|
186 |
+
{
|
187 |
+
return function ($hash) use(&$args) {
|
188 |
+
$args['ContentSHA256'] = bin2hex($hash);
|
189 |
+
};
|
190 |
+
}
|
191 |
+
/**
|
192 |
+
* Encrypts the data in the 'Body' field of $args and uploads it to the
|
193 |
+
* specified location on S3.
|
194 |
+
*
|
195 |
+
* Note that for PHP versions of < 7.1, this operation uses an AES-GCM
|
196 |
+
* polyfill for encryption since there is no native PHP support. The
|
197 |
+
* performance for large inputs will be a lot slower than for PHP 7.1+, so
|
198 |
+
* upgrading older PHP version environments may be necessary to use this
|
199 |
+
* effectively.
|
200 |
+
*
|
201 |
+
* @param array $args Arguments for encrypting an object and uploading it
|
202 |
+
* to S3 via PutObject.
|
203 |
+
*
|
204 |
+
* The required configuration arguments are as follows:
|
205 |
+
*
|
206 |
+
* - @MaterialsProvider: (MaterialsProvider) Provides Cek, Iv, and Cek
|
207 |
+
* encrypting/decrypting for encryption metadata.
|
208 |
+
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
209 |
+
* is required. Accepts the following options:
|
210 |
+
* - Cipher: (string) gcm
|
211 |
+
* See also: AbstractCryptoClientV2::$supportedCiphers
|
212 |
+
* - KeySize: (int) 128|256
|
213 |
+
* See also: MaterialsProvider::$supportedKeySizes
|
214 |
+
* - Aad: (string) Additional authentication data. This option is
|
215 |
+
* passed directly to OpenSSL when using gcm. Note if you pass in
|
216 |
+
* Aad, the PHP SDK will be able to decrypt the resulting object,
|
217 |
+
* but other AWS SDKs may not be able to do so.
|
218 |
+
* - @KmsEncryptionContext: (array) Only required if using
|
219 |
+
* KmsMaterialsProviderV2. An associative array of key-value
|
220 |
+
* pairs to be added to the encryption context for KMS key encryption. An
|
221 |
+
* empty array may be passed if no additional context is desired.
|
222 |
+
*
|
223 |
+
* The optional configuration arguments are as follows:
|
224 |
+
*
|
225 |
+
* - @MetadataStrategy: (MetadataStrategy|string|null) Strategy for storing
|
226 |
+
* MetadataEnvelope information. Defaults to using a
|
227 |
+
* HeadersMetadataStrategy. Can either be a class implementing
|
228 |
+
* MetadataStrategy, a class name of a predefined strategy, or empty/null
|
229 |
+
* to default.
|
230 |
+
* - @InstructionFileSuffix: (string|null) Suffix used when writing to an
|
231 |
+
* instruction file if an using an InstructionFileMetadataHandler was
|
232 |
+
* determined.
|
233 |
+
*
|
234 |
+
* @return \Aws\Result PutObject call result with the details of uploading
|
235 |
+
* the encrypted file.
|
236 |
+
*
|
237 |
+
* @throws \InvalidArgumentException Thrown when arguments above are not
|
238 |
+
* passed or are passed incorrectly.
|
239 |
+
*/
|
240 |
+
public function putObject(array $args)
|
241 |
+
{
|
242 |
+
return $this->putObjectAsync($args)->wait();
|
243 |
+
}
|
244 |
+
/**
|
245 |
+
* Promises to retrieve an object from S3 and decrypt the data in the
|
246 |
+
* 'Body' field.
|
247 |
+
*
|
248 |
+
* @param array $args Arguments for retrieving an object from S3 via
|
249 |
+
* GetObject and decrypting it.
|
250 |
+
*
|
251 |
+
* The required configuration argument is as follows:
|
252 |
+
*
|
253 |
+
* - @MaterialsProvider: (MaterialsProviderInterface) Provides Cek, Iv, and Cek
|
254 |
+
* encrypting/decrypting for decryption metadata. May have data loaded
|
255 |
+
* from the MetadataEnvelope upon decryption.
|
256 |
+
* - @SecurityProfile: (string) Must be set to 'V2' or 'V2_AND_LEGACY'.
|
257 |
+
* - 'V2' indicates that only objects encrypted with S3EncryptionClientV2
|
258 |
+
* content encryption and key wrap schemas are able to be decrypted.
|
259 |
+
* - 'V2_AND_LEGACY' indicates that objects encrypted with both
|
260 |
+
* S3EncryptionClientV2 and older legacy encryption clients are able
|
261 |
+
* to be decrypted.
|
262 |
+
*
|
263 |
+
* The optional configuration arguments are as follows:
|
264 |
+
*
|
265 |
+
* - SaveAs: (string) The path to a file on disk to save the decrypted
|
266 |
+
* object data. This will be handled by file_put_contents instead of the
|
267 |
+
* Guzzle sink.
|
268 |
+
*
|
269 |
+
* - @MetadataStrategy: (MetadataStrategy|string|null) Strategy for reading
|
270 |
+
* MetadataEnvelope information. Defaults to determining based on object
|
271 |
+
* response headers. Can either be a class implementing MetadataStrategy,
|
272 |
+
* a class name of a predefined strategy, or empty/null to default.
|
273 |
+
* - @InstructionFileSuffix: (string) Suffix used when looking for an
|
274 |
+
* instruction file if an InstructionFileMetadataHandler is being used.
|
275 |
+
* - @CipherOptions: (array) Cipher options for decrypting data. A Cipher
|
276 |
+
* is required. Accepts the following options:
|
277 |
+
* - Aad: (string) Additional authentication data. This option is
|
278 |
+
* passed directly to OpenSSL when using gcm. It is ignored when
|
279 |
+
* using cbc.
|
280 |
+
* - @KmsAllowDecryptWithAnyCmk: (bool) This allows decryption with
|
281 |
+
* KMS materials for any KMS key ID, instead of needing the KMS key ID to
|
282 |
+
* be specified and provided to the decrypt operation. Ignored for non-KMS
|
283 |
+
* materials providers. Defaults to false.
|
284 |
+
*
|
285 |
+
* @return PromiseInterface
|
286 |
+
*
|
287 |
+
* @throws \InvalidArgumentException Thrown when required arguments are not
|
288 |
+
* passed or are passed incorrectly.
|
289 |
+
*/
|
290 |
+
public function getObjectAsync(array $args)
|
291 |
+
{
|
292 |
+
$provider = $this->getMaterialsProvider($args);
|
293 |
+
unset($args['@MaterialsProvider']);
|
294 |
+
$instructionFileSuffix = $this->getInstructionFileSuffix($args);
|
295 |
+
unset($args['@InstructionFileSuffix']);
|
296 |
+
$strategy = $this->getMetadataStrategy($args, $instructionFileSuffix);
|
297 |
+
unset($args['@MetadataStrategy']);
|
298 |
+
if (!isset($args['@SecurityProfile']) || !in_array($args['@SecurityProfile'], self::$supportedSecurityProfiles)) {
|
299 |
+
throw new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\CryptoException("@SecurityProfile is required and must be" . " set to 'V2' or 'V2_AND_LEGACY'");
|
300 |
+
}
|
301 |
+
// Only throw this legacy warning once per client
|
302 |
+
if (in_array($args['@SecurityProfile'], self::$legacySecurityProfiles) && $this->legacyWarningCount < 1) {
|
303 |
+
$this->legacyWarningCount++;
|
304 |
+
trigger_error("This S3 Encryption Client operation is configured to" . " read encrypted data with legacy encryption modes. If you" . " don't have objects encrypted with these legacy modes," . " you should disable support for them to enhance security. ", E_USER_WARNING);
|
305 |
+
}
|
306 |
+
$saveAs = null;
|
307 |
+
if (!empty($args['SaveAs'])) {
|
308 |
+
$saveAs = $args['SaveAs'];
|
309 |
+
}
|
310 |
+
$promise = $this->client->getObjectAsync($args)->then(function ($result) use($provider, $instructionFileSuffix, $strategy, $args) {
|
311 |
+
if ($strategy === null) {
|
312 |
+
$strategy = $this->determineGetObjectStrategy($result, $instructionFileSuffix);
|
313 |
+
}
|
314 |
+
$envelope = $strategy->load($args + ['Metadata' => $result['Metadata']]);
|
315 |
+
$result['Body'] = $this->decrypt($result['Body'], $provider, $envelope, $args);
|
316 |
+
return $result;
|
317 |
+
})->then(function ($result) use($saveAs) {
|
318 |
+
if (!empty($saveAs)) {
|
319 |
+
file_put_contents($saveAs, (string) $result['Body'], LOCK_EX);
|
320 |
+
}
|
321 |
+
return $result;
|
322 |
+
});
|
323 |
+
return $promise;
|
324 |
+
}
|
325 |
+
/**
|
326 |
+
* Retrieves an object from S3 and decrypts the data in the 'Body' field.
|
327 |
+
*
|
328 |
+
* @param array $args Arguments for retrieving an object from S3 via
|
329 |
+
* GetObject and decrypting it.
|
330 |
+
*
|
331 |
+
* The required configuration argument is as follows:
|
332 |
+
*
|
333 |
+
* - @MaterialsProvider: (MaterialsProviderInterface) Provides Cek, Iv, and Cek
|
334 |
+
* encrypting/decrypting for decryption metadata. May have data loaded
|
335 |
+
* from the MetadataEnvelope upon decryption.
|
336 |
+
* - @SecurityProfile: (string) Must be set to 'V2' or 'V2_AND_LEGACY'.
|
337 |
+
* - 'V2' indicates that only objects encrypted with S3EncryptionClientV2
|
338 |
+
* content encryption and key wrap schemas are able to be decrypted.
|
339 |
+
* - 'V2_AND_LEGACY' indicates that objects encrypted with both
|
340 |
+
* S3EncryptionClientV2 and older legacy encryption clients are able
|
341 |
+
* to be decrypted.
|
342 |
+
*
|
343 |
+
* The optional configuration arguments are as follows:
|
344 |
+
*
|
345 |
+
* - SaveAs: (string) The path to a file on disk to save the decrypted
|
346 |
+
* object data. This will be handled by file_put_contents instead of the
|
347 |
+
* Guzzle sink.
|
348 |
+
* - @InstructionFileSuffix: (string|null) Suffix used when looking for an
|
349 |
+
* instruction file if an InstructionFileMetadataHandler was detected.
|
350 |
+
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
351 |
+
* is required. Accepts the following options:
|
352 |
+
* - Aad: (string) Additional authentication data. This option is
|
353 |
+
* passed directly to OpenSSL when using gcm. It is ignored when
|
354 |
+
* using cbc.
|
355 |
+
* - @KmsAllowDecryptWithAnyCmk: (bool) This allows decryption with
|
356 |
+
* KMS materials for any KMS key ID, instead of needing the KMS key ID to
|
357 |
+
* be specified and provided to the decrypt operation. Ignored for non-KMS
|
358 |
+
* materials providers. Defaults to false.
|
359 |
+
*
|
360 |
+
* @return \Aws\Result GetObject call result with the 'Body' field
|
361 |
+
* wrapped in a decryption stream with its metadata
|
362 |
+
* information.
|
363 |
+
*
|
364 |
+
* @throws \InvalidArgumentException Thrown when arguments above are not
|
365 |
+
* passed or are passed incorrectly.
|
366 |
+
*/
|
367 |
+
public function getObject(array $args)
|
368 |
+
{
|
369 |
+
return $this->getObjectAsync($args)->wait();
|
370 |
+
}
|
371 |
+
}
|
@@ -11,10 +11,19 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface;
|
|
11 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
12 |
/**
|
13 |
* Encapsulates the execution of a multipart upload of an encrypted object to S3.
|
|
|
|
|
|
|
|
|
|
|
14 |
*/
|
15 |
class S3EncryptionMultipartUploader extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\MultipartUploader
|
16 |
{
|
17 |
-
use
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
* Returns if the passed cipher name is supported for encryption by the SDK.
|
20 |
*
|
@@ -39,7 +48,8 @@ class S3EncryptionMultipartUploader extends \DeliciousBrains\WP_Offload_Media\Aw
|
|
39 |
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
40 |
* is required. Accepts the following options:
|
41 |
* - Cipher: (string) cbc|gcm
|
42 |
-
* See also: AbstractCryptoClient::$supportedCiphers
|
|
|
43 |
* - KeySize: (int) 128|192|256
|
44 |
* See also: MaterialsProvider::$supportedKeySizes
|
45 |
* - Aad: (string) Additional authentication data. This option is
|
@@ -90,6 +100,7 @@ class S3EncryptionMultipartUploader extends \DeliciousBrains\WP_Offload_Media\Aw
|
|
90 |
*/
|
91 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface $client, $source, array $config = [])
|
92 |
{
|
|
|
93 |
$this->client = $client;
|
94 |
$config['params'] = [];
|
95 |
if (!empty($config['bucket'])) {
|
11 |
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
12 |
/**
|
13 |
* Encapsulates the execution of a multipart upload of an encrypted object to S3.
|
14 |
+
*
|
15 |
+
* Legacy implementation using older encryption workflow. Use
|
16 |
+
* S3EncryptionMultipartUploaderV2 if possible.
|
17 |
+
*
|
18 |
+
* @deprecated
|
19 |
*/
|
20 |
class S3EncryptionMultipartUploader extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\MultipartUploader
|
21 |
{
|
22 |
+
use CipherBuilderTrait;
|
23 |
+
use CryptoParamsTrait;
|
24 |
+
use EncryptionTrait;
|
25 |
+
use UserAgentTrait;
|
26 |
+
const CRYPTO_VERSION = '1n';
|
27 |
/**
|
28 |
* Returns if the passed cipher name is supported for encryption by the SDK.
|
29 |
*
|
48 |
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
49 |
* is required. Accepts the following options:
|
50 |
* - Cipher: (string) cbc|gcm
|
51 |
+
* See also: AbstractCryptoClient::$supportedCiphers. Note that
|
52 |
+
* cbc is deprecated and gcm should be used when possible.
|
53 |
* - KeySize: (int) 128|192|256
|
54 |
* See also: MaterialsProvider::$supportedKeySizes
|
55 |
* - Aad: (string) Additional authentication data. This option is
|
100 |
*/
|
101 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface $client, $source, array $config = [])
|
102 |
{
|
103 |
+
$this->appendUserAgent($client, 'S3CryptoV' . self::CRYPTO_VERSION);
|
104 |
$this->client = $client;
|
105 |
$config['params'] = [];
|
106 |
if (!empty($config['bucket'])) {
|
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\AbstractCryptoClientV2;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\EncryptionTraitV2;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\Cipher\CipherBuilderTrait;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\MultipartUploader;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface;
|
11 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
12 |
+
/**
|
13 |
+
* Encapsulates the execution of a multipart upload of an encrypted object to S3.
|
14 |
+
*
|
15 |
+
* Note that for PHP versions of < 7.1, this class uses an AES-GCM polyfill
|
16 |
+
* for encryption since there is no native PHP support. The performance for large
|
17 |
+
* inputs will be a lot slower than for PHP 7.1+, so upgrading older PHP version
|
18 |
+
* environments may be necessary to use this effectively.
|
19 |
+
*/
|
20 |
+
class S3EncryptionMultipartUploaderV2 extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\MultipartUploader
|
21 |
+
{
|
22 |
+
use CipherBuilderTrait;
|
23 |
+
use CryptoParamsTraitV2;
|
24 |
+
use EncryptionTraitV2;
|
25 |
+
use UserAgentTrait;
|
26 |
+
const CRYPTO_VERSION = '2.1';
|
27 |
+
/**
|
28 |
+
* Returns if the passed cipher name is supported for encryption by the SDK.
|
29 |
+
*
|
30 |
+
* @param string $cipherName The name of a cipher to verify is registered.
|
31 |
+
*
|
32 |
+
* @return bool If the cipher passed is in our supported list.
|
33 |
+
*/
|
34 |
+
public static function isSupportedCipher($cipherName)
|
35 |
+
{
|
36 |
+
return in_array($cipherName, AbstractCryptoClientV2::$supportedCiphers);
|
37 |
+
}
|
38 |
+
private $provider;
|
39 |
+
private $instructionFileSuffix;
|
40 |
+
private $strategy;
|
41 |
+
/**
|
42 |
+
* Creates a multipart upload for an S3 object after encrypting it.
|
43 |
+
*
|
44 |
+
* Note that for PHP versions of < 7.1, this class uses an AES-GCM polyfill
|
45 |
+
* for encryption since there is no native PHP support. The performance for
|
46 |
+
* large inputs will be a lot slower than for PHP 7.1+, so upgrading older
|
47 |
+
* PHP version environments may be necessary to use this effectively.
|
48 |
+
*
|
49 |
+
* The required configuration options are as follows:
|
50 |
+
*
|
51 |
+
* - @MaterialsProvider: (MaterialsProviderV2) Provides Cek, Iv, and Cek
|
52 |
+
* encrypting/decrypting for encryption metadata.
|
53 |
+
* - @CipherOptions: (array) Cipher options for encrypting data. A Cipher
|
54 |
+
* is required. Accepts the following options:
|
55 |
+
* - Cipher: (string) gcm
|
56 |
+
* See also: AbstractCryptoClientV2::$supportedCiphers
|
57 |
+
* - KeySize: (int) 128|256
|
58 |
+
* See also: MaterialsProvider::$supportedKeySizes
|
59 |
+
* - Aad: (string) Additional authentication data. This option is
|
60 |
+
* passed directly to OpenSSL when using gcm.
|
61 |
+
* - @KmsEncryptionContext: (array) Only required if using
|
62 |
+
* KmsMaterialsProviderV2. An associative array of key-value
|
63 |
+
* pairs to be added to the encryption context for KMS key encryption. An
|
64 |
+
* empty array may be passed if no additional context is desired.
|
65 |
+
* - bucket: (string) Name of the bucket to which the object is
|
66 |
+
* being uploaded.
|
67 |
+
* - key: (string) Key to use for the object being uploaded.
|
68 |
+
*
|
69 |
+
* The optional configuration arguments are as follows:
|
70 |
+
*
|
71 |
+
* - @MetadataStrategy: (MetadataStrategy|string|null) Strategy for storing
|
72 |
+
* MetadataEnvelope information. Defaults to using a
|
73 |
+
* HeadersMetadataStrategy. Can either be a class implementing
|
74 |
+
* MetadataStrategy, a class name of a predefined strategy, or empty/null
|
75 |
+
* to default.
|
76 |
+
* - @InstructionFileSuffix: (string|null) Suffix used when writing to an
|
77 |
+
* instruction file if an using an InstructionFileMetadataHandler was
|
78 |
+
* determined.
|
79 |
+
* - acl: (string) ACL to set on the object being upload. Objects are
|
80 |
+
* private by default.
|
81 |
+
* - before_complete: (callable) Callback to invoke before the
|
82 |
+
* `CompleteMultipartUpload` operation. The callback should have a
|
83 |
+
* function signature like `function (Aws\Command $command) {...}`.
|
84 |
+
* - before_initiate: (callable) Callback to invoke before the
|
85 |
+
* `CreateMultipartUpload` operation. The callback should have a function
|
86 |
+
* signature like `function (Aws\Command $command) {...}`.
|
87 |
+
* - before_upload: (callable) Callback to invoke before any `UploadPart`
|
88 |
+
* operations. The callback should have a function signature like
|
89 |
+
* `function (Aws\Command $command) {...}`.
|
90 |
+
* - concurrency: (int, default=int(5)) Maximum number of concurrent
|
91 |
+
* `UploadPart` operations allowed during the multipart upload.
|
92 |
+
* - params: (array) An array of key/value parameters that will be applied
|
93 |
+
* to each of the sub-commands run by the uploader as a base.
|
94 |
+
* Auto-calculated options will override these parameters. If you need
|
95 |
+
* more granularity over parameters to each sub-command, use the before_*
|
96 |
+
* options detailed above to update the commands directly.
|
97 |
+
* - part_size: (int, default=int(5242880)) Part size, in bytes, to use when
|
98 |
+
* doing a multipart upload. This must between 5 MB and 5 GB, inclusive.
|
99 |
+
* - state: (Aws\Multipart\UploadState) An object that represents the state
|
100 |
+
* of the multipart upload and that is used to resume a previous upload.
|
101 |
+
* When this option is provided, the `bucket`, `key`, and `part_size`
|
102 |
+
* options are ignored.
|
103 |
+
*
|
104 |
+
* @param S3ClientInterface $client Client used for the upload.
|
105 |
+
* @param mixed $source Source of the data to upload.
|
106 |
+
* @param array $config Configuration used to perform the upload.
|
107 |
+
*/
|
108 |
+
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface $client, $source, array $config = [])
|
109 |
+
{
|
110 |
+
$this->appendUserAgent($client, 'S3CryptoV' . self::CRYPTO_VERSION);
|
111 |
+
$this->client = $client;
|
112 |
+
$config['params'] = [];
|
113 |
+
if (!empty($config['bucket'])) {
|
114 |
+
$config['params']['Bucket'] = $config['bucket'];
|
115 |
+
}
|
116 |
+
if (!empty($config['key'])) {
|
117 |
+
$config['params']['Key'] = $config['key'];
|
118 |
+
}
|
119 |
+
$this->provider = $this->getMaterialsProvider($config);
|
120 |
+
unset($config['@MaterialsProvider']);
|
121 |
+
$this->instructionFileSuffix = $this->getInstructionFileSuffix($config);
|
122 |
+
unset($config['@InstructionFileSuffix']);
|
123 |
+
$this->strategy = $this->getMetadataStrategy($config, $this->instructionFileSuffix);
|
124 |
+
if ($this->strategy === null) {
|
125 |
+
$this->strategy = self::getDefaultStrategy();
|
126 |
+
}
|
127 |
+
unset($config['@MetadataStrategy']);
|
128 |
+
$config['prepare_data_source'] = $this->getEncryptingDataPreparer();
|
129 |
+
parent::__construct($client, $source, $config);
|
130 |
+
}
|
131 |
+
private static function getDefaultStrategy()
|
132 |
+
{
|
133 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto\HeadersMetadataStrategy();
|
134 |
+
}
|
135 |
+
private function getEncryptingDataPreparer()
|
136 |
+
{
|
137 |
+
return function () {
|
138 |
+
// Defer encryption work until promise is executed
|
139 |
+
$envelope = new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto\MetadataEnvelope();
|
140 |
+
list($this->source, $params) = \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for($this->encrypt($this->source, $this->config ?: [], $this->provider, $envelope))->then(function ($bodyStream) use($envelope) {
|
141 |
+
$params = $this->strategy->save($envelope, $this->config['params']);
|
142 |
+
return [$bodyStream, $params];
|
143 |
+
})->wait();
|
144 |
+
$this->source->rewind();
|
145 |
+
$this->config['params'] = $params;
|
146 |
+
};
|
147 |
+
}
|
148 |
+
}
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\Crypto;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientInterface;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
8 |
+
trait UserAgentTrait
|
9 |
+
{
|
10 |
+
private function appendUserAgent(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClientInterface $client, $agentString)
|
11 |
+
{
|
12 |
+
$list = $client->getHandlerList();
|
13 |
+
$list->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::mapRequest(function (\DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $req) use($agentString) {
|
14 |
+
if (!empty($req->getHeader('User-Agent')) && !empty($req->getHeader('User-Agent')[0])) {
|
15 |
+
$userAgent = $req->getHeader('User-Agent')[0];
|
16 |
+
if (strpos($userAgent, $agentString) === false) {
|
17 |
+
$userAgent .= " {$agentString}";
|
18 |
+
}
|
19 |
+
} else {
|
20 |
+
$userAgent = $agentString;
|
21 |
+
}
|
22 |
+
$req = $req->withHeader('User-Agent', $userAgent);
|
23 |
+
return $req;
|
24 |
+
}));
|
25 |
+
}
|
26 |
+
}
|
@@ -49,9 +49,9 @@ class MultipartCopy extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Multipart
|
|
49 |
* result of executing a HeadObject command on the copy source.
|
50 |
*
|
51 |
* @param S3ClientInterface $client Client used for the upload.
|
52 |
-
* @param string
|
53 |
* (in the form /<bucket>/<key>).
|
54 |
-
* @param array
|
55 |
*/
|
56 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface $client, $source, array $config = [])
|
57 |
{
|
@@ -97,7 +97,8 @@ class MultipartCopy extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Multipart
|
|
97 |
foreach ($params as $k => $v) {
|
98 |
$data[$k] = $v;
|
99 |
}
|
100 |
-
$
|
|
|
101 |
$data['PartNumber'] = $partNumber;
|
102 |
$defaultPartSize = $this->determinePartSize();
|
103 |
$startByte = $defaultPartSize * ($partNumber - 1);
|
49 |
* result of executing a HeadObject command on the copy source.
|
50 |
*
|
51 |
* @param S3ClientInterface $client Client used for the upload.
|
52 |
+
* @param string $source Location of the data to be copied
|
53 |
* (in the form /<bucket>/<key>).
|
54 |
+
* @param array $config Configuration used to perform the upload.
|
55 |
*/
|
56 |
public function __construct(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3ClientInterface $client, $source, array $config = [])
|
57 |
{
|
97 |
foreach ($params as $k => $v) {
|
98 |
$data[$k] = $v;
|
99 |
}
|
100 |
+
list($bucket, $key) = explode('/', ltrim($this->source, '/'), 2);
|
101 |
+
$data['CopySource'] = '/' . $bucket . '/' . rawurlencode(implode('/', array_map('urlencode', explode('/', $key))));
|
102 |
$data['PartNumber'] = $partNumber;
|
103 |
$defaultPartSize = $this->determinePartSize();
|
104 |
$startByte = $defaultPartSize * ($partNumber - 1);
|
@@ -42,7 +42,7 @@ class PostObjectV4
|
|
42 |
$this->formAttributes = ['action' => $this->generateUri(), 'method' => 'POST', 'enctype' => 'multipart/form-data'];
|
43 |
$credentials = $this->client->getCredentials()->wait();
|
44 |
if ($securityToken = $credentials->getSecurityToken()) {
|
45 |
-
|
46 |
$formInputs['X-Amz-Security-Token'] = $securityToken;
|
47 |
}
|
48 |
// setup basic policy
|
42 |
$this->formAttributes = ['action' => $this->generateUri(), 'method' => 'POST', 'enctype' => 'multipart/form-data'];
|
43 |
$credentials = $this->client->getCredentials()->wait();
|
44 |
if ($securityToken = $credentials->getSecurityToken()) {
|
45 |
+
$options[] = ['x-amz-security-token' => $securityToken];
|
46 |
$formInputs['X-Amz-Security-Token'] = $securityToken;
|
47 |
}
|
48 |
// setup basic policy
|
@@ -66,7 +66,11 @@ class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\A
|
|
66 |
*/
|
67 |
public static function defaultProvider(array $config = [])
|
68 |
{
|
69 |
-
$configProviders = [self::env()
|
|
|
|
|
|
|
|
|
70 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
71 |
if (isset($config['s3_us_east_1_regional_endpoint']) && $config['s3_us_east_1_regional_endpoint'] instanceof CacheInterface) {
|
72 |
return self::cache($memo, $config['s3_us_east_1_regional_endpoint'], self::$cacheKey);
|
66 |
*/
|
67 |
public static function defaultProvider(array $config = [])
|
68 |
{
|
69 |
+
$configProviders = [self::env()];
|
70 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
71 |
+
$configProviders[] = self::ini();
|
72 |
+
}
|
73 |
+
$configProviders[] = self::fallback();
|
74 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
75 |
if (isset($config['s3_us_east_1_regional_endpoint']) && $config['s3_us_east_1_regional_endpoint'] instanceof CacheInterface) {
|
76 |
return self::cache($memo, $config['s3_us_east_1_regional_endpoint'], self::$cacheKey);
|
@@ -12,9 +12,11 @@ use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Command;
|
|
12 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
13 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList;
|
14 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware;
|
|
|
15 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware;
|
16 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface;
|
17 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
|
|
18 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\Configuration;
|
19 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\ConfigurationInterface;
|
20 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\ConfigurationProvider as UseArnRegionConfigurationProvider;
|
@@ -263,21 +265,19 @@ class S3Client extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient impl
|
|
263 |
*/
|
264 |
public function __construct(array $args)
|
265 |
{
|
266 |
-
if (!isset($args['s3_us_east_1_regional_endpoint'])) {
|
267 |
-
$args['s3_us_east_1_regional_endpoint'] = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\RegionalEndpoint\ConfigurationProvider::defaultProvider();
|
268 |
-
} elseif ($args['s3_us_east_1_regional_endpoint'] instanceof CacheInterface) {
|
269 |
$args['s3_us_east_1_regional_endpoint'] = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\RegionalEndpoint\ConfigurationProvider::defaultProvider($args);
|
270 |
}
|
271 |
parent::__construct($args);
|
272 |
$stack = $this->getHandlerList();
|
273 |
$stack->appendInit(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\SSECMiddleware::wrap($this->getEndpoint()->getScheme()), 's3.ssec');
|
274 |
-
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\ApplyChecksumMiddleware::wrap(), 's3.checksum');
|
275 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::contentType(['PutObject', 'UploadPart']), 's3.content_type');
|
276 |
// Use the bucket style middleware when using a "bucket_endpoint" (for cnames)
|
277 |
if ($this->getConfig('bucket_endpoint')) {
|
278 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\BucketEndpointMiddleware::wrap(), 's3.bucket_endpoint');
|
279 |
} else {
|
280 |
-
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3EndpointMiddleware::wrap($this->getRegion(), ['dual_stack' => $this->getConfig('use_dual_stack_endpoint'), 'accelerate' => $this->getConfig('use_accelerate_endpoint'), 'path_style' => $this->getConfig('use_path_style_endpoint')]), 's3.endpoint_middleware');
|
281 |
}
|
282 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\BucketEndpointArnMiddleware::wrap($this->getApi(), $this->getRegion(), ['use_arn_region' => $this->getConfig('use_arn_region'), 'dual_stack' => $this->getConfig('use_dual_stack_endpoint'), 'accelerate' => $this->getConfig('use_accelerate_endpoint'), 'path_style' => $this->getConfig('use_path_style_endpoint'), 'endpoint' => isset($args['endpoint']) ? $args['endpoint'] : null]), 's3.bucket_endpoint_arn');
|
283 |
$stack->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\PutObjectUrlMiddleware::wrap(), 's3.put_object_url');
|
@@ -455,32 +455,49 @@ class S3Client extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient impl
|
|
455 |
};
|
456 |
}
|
457 |
/** @internal */
|
458 |
-
public static function _applyRetryConfig($value, $
|
459 |
{
|
460 |
-
if (
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
479 |
}
|
480 |
-
|
481 |
-
};
|
482 |
-
$delay = [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware::class, 'exponentialDelay'];
|
483 |
-
$list->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::retry($decider, $delay), 'retry');
|
484 |
}
|
485 |
/** @internal */
|
486 |
public static function _applyApiProvider($value, array &$args, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList $list)
|
12 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
13 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList;
|
14 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware;
|
15 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\QuotaManager;
|
16 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware;
|
17 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ResultInterface;
|
18 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
19 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddlewareV2;
|
20 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\Configuration;
|
21 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\ConfigurationInterface;
|
22 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\UseArnRegion\ConfigurationProvider as UseArnRegionConfigurationProvider;
|
265 |
*/
|
266 |
public function __construct(array $args)
|
267 |
{
|
268 |
+
if (!isset($args['s3_us_east_1_regional_endpoint']) || $args['s3_us_east_1_regional_endpoint'] instanceof CacheInterface) {
|
|
|
|
|
269 |
$args['s3_us_east_1_regional_endpoint'] = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\RegionalEndpoint\ConfigurationProvider::defaultProvider($args);
|
270 |
}
|
271 |
parent::__construct($args);
|
272 |
$stack = $this->getHandlerList();
|
273 |
$stack->appendInit(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\SSECMiddleware::wrap($this->getEndpoint()->getScheme()), 's3.ssec');
|
274 |
+
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\ApplyChecksumMiddleware::wrap($this->getApi()), 's3.checksum');
|
275 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::contentType(['PutObject', 'UploadPart']), 's3.content_type');
|
276 |
// Use the bucket style middleware when using a "bucket_endpoint" (for cnames)
|
277 |
if ($this->getConfig('bucket_endpoint')) {
|
278 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\BucketEndpointMiddleware::wrap(), 's3.bucket_endpoint');
|
279 |
} else {
|
280 |
+
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\S3EndpointMiddleware::wrap($this->getRegion(), $this->getConfig('endpoint_provider'), ['dual_stack' => $this->getConfig('use_dual_stack_endpoint'), 'accelerate' => $this->getConfig('use_accelerate_endpoint'), 'path_style' => $this->getConfig('use_path_style_endpoint')]), 's3.endpoint_middleware');
|
281 |
}
|
282 |
$stack->appendBuild(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\BucketEndpointArnMiddleware::wrap($this->getApi(), $this->getRegion(), ['use_arn_region' => $this->getConfig('use_arn_region'), 'dual_stack' => $this->getConfig('use_dual_stack_endpoint'), 'accelerate' => $this->getConfig('use_accelerate_endpoint'), 'path_style' => $this->getConfig('use_path_style_endpoint'), 'endpoint' => isset($args['endpoint']) ? $args['endpoint'] : null]), 's3.bucket_endpoint_arn');
|
283 |
$stack->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3\PutObjectUrlMiddleware::wrap(), 's3.put_object_url');
|
455 |
};
|
456 |
}
|
457 |
/** @internal */
|
458 |
+
public static function _applyRetryConfig($value, $args, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList $list)
|
459 |
{
|
460 |
+
if ($value) {
|
461 |
+
$config = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\ConfigurationProvider::unwrap($value);
|
462 |
+
if ($config->getMode() === 'legacy') {
|
463 |
+
$maxRetries = $config->getMaxAttempts() - 1;
|
464 |
+
$decider = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware::createDefaultDecider($maxRetries);
|
465 |
+
$decider = function ($retries, $command, $request, $result, $error) use($decider, $maxRetries) {
|
466 |
+
$maxRetries = null !== $command['@retries'] ? $command['@retries'] : $maxRetries;
|
467 |
+
if ($decider($retries, $command, $request, $result, $error)) {
|
468 |
+
return true;
|
469 |
+
}
|
470 |
+
if ($error instanceof AwsException && $retries < $maxRetries) {
|
471 |
+
if ($error->getResponse() && $error->getResponse()->getStatusCode() >= 400) {
|
472 |
+
return strpos($error->getResponse()->getBody(), 'Your socket connection to the server') !== false;
|
473 |
+
}
|
474 |
+
if ($error->getPrevious() instanceof RequestException) {
|
475 |
+
// All commands except CompleteMultipartUpload are
|
476 |
+
// idempotent and may be retried without worry if a
|
477 |
+
// networking error has occurred.
|
478 |
+
return $command->getName() !== 'CompleteMultipartUpload';
|
479 |
+
}
|
480 |
+
}
|
481 |
+
return false;
|
482 |
+
};
|
483 |
+
$delay = [\DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddleware::class, 'exponentialDelay'];
|
484 |
+
$list->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Middleware::retry($decider, $delay), 'retry');
|
485 |
+
} else {
|
486 |
+
$defaultDecider = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddlewareV2::createDefaultDecider(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Retry\QuotaManager(), $config->getMaxAttempts());
|
487 |
+
$list->appendSign(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\RetryMiddlewareV2::wrap($config, ['collect_stats' => $args['stats']['retries'], 'decider' => function ($attempts, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $cmd, $result) use($defaultDecider, $config) {
|
488 |
+
$isRetryable = $defaultDecider($attempts, $cmd, $result);
|
489 |
+
if (!$isRetryable && $result instanceof AwsException && $attempts < $config->getMaxAttempts()) {
|
490 |
+
if (!empty($result->getResponse()) && strpos($result->getResponse()->getBody(), 'Your socket connection to the server') !== false) {
|
491 |
+
$isRetryable = false;
|
492 |
+
}
|
493 |
+
if ($result->getPrevious() instanceof RequestException && $cmd->getName() !== 'CompleteMultipartUpload') {
|
494 |
+
$isRetryable = true;
|
495 |
+
}
|
496 |
+
}
|
497 |
+
return $isRetryable;
|
498 |
+
}]), 'retry');
|
499 |
}
|
500 |
+
}
|
|
|
|
|
|
|
501 |
}
|
502 |
/** @internal */
|
503 |
public static function _applyApiProvider($value, array &$args, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\HandlerList $list)
|
@@ -3,6 +3,8 @@
|
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
|
|
|
|
6 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
7 |
/**
|
8 |
* Used to update the URL used for S3 requests to support:
|
@@ -32,27 +34,31 @@ class S3EndpointMiddleware
|
|
32 |
/** @var string */
|
33 |
private $region;
|
34 |
/** @var callable */
|
|
|
|
|
35 |
private $nextHandler;
|
36 |
/**
|
37 |
* Create a middleware wrapper function
|
38 |
*
|
39 |
* @param string $region
|
|
|
40 |
* @param array $options
|
41 |
*
|
42 |
* @return callable
|
43 |
*/
|
44 |
-
public static function wrap($region, array $options)
|
45 |
{
|
46 |
-
return function (callable $handler) use($region, $options) {
|
47 |
-
return new self($handler, $region, $options);
|
48 |
};
|
49 |
}
|
50 |
-
public function __construct(callable $nextHandler, $region, array $options)
|
51 |
{
|
52 |
$this->pathStyleByDefault = isset($options['path_style']) ? (bool) $options['path_style'] : false;
|
53 |
$this->dualStackByDefault = isset($options['dual_stack']) ? (bool) $options['dual_stack'] : false;
|
54 |
$this->accelerateByDefault = isset($options['accelerate']) ? (bool) $options['accelerate'] : false;
|
55 |
$this->region = (string) $region;
|
|
|
56 |
$this->nextHandler = $nextHandler;
|
57 |
}
|
58 |
public function __invoke(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request)
|
@@ -130,7 +136,8 @@ class S3EndpointMiddleware
|
|
130 |
}
|
131 |
private function getDualStackHost()
|
132 |
{
|
133 |
-
|
|
|
134 |
}
|
135 |
private function applyAccelerateEndpoint(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request, $pattern)
|
136 |
{
|
@@ -139,7 +146,8 @@ class S3EndpointMiddleware
|
|
139 |
}
|
140 |
private function getAccelerateHost(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, $pattern)
|
141 |
{
|
142 |
-
|
|
|
143 |
}
|
144 |
private function getBucketlessPath($path, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command)
|
145 |
{
|
3 |
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\S3;
|
4 |
|
5 |
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\EndpointProvider;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\PartitionEndpointProvider;
|
8 |
use DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface;
|
9 |
/**
|
10 |
* Used to update the URL used for S3 requests to support:
|
34 |
/** @var string */
|
35 |
private $region;
|
36 |
/** @var callable */
|
37 |
+
private $endpointProvider;
|
38 |
+
/** @var callable */
|
39 |
private $nextHandler;
|
40 |
/**
|
41 |
* Create a middleware wrapper function
|
42 |
*
|
43 |
* @param string $region
|
44 |
+
* @param EndpointProvider $endpointProvider
|
45 |
* @param array $options
|
46 |
*
|
47 |
* @return callable
|
48 |
*/
|
49 |
+
public static function wrap($region, $endpointProvider, array $options)
|
50 |
{
|
51 |
+
return function (callable $handler) use($region, $endpointProvider, $options) {
|
52 |
+
return new self($handler, $region, $options, $endpointProvider);
|
53 |
};
|
54 |
}
|
55 |
+
public function __construct(callable $nextHandler, $region, array $options, $endpointProvider = null)
|
56 |
{
|
57 |
$this->pathStyleByDefault = isset($options['path_style']) ? (bool) $options['path_style'] : false;
|
58 |
$this->dualStackByDefault = isset($options['dual_stack']) ? (bool) $options['dual_stack'] : false;
|
59 |
$this->accelerateByDefault = isset($options['accelerate']) ? (bool) $options['accelerate'] : false;
|
60 |
$this->region = (string) $region;
|
61 |
+
$this->endpointProvider = is_null($endpointProvider) ? \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Endpoint\PartitionEndpointProvider::defaultProvider() : $endpointProvider;
|
62 |
$this->nextHandler = $nextHandler;
|
63 |
}
|
64 |
public function __invoke(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request)
|
136 |
}
|
137 |
private function getDualStackHost()
|
138 |
{
|
139 |
+
$dnsSuffix = $this->endpointProvider->getPartition($this->region, 's3')->getDnsSuffix();
|
140 |
+
return "s3.dualstack.{$this->region}.{$dnsSuffix}";
|
141 |
}
|
142 |
private function applyAccelerateEndpoint(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, \DeliciousBrains\WP_Offload_Media\Aws3\Psr\Http\Message\RequestInterface $request, $pattern)
|
143 |
{
|
146 |
}
|
147 |
private function getAccelerateHost(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command, $pattern)
|
148 |
{
|
149 |
+
$dnsSuffix = $this->endpointProvider->getPartition($this->region, 's3')->getDnsSuffix();
|
150 |
+
return "{$command['Bucket']}.{$pattern}.{$dnsSuffix}";
|
151 |
}
|
152 |
private function getBucketlessPath($path, \DeliciousBrains\WP_Offload_Media\Aws3\Aws\CommandInterface $command)
|
153 |
{
|
@@ -156,7 +156,7 @@ class StreamWrapper
|
|
156 |
if (!isset($params['ContentType']) && ($type = \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\mimetype_from_filename($params['Key']))) {
|
157 |
$params['ContentType'] = $type;
|
158 |
}
|
159 |
-
$this->clearCacheKey("
|
160 |
return $this->boolCall(function () use($params) {
|
161 |
return (bool) $this->getClient()->putObject($params);
|
162 |
});
|
156 |
if (!isset($params['ContentType']) && ($type = \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Psr7\mimetype_from_filename($params['Key']))) {
|
157 |
$params['ContentType'] = $type;
|
158 |
}
|
159 |
+
$this->clearCacheKey("{$this->protocol}://{$params['Bucket']}/{$params['Key']}");
|
160 |
return $this->boolCall(function () use($params) {
|
161 |
return (bool) $this->getClient()->putObject($params);
|
162 |
});
|
@@ -66,7 +66,11 @@ class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\A
|
|
66 |
*/
|
67 |
public static function defaultProvider(array $config = [])
|
68 |
{
|
69 |
-
$configProviders = [self::env()
|
|
|
|
|
|
|
|
|
70 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
71 |
if (isset($config['use_arn_region']) && $config['use_arn_region'] instanceof CacheInterface) {
|
72 |
return self::cache($memo, $config['use_arn_region'], self::$cacheKey);
|
66 |
*/
|
67 |
public static function defaultProvider(array $config = [])
|
68 |
{
|
69 |
+
$configProviders = [self::env()];
|
70 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
71 |
+
$configProviders[] = self::ini();
|
72 |
+
}
|
73 |
+
$configProviders[] = self::fallback();
|
74 |
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
75 |
if (isset($config['use_arn_region']) && $config['use_arn_region'] instanceof CacheInterface) {
|
76 |
return self::cache($memo, $config['use_arn_region'], self::$cacheKey);
|
@@ -47,6 +47,8 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
47 |
* @method \Aws\MultiRegionClient createMultiRegionBackup(array $args = [])
|
48 |
* @method \Aws\Batch\BatchClient createBatch(array $args = [])
|
49 |
* @method \Aws\MultiRegionClient createMultiRegionBatch(array $args = [])
|
|
|
|
|
50 |
* @method \Aws\Budgets\BudgetsClient createBudgets(array $args = [])
|
51 |
* @method \Aws\MultiRegionClient createMultiRegionBudgets(array $args = [])
|
52 |
* @method \Aws\Chime\ChimeClient createChime(array $args = [])
|
@@ -75,6 +77,8 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
75 |
* @method \Aws\MultiRegionClient createMultiRegionCloudWatchEvents(array $args = [])
|
76 |
* @method \Aws\CloudWatchLogs\CloudWatchLogsClient createCloudWatchLogs(array $args = [])
|
77 |
* @method \Aws\MultiRegionClient createMultiRegionCloudWatchLogs(array $args = [])
|
|
|
|
|
78 |
* @method \Aws\CodeBuild\CodeBuildClient createCodeBuild(array $args = [])
|
79 |
* @method \Aws\MultiRegionClient createMultiRegionCodeBuild(array $args = [])
|
80 |
* @method \Aws\CodeCommit\CodeCommitClient createCodeCommit(array $args = [])
|
@@ -201,8 +205,14 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
201 |
* @method \Aws\MultiRegionClient createMultiRegionGuardDuty(array $args = [])
|
202 |
* @method \Aws\Health\HealthClient createHealth(array $args = [])
|
203 |
* @method \Aws\MultiRegionClient createMultiRegionHealth(array $args = [])
|
|
|
|
|
|
|
|
|
204 |
* @method \Aws\Iam\IamClient createIam(array $args = [])
|
205 |
* @method \Aws\MultiRegionClient createMultiRegionIam(array $args = [])
|
|
|
|
|
206 |
* @method \Aws\ImportExport\ImportExportClient createImportExport(array $args = [])
|
207 |
* @method \Aws\MultiRegionClient createMultiRegionImportExport(array $args = [])
|
208 |
* @method \Aws\Inspector\InspectorClient createInspector(array $args = [])
|
@@ -221,6 +231,8 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
221 |
* @method \Aws\MultiRegionClient createMultiRegionIoTJobsDataPlane(array $args = [])
|
222 |
* @method \Aws\IoTSecureTunneling\IoTSecureTunnelingClient createIoTSecureTunneling(array $args = [])
|
223 |
* @method \Aws\MultiRegionClient createMultiRegionIoTSecureTunneling(array $args = [])
|
|
|
|
|
224 |
* @method \Aws\IoTThingsGraph\IoTThingsGraphClient createIoTThingsGraph(array $args = [])
|
225 |
* @method \Aws\MultiRegionClient createMultiRegionIoTThingsGraph(array $args = [])
|
226 |
* @method \Aws\Iot\IotClient createIot(array $args = [])
|
@@ -265,6 +277,8 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
265 |
* @method \Aws\MultiRegionClient createMultiRegionMachineLearning(array $args = [])
|
266 |
* @method \Aws\Macie\MacieClient createMacie(array $args = [])
|
267 |
* @method \Aws\MultiRegionClient createMultiRegionMacie(array $args = [])
|
|
|
|
|
268 |
* @method \Aws\ManagedBlockchain\ManagedBlockchainClient createManagedBlockchain(array $args = [])
|
269 |
* @method \Aws\MultiRegionClient createMultiRegionManagedBlockchain(array $args = [])
|
270 |
* @method \Aws\MarketplaceCatalog\MarketplaceCatalogClient createMarketplaceCatalog(array $args = [])
|
@@ -409,6 +423,8 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
409 |
* @method \Aws\MultiRegionClient createMultiRegionSupport(array $args = [])
|
410 |
* @method \Aws\Swf\SwfClient createSwf(array $args = [])
|
411 |
* @method \Aws\MultiRegionClient createMultiRegionSwf(array $args = [])
|
|
|
|
|
412 |
* @method \Aws\Textract\TextractClient createTextract(array $args = [])
|
413 |
* @method \Aws\MultiRegionClient createMultiRegionTextract(array $args = [])
|
414 |
* @method \Aws\TranscribeService\TranscribeServiceClient createTranscribeService(array $args = [])
|
@@ -444,7 +460,7 @@ namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws;
|
|
444 |
*/
|
445 |
class Sdk
|
446 |
{
|
447 |
-
const VERSION = '3.
|
448 |
/** @var array Arguments for creating clients */
|
449 |
private $args;
|
450 |
/**
|
47 |
* @method \Aws\MultiRegionClient createMultiRegionBackup(array $args = [])
|
48 |
* @method \Aws\Batch\BatchClient createBatch(array $args = [])
|
49 |
* @method \Aws\MultiRegionClient createMultiRegionBatch(array $args = [])
|
50 |
+
* @method \Aws\Braket\BraketClient createBraket(array $args = [])
|
51 |
+
* @method \Aws\MultiRegionClient createMultiRegionBraket(array $args = [])
|
52 |
* @method \Aws\Budgets\BudgetsClient createBudgets(array $args = [])
|
53 |
* @method \Aws\MultiRegionClient createMultiRegionBudgets(array $args = [])
|
54 |
* @method \Aws\Chime\ChimeClient createChime(array $args = [])
|
77 |
* @method \Aws\MultiRegionClient createMultiRegionCloudWatchEvents(array $args = [])
|
78 |
* @method \Aws\CloudWatchLogs\CloudWatchLogsClient createCloudWatchLogs(array $args = [])
|
79 |
* @method \Aws\MultiRegionClient createMultiRegionCloudWatchLogs(array $args = [])
|
80 |
+
* @method \Aws\CodeArtifact\CodeArtifactClient createCodeArtifact(array $args = [])
|
81 |
+
* @method \Aws\MultiRegionClient createMultiRegionCodeArtifact(array $args = [])
|
82 |
* @method \Aws\CodeBuild\CodeBuildClient createCodeBuild(array $args = [])
|
83 |
* @method \Aws\MultiRegionClient createMultiRegionCodeBuild(array $args = [])
|
84 |
* @method \Aws\CodeCommit\CodeCommitClient createCodeCommit(array $args = [])
|
205 |
* @method \Aws\MultiRegionClient createMultiRegionGuardDuty(array $args = [])
|
206 |
* @method \Aws\Health\HealthClient createHealth(array $args = [])
|
207 |
* @method \Aws\MultiRegionClient createMultiRegionHealth(array $args = [])
|
208 |
+
* @method \Aws\Honeycode\HoneycodeClient createHoneycode(array $args = [])
|
209 |
+
* @method \Aws\MultiRegionClient createMultiRegionHoneycode(array $args = [])
|
210 |
+
* @method \Aws\IVS\IVSClient createIVS(array $args = [])
|
211 |
+
* @method \Aws\MultiRegionClient createMultiRegionIVS(array $args = [])
|
212 |
* @method \Aws\Iam\IamClient createIam(array $args = [])
|
213 |
* @method \Aws\MultiRegionClient createMultiRegionIam(array $args = [])
|
214 |
+
* @method \Aws\IdentityStore\IdentityStoreClient createIdentityStore(array $args = [])
|
215 |
+
* @method \Aws\MultiRegionClient createMultiRegionIdentityStore(array $args = [])
|
216 |
* @method \Aws\ImportExport\ImportExportClient createImportExport(array $args = [])
|
217 |
* @method \Aws\MultiRegionClient createMultiRegionImportExport(array $args = [])
|
218 |
* @method \Aws\Inspector\InspectorClient createInspector(array $args = [])
|
231 |
* @method \Aws\MultiRegionClient createMultiRegionIoTJobsDataPlane(array $args = [])
|
232 |
* @method \Aws\IoTSecureTunneling\IoTSecureTunnelingClient createIoTSecureTunneling(array $args = [])
|
233 |
* @method \Aws\MultiRegionClient createMultiRegionIoTSecureTunneling(array $args = [])
|
234 |
+
* @method \Aws\IoTSiteWise\IoTSiteWiseClient createIoTSiteWise(array $args = [])
|
235 |
+
* @method \Aws\MultiRegionClient createMultiRegionIoTSiteWise(array $args = [])
|
236 |
* @method \Aws\IoTThingsGraph\IoTThingsGraphClient createIoTThingsGraph(array $args = [])
|
237 |
* @method \Aws\MultiRegionClient createMultiRegionIoTThingsGraph(array $args = [])
|
238 |
* @method \Aws\Iot\IotClient createIot(array $args = [])
|
277 |
* @method \Aws\MultiRegionClient createMultiRegionMachineLearning(array $args = [])
|
278 |
* @method \Aws\Macie\MacieClient createMacie(array $args = [])
|
279 |
* @method \Aws\MultiRegionClient createMultiRegionMacie(array $args = [])
|
280 |
+
* @method \Aws\Macie2\Macie2Client createMacie2(array $args = [])
|
281 |
+
* @method \Aws\MultiRegionClient createMultiRegionMacie2(array $args = [])
|
282 |
* @method \Aws\ManagedBlockchain\ManagedBlockchainClient createManagedBlockchain(array $args = [])
|
283 |
* @method \Aws\MultiRegionClient createMultiRegionManagedBlockchain(array $args = [])
|
284 |
* @method \Aws\MarketplaceCatalog\MarketplaceCatalogClient createMarketplaceCatalog(array $args = [])
|
423 |
* @method \Aws\MultiRegionClient createMultiRegionSupport(array $args = [])
|
424 |
* @method \Aws\Swf\SwfClient createSwf(array $args = [])
|
425 |
* @method \Aws\MultiRegionClient createMultiRegionSwf(array $args = [])
|
426 |
+
* @method \Aws\Synthetics\SyntheticsClient createSynthetics(array $args = [])
|
427 |
+
* @method \Aws\MultiRegionClient createMultiRegionSynthetics(array $args = [])
|
428 |
* @method \Aws\Textract\TextractClient createTextract(array $args = [])
|
429 |
* @method \Aws\MultiRegionClient createMultiRegionTextract(array $args = [])
|
430 |
* @method \Aws\TranscribeService\TranscribeServiceClient createTranscribeService(array $args = [])
|
460 |
*/
|
461 |
class Sdk
|
462 |
{
|
463 |
+
const VERSION = '3.150.1';
|
464 |
/** @var array Arguments for creating clients */
|
465 |
private $args;
|
466 |
/**
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\Exception;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException;
|
6 |
+
/**
|
7 |
+
* AWS Security Token Service exception.
|
8 |
+
*/
|
9 |
+
class StsException extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Exception\AwsException
|
10 |
+
{
|
11 |
+
}
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints;
|
4 |
+
|
5 |
+
class Configuration implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\ConfigurationInterface
|
6 |
+
{
|
7 |
+
private $endpointsType;
|
8 |
+
public function __construct($endpointsType)
|
9 |
+
{
|
10 |
+
$this->endpointsType = strtolower($endpointsType);
|
11 |
+
if (!in_array($this->endpointsType, ['legacy', 'regional'])) {
|
12 |
+
throw new \InvalidArgumentException("Configuration parameter must either be 'legacy' or 'regional'.");
|
13 |
+
}
|
14 |
+
}
|
15 |
+
/**
|
16 |
+
* {@inheritdoc}
|
17 |
+
*/
|
18 |
+
public function getEndpointsType()
|
19 |
+
{
|
20 |
+
return $this->endpointsType;
|
21 |
+
}
|
22 |
+
/**
|
23 |
+
* {@inheritdoc}
|
24 |
+
*/
|
25 |
+
public function toArray()
|
26 |
+
{
|
27 |
+
return ['endpoints_type' => $this->getEndpointsType()];
|
28 |
+
}
|
29 |
+
}
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Provides access to STS regional endpoints configuration options: endpoints_type
|
7 |
+
*/
|
8 |
+
interface ConfigurationInterface
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Returns the endpoints type
|
12 |
+
*
|
13 |
+
* @return string
|
14 |
+
*/
|
15 |
+
public function getEndpointsType();
|
16 |
+
/**
|
17 |
+
* Returns the configuration as an associative array
|
18 |
+
*
|
19 |
+
* @return array
|
20 |
+
*/
|
21 |
+
public function toArray();
|
22 |
+
}
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\AbstractConfigurationProvider;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\ConfigurationProviderInterface;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Exception\ConfigurationException;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise;
|
10 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\PromiseInterface;
|
11 |
+
/**
|
12 |
+
* A configuration provider is a function that returns a promise that is
|
13 |
+
* fulfilled with a {@see \Aws\Sts\RegionalEndpoints\ConfigurationInterface}
|
14 |
+
* or rejected with an {@see \Aws\Sts\RegionalEndpoints\Exception\ConfigurationException}.
|
15 |
+
*
|
16 |
+
* <code>
|
17 |
+
* use Aws\Sts\RegionalEndpoints\ConfigurationProvider;
|
18 |
+
* $provider = ConfigurationProvider::defaultProvider();
|
19 |
+
* // Returns a ConfigurationInterface or throws.
|
20 |
+
* $config = $provider()->wait();
|
21 |
+
* </code>
|
22 |
+
*
|
23 |
+
* Configuration providers can be composed to create configuration using
|
24 |
+
* conditional logic that can create different configurations in different
|
25 |
+
* environments. You can compose multiple providers into a single provider using
|
26 |
+
* {@see \Aws\Sts\RegionalEndpoints\ConfigurationProvider::chain}. This function
|
27 |
+
* accepts providers as variadic arguments and returns a new function that will
|
28 |
+
* invoke each provider until a successful configuration is returned.
|
29 |
+
*
|
30 |
+
* <code>
|
31 |
+
* // First try an INI file at this location.
|
32 |
+
* $a = ConfigurationProvider::ini(null, '/path/to/file.ini');
|
33 |
+
* // Then try an INI file at this location.
|
34 |
+
* $b = ConfigurationProvider::ini(null, '/path/to/other-file.ini');
|
35 |
+
* // Then try loading from environment variables.
|
36 |
+
* $c = ConfigurationProvider::env();
|
37 |
+
* // Combine the three providers together.
|
38 |
+
* $composed = ConfigurationProvider::chain($a, $b, $c);
|
39 |
+
* // Returns a promise that is fulfilled with a configuration or throws.
|
40 |
+
* $promise = $composed();
|
41 |
+
* // Wait on the configuration to resolve.
|
42 |
+
* $config = $promise->wait();
|
43 |
+
* </code>
|
44 |
+
*/
|
45 |
+
class ConfigurationProvider extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AbstractConfigurationProvider implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\ConfigurationProviderInterface
|
46 |
+
{
|
47 |
+
const DEFAULT_ENDPOINTS_TYPE = 'legacy';
|
48 |
+
const ENV_ENDPOINTS_TYPE = 'AWS_STS_REGIONAL_ENDPOINTS';
|
49 |
+
const ENV_PROFILE = 'AWS_PROFILE';
|
50 |
+
const INI_ENDPOINTS_TYPE = 'sts_regional_endpoints';
|
51 |
+
public static $cacheKey = 'aws_sts_regional_endpoints_config';
|
52 |
+
protected static $interfaceClass = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\ConfigurationInterface::class;
|
53 |
+
protected static $exceptionClass = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Exception\ConfigurationException::class;
|
54 |
+
/**
|
55 |
+
* Create a default config provider that first checks for environment
|
56 |
+
* variables, then checks for a specified profile in the environment-defined
|
57 |
+
* config file location (env variable is 'AWS_CONFIG_FILE', file location
|
58 |
+
* defaults to ~/.aws/config), then checks for the "default" profile in the
|
59 |
+
* environment-defined config file location, and failing those uses a default
|
60 |
+
* fallback set of configuration options.
|
61 |
+
*
|
62 |
+
* This provider is automatically wrapped in a memoize function that caches
|
63 |
+
* previously provided config options.
|
64 |
+
*
|
65 |
+
* @param array $config
|
66 |
+
*
|
67 |
+
* @return callable
|
68 |
+
*/
|
69 |
+
public static function defaultProvider(array $config = [])
|
70 |
+
{
|
71 |
+
$configProviders = [self::env()];
|
72 |
+
if (!isset($config['use_aws_shared_config_files']) || $config['use_aws_shared_config_files'] != false) {
|
73 |
+
$configProviders[] = self::ini();
|
74 |
+
}
|
75 |
+
$configProviders[] = self::fallback();
|
76 |
+
$memo = self::memoize(call_user_func_array('self::chain', $configProviders));
|
77 |
+
if (isset($config['sts_regional_endpoints']) && $config['sts_regional_endpoints'] instanceof CacheInterface) {
|
78 |
+
return self::cache($memo, $config['sts_regional_endpoints'], self::$cacheKey);
|
79 |
+
}
|
80 |
+
return $memo;
|
81 |
+
}
|
82 |
+
/**
|
83 |
+
* Provider that creates config from environment variables.
|
84 |
+
*
|
85 |
+
* @return callable
|
86 |
+
*/
|
87 |
+
public static function env()
|
88 |
+
{
|
89 |
+
return function () {
|
90 |
+
// Use config from environment variables, if available
|
91 |
+
$endpointsType = getenv(self::ENV_ENDPOINTS_TYPE);
|
92 |
+
if (!empty($endpointsType)) {
|
93 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Configuration($endpointsType));
|
94 |
+
}
|
95 |
+
return self::reject('Could not find environment variable config' . ' in ' . self::ENV_ENDPOINTS_TYPE);
|
96 |
+
};
|
97 |
+
}
|
98 |
+
/**
|
99 |
+
* Fallback config options when other sources are not set.
|
100 |
+
*
|
101 |
+
* @return callable
|
102 |
+
*/
|
103 |
+
public static function fallback()
|
104 |
+
{
|
105 |
+
return function () {
|
106 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Configuration(self::DEFAULT_ENDPOINTS_TYPE));
|
107 |
+
};
|
108 |
+
}
|
109 |
+
/**
|
110 |
+
* Config provider that creates config using a config file whose location
|
111 |
+
* is specified by an environment variable 'AWS_CONFIG_FILE', defaulting to
|
112 |
+
* ~/.aws/config if not specified
|
113 |
+
*
|
114 |
+
* @param string|null $profile Profile to use. If not specified will use
|
115 |
+
* the "default" profile.
|
116 |
+
* @param string|null $filename If provided, uses a custom filename rather
|
117 |
+
* than looking in the default directory.
|
118 |
+
*
|
119 |
+
* @return callable
|
120 |
+
*/
|
121 |
+
public static function ini($profile = null, $filename = null)
|
122 |
+
{
|
123 |
+
$filename = $filename ?: self::getDefaultConfigFilename();
|
124 |
+
$profile = $profile ?: (getenv(self::ENV_PROFILE) ?: 'default');
|
125 |
+
return function () use($profile, $filename) {
|
126 |
+
if (!is_readable($filename)) {
|
127 |
+
return self::reject("Cannot read configuration from {$filename}");
|
128 |
+
}
|
129 |
+
$data = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\parse_ini_file($filename, true);
|
130 |
+
if ($data === false) {
|
131 |
+
return self::reject("Invalid config file: {$filename}");
|
132 |
+
}
|
133 |
+
if (!isset($data[$profile])) {
|
134 |
+
return self::reject("'{$profile}' not found in config file");
|
135 |
+
}
|
136 |
+
if (!isset($data[$profile][self::INI_ENDPOINTS_TYPE])) {
|
137 |
+
return self::reject("Required STS regional endpoints config values \n not present in INI profile '{$profile}' ({$filename})");
|
138 |
+
}
|
139 |
+
return \DeliciousBrains\WP_Offload_Media\Aws3\GuzzleHttp\Promise\promise_for(new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Configuration($data[$profile][self::INI_ENDPOINTS_TYPE]));
|
140 |
+
};
|
141 |
+
}
|
142 |
+
/**
|
143 |
+
* Unwraps a configuration object in whatever valid form it is in,
|
144 |
+
* always returning a ConfigurationInterface object.
|
145 |
+
*
|
146 |
+
* @param mixed $config
|
147 |
+
* @return ConfigurationInterface
|
148 |
+
* @throws \InvalidArgumentException
|
149 |
+
*/
|
150 |
+
public static function unwrap($config)
|
151 |
+
{
|
152 |
+
if (is_callable($config)) {
|
153 |
+
$config = $config();
|
154 |
+
}
|
155 |
+
if ($config instanceof PromiseInterface) {
|
156 |
+
$config = $config->wait();
|
157 |
+
}
|
158 |
+
if ($config instanceof ConfigurationInterface) {
|
159 |
+
return $config;
|
160 |
+
}
|
161 |
+
if (is_string($config)) {
|
162 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Configuration($config);
|
163 |
+
}
|
164 |
+
if (is_array($config) && isset($config['endpoints_type'])) {
|
165 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Configuration($config['endpoints_type']);
|
166 |
+
}
|
167 |
+
throw new \InvalidArgumentException('Not a valid STS regional endpoints ' . 'configuration argument.');
|
168 |
+
}
|
169 |
+
}
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\Exception;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasMonitoringEventsTrait;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\MonitoringEventsInterface;
|
7 |
+
/**
|
8 |
+
* Represents an error interacting with configuration for sts regional endpoints
|
9 |
+
*/
|
10 |
+
class ConfigurationException extends \RuntimeException implements \DeliciousBrains\WP_Offload_Media\Aws3\Aws\MonitoringEventsInterface
|
11 |
+
{
|
12 |
+
use HasMonitoringEventsTrait;
|
13 |
+
}
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts;
|
4 |
+
|
5 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient;
|
6 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\CacheInterface;
|
7 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\Credentials;
|
8 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Result;
|
9 |
+
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\ConfigurationProvider;
|
10 |
+
/**
|
11 |
+
* This client is used to interact with the **AWS Security Token Service (AWS STS)**.
|
12 |
+
*
|
13 |
+
* @method \Aws\Result assumeRole(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise assumeRoleAsync(array $args = [])
|
15 |
+
* @method \Aws\Result assumeRoleWithSAML(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise assumeRoleWithSAMLAsync(array $args = [])
|
17 |
+
* @method \Aws\Result assumeRoleWithWebIdentity(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise assumeRoleWithWebIdentityAsync(array $args = [])
|
19 |
+
* @method \Aws\Result decodeAuthorizationMessage(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise decodeAuthorizationMessageAsync(array $args = [])
|
21 |
+
* @method \Aws\Result getAccessKeyInfo(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise getAccessKeyInfoAsync(array $args = [])
|
23 |
+
* @method \Aws\Result getCallerIdentity(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise getCallerIdentityAsync(array $args = [])
|
25 |
+
* @method \Aws\Result getFederationToken(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise getFederationTokenAsync(array $args = [])
|
27 |
+
* @method \Aws\Result getSessionToken(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise getSessionTokenAsync(array $args = [])
|
29 |
+
*/
|
30 |
+
class StsClient extends \DeliciousBrains\WP_Offload_Media\Aws3\Aws\AwsClient
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* {@inheritdoc}
|
34 |
+
*
|
35 |
+
* In addition to the options available to
|
36 |
+
* {@see \Aws\AwsClient::__construct}, StsClient accepts the following
|
37 |
+
* options:
|
38 |
+
*
|
39 |
+
* - sts_regional_endpoints:
|
40 |
+
* (Aws\Sts\RegionalEndpoints\ConfigurationInterface|Aws\CacheInterface\|callable|string|array)
|
41 |
+
* Specifies whether to use regional or legacy endpoints for legacy regions.
|
42 |
+
* Provide an Aws\Sts\RegionalEndpoints\ConfigurationInterface object, an
|
43 |
+
* instance of Aws\CacheInterface, a callable configuration provider used
|
44 |
+
* to create endpoint configuration, a string value of `legacy` or
|
45 |
+
* `regional`, or an associative array with the following keys:
|
46 |
+
* endpoint_types (string) Set to `legacy` or `regional`, defaults to
|
47 |
+
* `legacy`
|
48 |
+
*
|
49 |
+
* @param array $args
|
50 |
+
*/
|
51 |
+
public function __construct(array $args)
|
52 |
+
{
|
53 |
+
if (!isset($args['sts_regional_endpoints']) || $args['sts_regional_endpoints'] instanceof CacheInterface) {
|
54 |
+
$args['sts_regional_endpoints'] = \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Sts\RegionalEndpoints\ConfigurationProvider::defaultProvider($args);
|
55 |
+
}
|
56 |
+
parent::__construct($args);
|
57 |
+
}
|
58 |
+
/**
|
59 |
+
* Creates credentials from the result of an STS operations
|
60 |
+
*
|
61 |
+
* @param Result $result Result of an STS operation
|
62 |
+
*
|
63 |
+
* @return Credentials
|
64 |
+
* @throws \InvalidArgumentException if the result contains no credentials
|
65 |
+
*/
|
66 |
+
public function createCredentials(\DeliciousBrains\WP_Offload_Media\Aws3\Aws\Result $result)
|
67 |
+
{
|
68 |
+
if (!$result->hasKey('Credentials')) {
|
69 |
+
throw new \InvalidArgumentException('Result contains no credentials');
|
70 |
+
}
|
71 |
+
$c = $result['Credentials'];
|
72 |
+
return new \DeliciousBrains\WP_Offload_Media\Aws3\Aws\Credentials\Credentials($c['AccessKeyId'], $c['SecretAccessKey'], isset($c['SessionToken']) ? $c['SessionToken'] : null, isset($c['Expiration']) && $c['Expiration'] instanceof \DateTimeInterface ? (int) $c['Expiration']->format('U') : null);
|
73 |
+
}
|
74 |
+
}
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/accessanalyzer/2019-11-01/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2019-11-01', 'endpointPrefix' => 'access-analyzer', 'jsonVersion' => '1.1', 'protocol' => 'rest-json', 'serviceFullName' => 'Access Analyzer', 'serviceId' => 'AccessAnalyzer', 'signatureVersion' => 'v4', 'signingName' => 'access-analyzer', 'uid' => 'accessanalyzer-2019-11-01'], 'operations' => ['CreateAnalyzer' => ['name' => 'CreateAnalyzer', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer', 'responseCode' => 200], 'input' => ['shape' => 'CreateAnalyzerRequest'], 'output' => ['shape' => 'CreateAnalyzerResponse'], 'errors' => [['shape' => 'ConflictException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ServiceQuotaExceededException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'CreateArchiveRule' => ['name' => 'CreateArchiveRule', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer/{analyzerName}/archive-rule', 'responseCode' => 200], 'input' => ['shape' => 'CreateArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ServiceQuotaExceededException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'DeleteAnalyzer' => ['name' => 'DeleteAnalyzer', 'http' => ['method' => 'DELETE', 'requestUri' => '/analyzer/{analyzerName}', 'responseCode' => 200], 'input' => ['shape' => 'DeleteAnalyzerRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'DeleteArchiveRule' => ['name' => 'DeleteArchiveRule', 'http' => ['method' => 'DELETE', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'DeleteArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'GetAnalyzedResource' => ['name' => 'GetAnalyzedResource', 'http' => ['method' => 'GET', 'requestUri' => '/analyzed-resource', 'responseCode' => 200], 'input' => ['shape' => 'GetAnalyzedResourceRequest'], 'output' => ['shape' => 'GetAnalyzedResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetAnalyzer' => ['name' => 'GetAnalyzer', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}', 'responseCode' => 200], 'input' => ['shape' => 'GetAnalyzerRequest'], 'output' => ['shape' => 'GetAnalyzerResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetArchiveRule' => ['name' => 'GetArchiveRule', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'GetArchiveRuleRequest'], 'output' => ['shape' => 'GetArchiveRuleResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetFinding' => ['name' => 'GetFinding', 'http' => ['method' => 'GET', 'requestUri' => '/finding/{id}', 'responseCode' => 200], 'input' => ['shape' => 'GetFindingRequest'], 'output' => ['shape' => 'GetFindingResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListAnalyzedResources' => ['name' => 'ListAnalyzedResources', 'http' => ['method' => 'POST', 'requestUri' => '/analyzed-resource', 'responseCode' => 200], 'input' => ['shape' => 'ListAnalyzedResourcesRequest'], 'output' => ['shape' => 'ListAnalyzedResourcesResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListAnalyzers' => ['name' => 'ListAnalyzers', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer', 'responseCode' => 200], 'input' => ['shape' => 'ListAnalyzersRequest'], 'output' => ['shape' => 'ListAnalyzersResponse'], 'errors' => [['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListArchiveRules' => ['name' => 'ListArchiveRules', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}/archive-rule', 'responseCode' => 200], 'input' => ['shape' => 'ListArchiveRulesRequest'], 'output' => ['shape' => 'ListArchiveRulesResponse'], 'errors' => [['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListFindings' => ['name' => 'ListFindings', 'http' => ['method' => 'POST', 'requestUri' => '/finding', 'responseCode' => 200], 'input' => ['shape' => 'ListFindingsRequest'], 'output' => ['shape' => 'ListFindingsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListTagsForResource' => ['name' => 'ListTagsForResource', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'ListTagsForResourceRequest'], 'output' => ['shape' => 'ListTagsForResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'StartResourceScan' => ['name' => 'StartResourceScan', 'http' => ['method' => 'POST', 'requestUri' => '/resource/scan', 'responseCode' => 200], 'input' => ['shape' => 'StartResourceScanRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UpdateArchiveRule' => ['name' => 'UpdateArchiveRule', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UpdateFindings' => ['name' => 'UpdateFindings', 'http' => ['method' => 'PUT', 'requestUri' => '/finding', 'responseCode' => 200], 'input' => ['shape' => 'UpdateFindingsRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true]], 'shapes' => ['AccessDeniedException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 403, 'senderFault' => \true], 'exception' => \true], 'ActionList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'AnalyzedResource' => ['type' => 'structure', 'required' => ['analyzedAt', 'createdAt', 'isPublic', 'resourceArn', 'resourceType', 'updatedAt'], 'members' => ['actions' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'isPublic' => ['shape' => 'Boolean'], 'resourceArn' => ['shape' => 'ResourceArn'], 'resourceType' => ['shape' => 'ResourceType'], 'sharedVia' => ['shape' => 'SharedViaList'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'AnalyzedResourceSummary' => ['type' => 'structure', 'required' => ['resourceArn', 'resourceType'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn'], 'resourceType' => ['shape' => 'ResourceType']]], 'AnalyzedResourcesList' => ['type' => 'list', 'member' => ['shape' => 'AnalyzedResourceSummary']], 'AnalyzerArn' => ['type' => 'string', 'pattern' => '^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:analyzer/.{1,255}$'], 'AnalyzerSummary' => ['type' => 'structure', 'required' => ['arn', 'createdAt', 'name', 'type'], 'members' => ['arn' => ['shape' => 'AnalyzerArn'], 'createdAt' => ['shape' => 'Timestamp'], 'lastResourceAnalyzed' => ['shape' => 'String'], 'lastResourceAnalyzedAt' => ['shape' => 'Timestamp'], 'name' => ['shape' => 'Name'], 'tags' => ['shape' => 'TagsMap'], 'type' => ['shape' => 'Type']]], 'AnalyzersList' => ['type' => 'list', 'member' => ['shape' => 'AnalyzerSummary']], 'ArchiveRuleSummary' => ['type' => 'structure', 'required' => ['createdAt', 'filter', 'ruleName', 'updatedAt'], 'members' => ['createdAt' => ['shape' => 'Timestamp'], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name'], 'updatedAt' => ['shape' => 'Timestamp']]], 'ArchiveRulesList' => ['type' => 'list', 'member' => ['shape' => 'ArchiveRuleSummary']], 'Boolean' => ['type' => 'boolean', 'box' => \true], 'ConditionKeyMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ConflictException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 409, 'senderFault' => \true], 'exception' => \true], 'CreateAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'type'], 'members' => ['analyzerName' => ['shape' => 'Name'], 'archiveRules' => ['shape' => 'InlineArchiveRulesList'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'tags' => ['shape' => 'TagsMap'], 'type' => ['shape' => 'Type']]], 'CreateAnalyzerResponse' => ['type' => 'structure', 'members' => ['arn' => ['shape' => 'AnalyzerArn']]], 'CreateArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'filter', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name']]], 'Criterion' => ['type' => 'structure', 'members' => ['contains' => ['shape' => 'ValueList'], 'eq' => ['shape' => 'ValueList'], 'exists' => ['shape' => 'Boolean'], 'neq' => ['shape' => 'ValueList']]], 'DeleteAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true, 'location' => 'querystring', 'locationName' => 'clientToken']]], 'DeleteArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true, 'location' => 'querystring', 'locationName' => 'clientToken'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'FilterCriteriaMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'Criterion']], 'Finding' => ['type' => 'structure', 'required' => ['analyzedAt', 'condition', 'createdAt', 'id', 'resourceType', 'status', 'updatedAt'], 'members' => ['action' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'condition' => ['shape' => 'ConditionKeyMap'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'id' => ['shape' => 'FindingId'], 'isPublic' => ['shape' => 'Boolean'], 'principal' => ['shape' => 'PrincipalMap'], 'resource' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'FindingId' => ['type' => 'string'], 'FindingIdList' => ['type' => 'list', 'member' => ['shape' => 'FindingId']], 'FindingStatus' => ['type' => 'string', 'enum' => ['ACTIVE', 'ARCHIVED', 'RESOLVED']], 'FindingStatusUpdate' => ['type' => 'string', 'enum' => ['ACTIVE', 'ARCHIVED']], 'FindingSummary' => ['type' => 'structure', 'required' => ['analyzedAt', 'condition', 'createdAt', 'id', 'resourceType', 'status', 'updatedAt'], 'members' => ['action' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'condition' => ['shape' => 'ConditionKeyMap'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'id' => ['shape' => 'FindingId'], 'isPublic' => ['shape' => 'Boolean'], 'principal' => ['shape' => 'PrincipalMap'], 'resource' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'FindingsList' => ['type' => 'list', 'member' => ['shape' => 'FindingSummary']], 'GetAnalyzedResourceRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'resourceArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn', 'location' => 'querystring', 'locationName' => 'analyzerArn'], 'resourceArn' => ['shape' => 'ResourceArn', 'location' => 'querystring', 'locationName' => 'resourceArn']]], 'GetAnalyzedResourceResponse' => ['type' => 'structure', 'members' => ['resource' => ['shape' => 'AnalyzedResource']]], 'GetAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName']]], 'GetAnalyzerResponse' => ['type' => 'structure', 'required' => ['analyzer'], 'members' => ['analyzer' => ['shape' => 'AnalyzerSummary']]], 'GetArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'GetArchiveRuleResponse' => ['type' => 'structure', 'required' => ['archiveRule'], 'members' => ['archiveRule' => ['shape' => 'ArchiveRuleSummary']]], 'GetFindingRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'id'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn', 'location' => 'querystring', 'locationName' => 'analyzerArn'], 'id' => ['shape' => 'FindingId', 'location' => 'uri', 'locationName' => 'id']]], 'GetFindingResponse' => ['type' => 'structure', 'members' => ['finding' => ['shape' => 'Finding']]], 'InlineArchiveRule' => ['type' => 'structure', 'required' => ['filter', 'ruleName'], 'members' => ['filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name']]], 'InlineArchiveRulesList' => ['type' => 'list', 'member' => ['shape' => 'InlineArchiveRule']], 'Integer' => ['type' => 'integer', 'box' => \true], 'InternalServerException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String'], 'retryAfterSeconds' => ['shape' => 'Integer', 'location' => 'header', 'locationName' => 'Retry-After']], 'error' => ['httpStatusCode' => 500], 'exception' => \true, 'fault' => \true], 'ListAnalyzedResourcesRequest' => ['type' => 'structure', 'required' => ['analyzerArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'maxResults' => ['shape' => 'Integer'], 'nextToken' => ['shape' => 'Token'], 'resourceType' => ['shape' => 'ResourceType']]], 'ListAnalyzedResourcesResponse' => ['type' => 'structure', 'required' => ['analyzedResources'], 'members' => ['analyzedResources' => ['shape' => 'AnalyzedResourcesList'], 'nextToken' => ['shape' => 'Token']]], 'ListAnalyzersRequest' => ['type' => 'structure', 'members' => ['maxResults' => ['shape' => 'Integer', 'location' => 'querystring', 'locationName' => 'maxResults'], 'nextToken' => ['shape' => 'Token', 'location' => 'querystring', 'locationName' => 'nextToken'], 'type' => ['shape' => 'Type', 'location' => 'querystring', 'locationName' => 'type']]], 'ListAnalyzersResponse' => ['type' => 'structure', 'required' => ['analyzers'], 'members' => ['analyzers' => ['shape' => 'AnalyzersList'], 'nextToken' => ['shape' => 'Token']]], 'ListArchiveRulesRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'maxResults' => ['shape' => 'Integer', 'location' => 'querystring', 'locationName' => 'maxResults'], 'nextToken' => ['shape' => 'Token', 'location' => 'querystring', 'locationName' => 'nextToken']]], 'ListArchiveRulesResponse' => ['type' => 'structure', 'required' => ['archiveRules'], 'members' => ['archiveRules' => ['shape' => 'ArchiveRulesList'], 'nextToken' => ['shape' => 'Token']]], 'ListFindingsRequest' => ['type' => 'structure', 'required' => ['analyzerArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'filter' => ['shape' => 'FilterCriteriaMap'], 'maxResults' => ['shape' => 'Integer'], 'nextToken' => ['shape' => 'Token'], 'sort' => ['shape' => 'SortCriteria']]], 'ListFindingsResponse' => ['type' => 'structure', 'required' => ['findings'], 'members' => ['findings' => ['shape' => 'FindingsList'], 'nextToken' => ['shape' => 'Token']]], 'ListTagsForResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn']]], 'ListTagsForResourceResponse' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'TagsMap']]], 'Name' => ['type' => 'string', 'max' => 255, 'min' => 1, 'pattern' => '^[A-Za-z][A-Za-z0-9_.-]*$'], 'OrderBy' => ['type' => 'string', 'enum' => ['ASC', 'DESC']], 'PrincipalMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ResourceArn' => ['type' => 'string', 'pattern' => 'arn:[^:]*:[^:]*:[^:]*:[^:]*:.*$'], 'ResourceNotFoundException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 404, 'senderFault' => \true], 'exception' => \true], 'ResourceType' => ['type' => 'string', 'enum' => ['AWS::IAM::Role', 'AWS::KMS::Key', 'AWS::Lambda::Function', 'AWS::Lambda::LayerVersion', 'AWS::S3::Bucket', 'AWS::SQS::Queue']], 'ServiceQuotaExceededException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 402, 'senderFault' => \true], 'exception' => \true], 'SharedViaList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'SortCriteria' => ['type' => 'structure', 'members' => ['attributeName' => ['shape' => 'String'], 'orderBy' => ['shape' => 'OrderBy']]], 'StartResourceScanRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'resourceArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'resourceArn' => ['shape' => 'ResourceArn']]], 'String' => ['type' => 'string'], 'TagKeys' => ['type' => 'list', 'member' => ['shape' => 'String']], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tags' => ['shape' => 'TagsMap']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagsMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ThrottlingException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String'], 'retryAfterSeconds' => ['shape' => 'Integer', 'location' => 'header', 'locationName' => 'Retry-After']], 'error' => ['httpStatusCode' => 429, 'senderFault' => \true], 'exception' => \true], 'Timestamp' => ['type' => 'timestamp', 'timestampFormat' => 'iso8601'], 'Token' => ['type' => 'string'], 'Type' => ['type' => 'string', 'enum' => ['ACCOUNT']], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tagKeys' => ['shape' => 'TagKeys', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'filter', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'UpdateFindingsRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'status'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'ids' => ['shape' => 'FindingIdList'], 'resourceArn' => ['shape' => 'ResourceArn'], 'status' => ['shape' => 'FindingStatusUpdate']]], 'ValidationException' => ['type' => 'structure', 'required' => ['message', 'reason'], 'members' => ['fieldList' => ['shape' => 'ValidationExceptionFieldList'], 'message' => ['shape' => 'String'], 'reason' => ['shape' => 'ValidationExceptionReason']], 'error' => ['httpStatusCode' => 400, 'senderFault' => \true], 'exception' => \true], 'ValidationExceptionField' => ['type' => 'structure', 'required' => ['message', 'name'], 'members' => ['message' => ['shape' => 'String'], 'name' => ['shape' => 'String']]], 'ValidationExceptionFieldList' => ['type' => 'list', 'member' => ['shape' => 'ValidationExceptionField']], 'ValidationExceptionReason' => ['type' => 'string', 'enum' => ['cannotParse', 'fieldValidationFailed', 'other', 'unknownOperation']], 'ValueList' => ['type' => 'list', 'member' => ['shape' => 'String'], 'max' => 20, 'min' => 1]]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/accessanalyzer/2019-11-01/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2019-11-01', 'endpointPrefix' => 'access-analyzer', 'jsonVersion' => '1.1', 'protocol' => 'rest-json', 'serviceFullName' => 'Access Analyzer', 'serviceId' => 'AccessAnalyzer', 'signatureVersion' => 'v4', 'signingName' => 'access-analyzer', 'uid' => 'accessanalyzer-2019-11-01'], 'operations' => ['CreateAnalyzer' => ['name' => 'CreateAnalyzer', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer', 'responseCode' => 200], 'input' => ['shape' => 'CreateAnalyzerRequest'], 'output' => ['shape' => 'CreateAnalyzerResponse'], 'errors' => [['shape' => 'ConflictException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ServiceQuotaExceededException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'CreateArchiveRule' => ['name' => 'CreateArchiveRule', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer/{analyzerName}/archive-rule', 'responseCode' => 200], 'input' => ['shape' => 'CreateArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ServiceQuotaExceededException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'DeleteAnalyzer' => ['name' => 'DeleteAnalyzer', 'http' => ['method' => 'DELETE', 'requestUri' => '/analyzer/{analyzerName}', 'responseCode' => 200], 'input' => ['shape' => 'DeleteAnalyzerRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'DeleteArchiveRule' => ['name' => 'DeleteArchiveRule', 'http' => ['method' => 'DELETE', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'DeleteArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'GetAnalyzedResource' => ['name' => 'GetAnalyzedResource', 'http' => ['method' => 'GET', 'requestUri' => '/analyzed-resource', 'responseCode' => 200], 'input' => ['shape' => 'GetAnalyzedResourceRequest'], 'output' => ['shape' => 'GetAnalyzedResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetAnalyzer' => ['name' => 'GetAnalyzer', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}', 'responseCode' => 200], 'input' => ['shape' => 'GetAnalyzerRequest'], 'output' => ['shape' => 'GetAnalyzerResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetArchiveRule' => ['name' => 'GetArchiveRule', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'GetArchiveRuleRequest'], 'output' => ['shape' => 'GetArchiveRuleResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'GetFinding' => ['name' => 'GetFinding', 'http' => ['method' => 'GET', 'requestUri' => '/finding/{id}', 'responseCode' => 200], 'input' => ['shape' => 'GetFindingRequest'], 'output' => ['shape' => 'GetFindingResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListAnalyzedResources' => ['name' => 'ListAnalyzedResources', 'http' => ['method' => 'POST', 'requestUri' => '/analyzed-resource', 'responseCode' => 200], 'input' => ['shape' => 'ListAnalyzedResourcesRequest'], 'output' => ['shape' => 'ListAnalyzedResourcesResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListAnalyzers' => ['name' => 'ListAnalyzers', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer', 'responseCode' => 200], 'input' => ['shape' => 'ListAnalyzersRequest'], 'output' => ['shape' => 'ListAnalyzersResponse'], 'errors' => [['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListArchiveRules' => ['name' => 'ListArchiveRules', 'http' => ['method' => 'GET', 'requestUri' => '/analyzer/{analyzerName}/archive-rule', 'responseCode' => 200], 'input' => ['shape' => 'ListArchiveRulesRequest'], 'output' => ['shape' => 'ListArchiveRulesResponse'], 'errors' => [['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListFindings' => ['name' => 'ListFindings', 'http' => ['method' => 'POST', 'requestUri' => '/finding', 'responseCode' => 200], 'input' => ['shape' => 'ListFindingsRequest'], 'output' => ['shape' => 'ListFindingsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'ListTagsForResource' => ['name' => 'ListTagsForResource', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'ListTagsForResourceRequest'], 'output' => ['shape' => 'ListTagsForResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'StartResourceScan' => ['name' => 'StartResourceScan', 'http' => ['method' => 'POST', 'requestUri' => '/resource/scan', 'responseCode' => 200], 'input' => ['shape' => 'StartResourceScanRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resourceArn}', 'responseCode' => 200], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UpdateArchiveRule' => ['name' => 'UpdateArchiveRule', 'http' => ['method' => 'PUT', 'requestUri' => '/analyzer/{analyzerName}/archive-rule/{ruleName}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateArchiveRuleRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true], 'UpdateFindings' => ['name' => 'UpdateFindings', 'http' => ['method' => 'PUT', 'requestUri' => '/finding', 'responseCode' => 200], 'input' => ['shape' => 'UpdateFindingsRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ValidationException'], ['shape' => 'InternalServerException'], ['shape' => 'ThrottlingException'], ['shape' => 'AccessDeniedException']], 'idempotent' => \true]], 'shapes' => ['AccessDeniedException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 403, 'senderFault' => \true], 'exception' => \true], 'ActionList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'AnalyzedResource' => ['type' => 'structure', 'required' => ['analyzedAt', 'createdAt', 'isPublic', 'resourceArn', 'resourceOwnerAccount', 'resourceType', 'updatedAt'], 'members' => ['actions' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'isPublic' => ['shape' => 'Boolean'], 'resourceArn' => ['shape' => 'ResourceArn'], 'resourceOwnerAccount' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType'], 'sharedVia' => ['shape' => 'SharedViaList'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'AnalyzedResourceSummary' => ['type' => 'structure', 'required' => ['resourceArn', 'resourceOwnerAccount', 'resourceType'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn'], 'resourceOwnerAccount' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType']]], 'AnalyzedResourcesList' => ['type' => 'list', 'member' => ['shape' => 'AnalyzedResourceSummary']], 'AnalyzerArn' => ['type' => 'string', 'pattern' => '^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:analyzer/.{1,255}$'], 'AnalyzerStatus' => ['type' => 'string', 'enum' => ['ACTIVE', 'CREATING', 'DISABLED', 'FAILED']], 'AnalyzerSummary' => ['type' => 'structure', 'required' => ['arn', 'createdAt', 'name', 'status', 'type'], 'members' => ['arn' => ['shape' => 'AnalyzerArn'], 'createdAt' => ['shape' => 'Timestamp'], 'lastResourceAnalyzed' => ['shape' => 'String'], 'lastResourceAnalyzedAt' => ['shape' => 'Timestamp'], 'name' => ['shape' => 'Name'], 'status' => ['shape' => 'AnalyzerStatus'], 'statusReason' => ['shape' => 'StatusReason'], 'tags' => ['shape' => 'TagsMap'], 'type' => ['shape' => 'Type']]], 'AnalyzersList' => ['type' => 'list', 'member' => ['shape' => 'AnalyzerSummary']], 'ArchiveRuleSummary' => ['type' => 'structure', 'required' => ['createdAt', 'filter', 'ruleName', 'updatedAt'], 'members' => ['createdAt' => ['shape' => 'Timestamp'], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name'], 'updatedAt' => ['shape' => 'Timestamp']]], 'ArchiveRulesList' => ['type' => 'list', 'member' => ['shape' => 'ArchiveRuleSummary']], 'Boolean' => ['type' => 'boolean', 'box' => \true], 'ConditionKeyMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ConflictException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 409, 'senderFault' => \true], 'exception' => \true], 'CreateAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'type'], 'members' => ['analyzerName' => ['shape' => 'Name'], 'archiveRules' => ['shape' => 'InlineArchiveRulesList'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'tags' => ['shape' => 'TagsMap'], 'type' => ['shape' => 'Type']]], 'CreateAnalyzerResponse' => ['type' => 'structure', 'members' => ['arn' => ['shape' => 'AnalyzerArn']]], 'CreateArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'filter', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name']]], 'Criterion' => ['type' => 'structure', 'members' => ['contains' => ['shape' => 'ValueList'], 'eq' => ['shape' => 'ValueList'], 'exists' => ['shape' => 'Boolean'], 'neq' => ['shape' => 'ValueList']]], 'DeleteAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true, 'location' => 'querystring', 'locationName' => 'clientToken']]], 'DeleteArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true, 'location' => 'querystring', 'locationName' => 'clientToken'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'FilterCriteriaMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'Criterion']], 'Finding' => ['type' => 'structure', 'required' => ['analyzedAt', 'condition', 'createdAt', 'id', 'resourceOwnerAccount', 'resourceType', 'status', 'updatedAt'], 'members' => ['action' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'condition' => ['shape' => 'ConditionKeyMap'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'id' => ['shape' => 'FindingId'], 'isPublic' => ['shape' => 'Boolean'], 'principal' => ['shape' => 'PrincipalMap'], 'resource' => ['shape' => 'String'], 'resourceOwnerAccount' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType'], 'sources' => ['shape' => 'FindingSourceList'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'FindingId' => ['type' => 'string'], 'FindingIdList' => ['type' => 'list', 'member' => ['shape' => 'FindingId']], 'FindingSource' => ['type' => 'structure', 'required' => ['type'], 'members' => ['detail' => ['shape' => 'FindingSourceDetail'], 'type' => ['shape' => 'FindingSourceType']]], 'FindingSourceDetail' => ['type' => 'structure', 'members' => ['accessPointArn' => ['shape' => 'String']]], 'FindingSourceList' => ['type' => 'list', 'member' => ['shape' => 'FindingSource']], 'FindingSourceType' => ['type' => 'string', 'enum' => ['BUCKET_ACL', 'POLICY', 'S3_ACCESS_POINT']], 'FindingStatus' => ['type' => 'string', 'enum' => ['ACTIVE', 'ARCHIVED', 'RESOLVED']], 'FindingStatusUpdate' => ['type' => 'string', 'enum' => ['ACTIVE', 'ARCHIVED']], 'FindingSummary' => ['type' => 'structure', 'required' => ['analyzedAt', 'condition', 'createdAt', 'id', 'resourceOwnerAccount', 'resourceType', 'status', 'updatedAt'], 'members' => ['action' => ['shape' => 'ActionList'], 'analyzedAt' => ['shape' => 'Timestamp'], 'condition' => ['shape' => 'ConditionKeyMap'], 'createdAt' => ['shape' => 'Timestamp'], 'error' => ['shape' => 'String'], 'id' => ['shape' => 'FindingId'], 'isPublic' => ['shape' => 'Boolean'], 'principal' => ['shape' => 'PrincipalMap'], 'resource' => ['shape' => 'String'], 'resourceOwnerAccount' => ['shape' => 'String'], 'resourceType' => ['shape' => 'ResourceType'], 'sources' => ['shape' => 'FindingSourceList'], 'status' => ['shape' => 'FindingStatus'], 'updatedAt' => ['shape' => 'Timestamp']]], 'FindingsList' => ['type' => 'list', 'member' => ['shape' => 'FindingSummary']], 'GetAnalyzedResourceRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'resourceArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn', 'location' => 'querystring', 'locationName' => 'analyzerArn'], 'resourceArn' => ['shape' => 'ResourceArn', 'location' => 'querystring', 'locationName' => 'resourceArn']]], 'GetAnalyzedResourceResponse' => ['type' => 'structure', 'members' => ['resource' => ['shape' => 'AnalyzedResource']]], 'GetAnalyzerRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName']]], 'GetAnalyzerResponse' => ['type' => 'structure', 'required' => ['analyzer'], 'members' => ['analyzer' => ['shape' => 'AnalyzerSummary']]], 'GetArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'GetArchiveRuleResponse' => ['type' => 'structure', 'required' => ['archiveRule'], 'members' => ['archiveRule' => ['shape' => 'ArchiveRuleSummary']]], 'GetFindingRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'id'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn', 'location' => 'querystring', 'locationName' => 'analyzerArn'], 'id' => ['shape' => 'FindingId', 'location' => 'uri', 'locationName' => 'id']]], 'GetFindingResponse' => ['type' => 'structure', 'members' => ['finding' => ['shape' => 'Finding']]], 'InlineArchiveRule' => ['type' => 'structure', 'required' => ['filter', 'ruleName'], 'members' => ['filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name']]], 'InlineArchiveRulesList' => ['type' => 'list', 'member' => ['shape' => 'InlineArchiveRule']], 'Integer' => ['type' => 'integer', 'box' => \true], 'InternalServerException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String'], 'retryAfterSeconds' => ['shape' => 'Integer', 'location' => 'header', 'locationName' => 'Retry-After']], 'error' => ['httpStatusCode' => 500], 'exception' => \true, 'fault' => \true], 'ListAnalyzedResourcesRequest' => ['type' => 'structure', 'required' => ['analyzerArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'maxResults' => ['shape' => 'Integer'], 'nextToken' => ['shape' => 'Token'], 'resourceType' => ['shape' => 'ResourceType']]], 'ListAnalyzedResourcesResponse' => ['type' => 'structure', 'required' => ['analyzedResources'], 'members' => ['analyzedResources' => ['shape' => 'AnalyzedResourcesList'], 'nextToken' => ['shape' => 'Token']]], 'ListAnalyzersRequest' => ['type' => 'structure', 'members' => ['maxResults' => ['shape' => 'Integer', 'location' => 'querystring', 'locationName' => 'maxResults'], 'nextToken' => ['shape' => 'Token', 'location' => 'querystring', 'locationName' => 'nextToken'], 'type' => ['shape' => 'Type', 'location' => 'querystring', 'locationName' => 'type']]], 'ListAnalyzersResponse' => ['type' => 'structure', 'required' => ['analyzers'], 'members' => ['analyzers' => ['shape' => 'AnalyzersList'], 'nextToken' => ['shape' => 'Token']]], 'ListArchiveRulesRequest' => ['type' => 'structure', 'required' => ['analyzerName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'maxResults' => ['shape' => 'Integer', 'location' => 'querystring', 'locationName' => 'maxResults'], 'nextToken' => ['shape' => 'Token', 'location' => 'querystring', 'locationName' => 'nextToken']]], 'ListArchiveRulesResponse' => ['type' => 'structure', 'required' => ['archiveRules'], 'members' => ['archiveRules' => ['shape' => 'ArchiveRulesList'], 'nextToken' => ['shape' => 'Token']]], 'ListFindingsRequest' => ['type' => 'structure', 'required' => ['analyzerArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'filter' => ['shape' => 'FilterCriteriaMap'], 'maxResults' => ['shape' => 'Integer'], 'nextToken' => ['shape' => 'Token'], 'sort' => ['shape' => 'SortCriteria']]], 'ListFindingsResponse' => ['type' => 'structure', 'required' => ['findings'], 'members' => ['findings' => ['shape' => 'FindingsList'], 'nextToken' => ['shape' => 'Token']]], 'ListTagsForResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn']]], 'ListTagsForResourceResponse' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'TagsMap']]], 'Name' => ['type' => 'string', 'max' => 255, 'min' => 1, 'pattern' => '^[A-Za-z][A-Za-z0-9_.-]*$'], 'OrderBy' => ['type' => 'string', 'enum' => ['ASC', 'DESC']], 'PrincipalMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ReasonCode' => ['type' => 'string', 'enum' => ['AWS_SERVICE_ACCESS_DISABLED', 'DELEGATED_ADMINISTRATOR_DEREGISTERED', 'ORGANIZATION_DELETED', 'SERVICE_LINKED_ROLE_CREATION_FAILED']], 'ResourceArn' => ['type' => 'string', 'pattern' => 'arn:[^:]*:[^:]*:[^:]*:[^:]*:.*$'], 'ResourceNotFoundException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 404, 'senderFault' => \true], 'exception' => \true], 'ResourceType' => ['type' => 'string', 'enum' => ['AWS::IAM::Role', 'AWS::KMS::Key', 'AWS::Lambda::Function', 'AWS::Lambda::LayerVersion', 'AWS::S3::Bucket', 'AWS::SQS::Queue']], 'ServiceQuotaExceededException' => ['type' => 'structure', 'required' => ['message', 'resourceId', 'resourceType'], 'members' => ['message' => ['shape' => 'String'], 'resourceId' => ['shape' => 'String'], 'resourceType' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 402, 'senderFault' => \true], 'exception' => \true], 'SharedViaList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'SortCriteria' => ['type' => 'structure', 'members' => ['attributeName' => ['shape' => 'String'], 'orderBy' => ['shape' => 'OrderBy']]], 'StartResourceScanRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'resourceArn'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'resourceArn' => ['shape' => 'ResourceArn']]], 'StatusReason' => ['type' => 'structure', 'required' => ['code'], 'members' => ['code' => ['shape' => 'ReasonCode']]], 'String' => ['type' => 'string'], 'TagKeys' => ['type' => 'list', 'member' => ['shape' => 'String']], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tags' => ['shape' => 'TagsMap']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagsMap' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'ThrottlingException' => ['type' => 'structure', 'required' => ['message'], 'members' => ['message' => ['shape' => 'String'], 'retryAfterSeconds' => ['shape' => 'Integer', 'location' => 'header', 'locationName' => 'Retry-After']], 'error' => ['httpStatusCode' => 429, 'senderFault' => \true], 'exception' => \true], 'Timestamp' => ['type' => 'timestamp', 'timestampFormat' => 'iso8601'], 'Token' => ['type' => 'string'], 'Type' => ['type' => 'string', 'enum' => ['ACCOUNT', 'ORGANIZATION']], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tagKeys' => ['shape' => 'TagKeys', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateArchiveRuleRequest' => ['type' => 'structure', 'required' => ['analyzerName', 'filter', 'ruleName'], 'members' => ['analyzerName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'analyzerName'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'filter' => ['shape' => 'FilterCriteriaMap'], 'ruleName' => ['shape' => 'Name', 'location' => 'uri', 'locationName' => 'ruleName']]], 'UpdateFindingsRequest' => ['type' => 'structure', 'required' => ['analyzerArn', 'status'], 'members' => ['analyzerArn' => ['shape' => 'AnalyzerArn'], 'clientToken' => ['shape' => 'String', 'idempotencyToken' => \true], 'ids' => ['shape' => 'FindingIdList'], 'resourceArn' => ['shape' => 'ResourceArn'], 'status' => ['shape' => 'FindingStatusUpdate']]], 'ValidationException' => ['type' => 'structure', 'required' => ['message', 'reason'], 'members' => ['fieldList' => ['shape' => 'ValidationExceptionFieldList'], 'message' => ['shape' => 'String'], 'reason' => ['shape' => 'ValidationExceptionReason']], 'error' => ['httpStatusCode' => 400, 'senderFault' => \true], 'exception' => \true], 'ValidationExceptionField' => ['type' => 'structure', 'required' => ['message', 'name'], 'members' => ['message' => ['shape' => 'String'], 'name' => ['shape' => 'String']]], 'ValidationExceptionFieldList' => ['type' => 'list', 'member' => ['shape' => 'ValidationExceptionField']], 'ValidationExceptionReason' => ['type' => 'string', 'enum' => ['cannotParse', 'fieldValidationFailed', 'other', 'unknownOperation']], 'ValueList' => ['type' => 'list', 'member' => ['shape' => 'String'], 'max' => 20, 'min' => 1]]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/acm-pca/2017-08-22/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-08-22', 'endpointPrefix' => 'acm-pca', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceAbbreviation' => 'ACM-PCA', 'serviceFullName' => 'AWS Certificate Manager Private Certificate Authority', 'serviceId' => 'ACM PCA', 'signatureVersion' => 'v4', 'targetPrefix' => 'ACMPrivateCA', 'uid' => 'acm-pca-2017-08-22'], 'operations' => ['CreateCertificateAuthority' => ['name' => 'CreateCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateCertificateAuthorityRequest'], 'output' => ['shape' => 'CreateCertificateAuthorityResponse'], 'errors' => [['shape' => 'InvalidArgsException'], ['shape' => 'InvalidPolicyException'], ['shape' => 'InvalidTagException'], ['shape' => 'LimitExceededException']], 'idempotent' => \true], 'CreateCertificateAuthorityAuditReport' => ['name' => 'CreateCertificateAuthorityAuditReport', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateCertificateAuthorityAuditReportRequest'], 'output' => ['shape' => 'CreateCertificateAuthorityAuditReportResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException'], ['shape' => 'InvalidStateException']], 'idempotent' => \true], 'CreatePermission' => ['name' => 'CreatePermission', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreatePermissionRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'PermissionAlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'DeleteCertificateAuthority' => ['name' => 'DeleteCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteCertificateAuthorityRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'DeletePermission' => ['name' => 'DeletePermission', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeletePermissionRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'DescribeCertificateAuthority' => ['name' => 'DescribeCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateAuthorityRequest'], 'output' => ['shape' => 'DescribeCertificateAuthorityResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'DescribeCertificateAuthorityAuditReport' => ['name' => 'DescribeCertificateAuthorityAuditReport', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateAuthorityAuditReportRequest'], 'output' => ['shape' => 'DescribeCertificateAuthorityAuditReportResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException']]], 'GetCertificate' => ['name' => 'GetCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateRequest'], 'output' => ['shape' => 'GetCertificateResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'GetCertificateAuthorityCertificate' => ['name' => 'GetCertificateAuthorityCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateAuthorityCertificateRequest'], 'output' => ['shape' => 'GetCertificateAuthorityCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]], 'GetCertificateAuthorityCsr' => ['name' => 'GetCertificateAuthorityCsr', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateAuthorityCsrRequest'], 'output' => ['shape' => 'GetCertificateAuthorityCsrResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'ImportCertificateAuthorityCertificate' => ['name' => 'ImportCertificateAuthorityCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ImportCertificateAuthorityCertificateRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidRequestException'], ['shape' => 'InvalidStateException'], ['shape' => 'MalformedCertificateException'], ['shape' => 'CertificateMismatchException']]], 'IssueCertificate' => ['name' => 'IssueCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'IssueCertificateRequest'], 'output' => ['shape' => 'IssueCertificateResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException'], ['shape' => 'MalformedCSRException']], 'idempotent' => \true], 'ListCertificateAuthorities' => ['name' => 'ListCertificateAuthorities', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListCertificateAuthoritiesRequest'], 'output' => ['shape' => 'ListCertificateAuthoritiesResponse'], 'errors' => [['shape' => 'InvalidNextTokenException']]], 'ListPermissions' => ['name' => 'ListPermissions', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListPermissionsRequest'], 'output' => ['shape' => 'ListPermissionsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidNextTokenException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'ListTags' => ['name' => 'ListTags', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsRequest'], 'output' => ['shape' => 'ListTagsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'RestoreCertificateAuthority' => ['name' => 'RestoreCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RestoreCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]], 'RevokeCertificate' => ['name' => 'RevokeCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RevokeCertificateRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidRequestException'], ['shape' => 'InvalidStateException'], ['shape' => 'LimitExceededException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestAlreadyProcessedException'], ['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException']]], 'TagCertificateAuthority' => ['name' => 'TagCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'TagCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException']]], 'UntagCertificateAuthority' => ['name' => 'UntagCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UntagCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidTagException']]], 'UpdateCertificateAuthority' => ['name' => 'UpdateCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateCertificateAuthorityRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArgsException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidPolicyException']]]], 'shapes' => ['ASN1Subject' => ['type' => 'structure', 'members' => ['Country' => ['shape' => 'CountryCodeString'], 'Organization' => ['shape' => 'String64'], 'OrganizationalUnit' => ['shape' => 'String64'], 'DistinguishedNameQualifier' => ['shape' => 'DistinguishedNameQualifierString'], 'State' => ['shape' => 'String128'], 'CommonName' => ['shape' => 'String64'], 'SerialNumber' => ['shape' => 'String64'], 'Locality' => ['shape' => 'String128'], 'Title' => ['shape' => 'String64'], 'Surname' => ['shape' => 'String40'], 'GivenName' => ['shape' => 'String16'], 'Initials' => ['shape' => 'String5'], 'Pseudonym' => ['shape' => 'String128'], 'GenerationQualifier' => ['shape' => 'String3']]], 'AccountId' => ['type' => 'string', 'max' => 12, 'min' => 12, 'pattern' => '[0-9]+'], 'ActionList' => ['type' => 'list', 'member' => ['shape' => 'ActionType'], 'max' => 3, 'min' => 1], 'ActionType' => ['type' => 'string', 'enum' => ['IssueCertificate', 'GetCertificate', 'ListPermissions']], 'Arn' => ['type' => 'string', 'max' => 200, 'min' => 5, 'pattern' => 'arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=/,.@-]+)*'], 'AuditReportId' => ['type' => 'string', 'max' => 36, 'min' => 36, 'pattern' => '[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}'], 'AuditReportResponseFormat' => ['type' => 'string', 'enum' => ['JSON', 'CSV']], 'AuditReportStatus' => ['type' => 'string', 'enum' => ['CREATING', 'SUCCESS', 'FAILED']], 'Boolean' => ['type' => 'boolean'], 'CertificateAuthorities' => ['type' => 'list', 'member' => ['shape' => 'CertificateAuthority']], 'CertificateAuthority' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'CreatedAt' => ['shape' => 'TStamp'], 'LastStateChangeAt' => ['shape' => 'TStamp'], 'Type' => ['shape' => 'CertificateAuthorityType'], 'Serial' => ['shape' => 'String'], 'Status' => ['shape' => 'CertificateAuthorityStatus'], 'NotBefore' => ['shape' => 'TStamp'], 'NotAfter' => ['shape' => 'TStamp'], 'FailureReason' => ['shape' => 'FailureReason'], 'CertificateAuthorityConfiguration' => ['shape' => 'CertificateAuthorityConfiguration'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'RestorableUntil' => ['shape' => 'TStamp']]], 'CertificateAuthorityConfiguration' => ['type' => 'structure', 'required' => ['KeyAlgorithm', 'SigningAlgorithm', 'Subject'], 'members' => ['KeyAlgorithm' => ['shape' => 'KeyAlgorithm'], 'SigningAlgorithm' => ['shape' => 'SigningAlgorithm'], 'Subject' => ['shape' => 'ASN1Subject']]], 'CertificateAuthorityStatus' => ['type' => 'string', 'enum' => ['CREATING', 'PENDING_CERTIFICATE', 'ACTIVE', 'DELETED', 'DISABLED', 'EXPIRED', 'FAILED']], 'CertificateAuthorityType' => ['type' => 'string', 'enum' => ['ROOT', 'SUBORDINATE']], 'CertificateBody' => ['type' => 'string'], 'CertificateBodyBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CertificateChain' => ['type' => 'string'], 'CertificateChainBlob' => ['type' => 'blob', 'max' => 2097152, 'min' => 0], 'CertificateMismatchException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ConcurrentModificationException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'CountryCodeString' => ['type' => 'string', 'pattern' => '[A-Za-z]{2}'], 'CreateCertificateAuthorityAuditReportRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'S3BucketName', 'AuditReportResponseFormat'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'S3BucketName' => ['shape' => 'String'], 'AuditReportResponseFormat' => ['shape' => 'AuditReportResponseFormat']]], 'CreateCertificateAuthorityAuditReportResponse' => ['type' => 'structure', 'members' => ['AuditReportId' => ['shape' => 'AuditReportId'], 'S3Key' => ['shape' => 'String']]], 'CreateCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityConfiguration', 'CertificateAuthorityType'], 'members' => ['CertificateAuthorityConfiguration' => ['shape' => 'CertificateAuthorityConfiguration'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'CertificateAuthorityType' => ['shape' => 'CertificateAuthorityType'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken'], 'Tags' => ['shape' => 'TagList']]], 'CreateCertificateAuthorityResponse' => ['type' => 'structure', 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'CreatePermissionRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Principal', 'Actions'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Principal' => ['shape' => 'Principal'], 'SourceAccount' => ['shape' => 'AccountId'], 'Actions' => ['shape' => 'ActionList']]], 'CrlConfiguration' => ['type' => 'structure', 'required' => ['Enabled'], 'members' => ['Enabled' => ['shape' => 'Boolean', 'box' => \true], 'ExpirationInDays' => ['shape' => 'Integer1To5000', 'box' => \true], 'CustomCname' => ['shape' => 'String253'], 'S3BucketName' => ['shape' => 'String3To255']]], 'CsrBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CsrBody' => ['type' => 'string'], 'DeleteCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'PermanentDeletionTimeInDays' => ['shape' => 'PermanentDeletionTimeInDays']]], 'DeletePermissionRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Principal'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Principal' => ['shape' => 'Principal'], 'SourceAccount' => ['shape' => 'AccountId']]], 'DescribeCertificateAuthorityAuditReportRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'AuditReportId'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'AuditReportId' => ['shape' => 'AuditReportId']]], 'DescribeCertificateAuthorityAuditReportResponse' => ['type' => 'structure', 'members' => ['AuditReportStatus' => ['shape' => 'AuditReportStatus'], 'S3BucketName' => ['shape' => 'String'], 'S3Key' => ['shape' => 'String'], 'CreatedAt' => ['shape' => 'TStamp']]], 'DescribeCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'DescribeCertificateAuthorityResponse' => ['type' => 'structure', 'members' => ['CertificateAuthority' => ['shape' => 'CertificateAuthority']]], 'DistinguishedNameQualifierString' => ['type' => 'string', 'max' => 64, 'min' => 0, 'pattern' => '[a-zA-Z0-9\'()+-.?:/= ]*'], 'FailureReason' => ['type' => 'string', 'enum' => ['REQUEST_TIMED_OUT', 'UNSUPPORTED_ALGORITHM', 'OTHER']], 'GetCertificateAuthorityCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'GetCertificateAuthorityCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'GetCertificateAuthorityCsrRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'GetCertificateAuthorityCsrResponse' => ['type' => 'structure', 'members' => ['Csr' => ['shape' => 'CsrBody']]], 'GetCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'CertificateArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CertificateArn' => ['shape' => 'Arn']]], 'GetCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'IdempotencyToken' => ['type' => 'string', 'max' => 36, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*'], 'ImportCertificateAuthorityCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Certificate'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Certificate' => ['shape' => 'CertificateBodyBlob'], 'CertificateChain' => ['shape' => 'CertificateChainBlob']]], 'Integer1To5000' => ['type' => 'integer', 'max' => 5000, 'min' => 1], 'InvalidArgsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidArnException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidNextTokenException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidPolicyException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidStateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidTagException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'IssueCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Csr', 'SigningAlgorithm', 'Validity'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Csr' => ['shape' => 'CsrBlob'], 'SigningAlgorithm' => ['shape' => 'SigningAlgorithm'], 'TemplateArn' => ['shape' => 'Arn'], 'Validity' => ['shape' => 'Validity'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken']]], 'IssueCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'KeyAlgorithm' => ['type' => 'string', 'enum' => ['RSA_2048', 'RSA_4096', 'EC_prime256v1', 'EC_secp384r1']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ListCertificateAuthoritiesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListCertificateAuthoritiesResponse' => ['type' => 'structure', 'members' => ['CertificateAuthorities' => ['shape' => 'CertificateAuthorities'], 'NextToken' => ['shape' => 'NextToken']]], 'ListPermissionsRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListPermissionsResponse' => ['type' => 'structure', 'members' => ['Permissions' => ['shape' => 'PermissionList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListTagsRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListTagsResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList'], 'NextToken' => ['shape' => 'NextToken']]], 'MalformedCSRException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'MalformedCertificateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'MaxResults' => ['type' => 'integer', 'max' => 1000, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 500, 'min' => 1], 'PermanentDeletionTimeInDays' => ['type' => 'integer', 'max' => 30, 'min' => 7], 'Permission' => ['type' => 'structure', 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CreatedAt' => ['shape' => 'TStamp'], 'Principal' => ['shape' => 'String'], 'SourceAccount' => ['shape' => 'String'], 'Actions' => ['shape' => 'ActionList'], 'Policy' => ['shape' => 'String']]], 'PermissionAlreadyExistsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'PermissionList' => ['type' => 'list', 'member' => ['shape' => 'Permission'], 'min' => 0], 'PositiveLong' => ['type' => 'long', 'min' => 1], 'Principal' => ['type' => 'string', 'max' => 128, 'min' => 0, 'pattern' => '^[^*]+$'], 'RequestAlreadyProcessedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'RequestFailedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'RequestInProgressException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceNotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'RestoreCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'RevocationConfiguration' => ['type' => 'structure', 'members' => ['CrlConfiguration' => ['shape' => 'CrlConfiguration']]], 'RevocationReason' => ['type' => 'string', 'enum' => ['UNSPECIFIED', 'KEY_COMPROMISE', 'CERTIFICATE_AUTHORITY_COMPROMISE', 'AFFILIATION_CHANGED', 'SUPERSEDED', 'CESSATION_OF_OPERATION', 'PRIVILEGE_WITHDRAWN', 'A_A_COMPROMISE']], 'RevokeCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'CertificateSerial', 'RevocationReason'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CertificateSerial' => ['shape' => 'String128'], 'RevocationReason' => ['shape' => 'RevocationReason']]], 'SigningAlgorithm' => ['type' => 'string', 'enum' => ['SHA256WITHECDSA', 'SHA384WITHECDSA', 'SHA512WITHECDSA', 'SHA256WITHRSA', 'SHA384WITHRSA', 'SHA512WITHRSA']], 'String' => ['type' => 'string'], 'String128' => ['type' => 'string', 'max' => 128, 'min' => 0], 'String16' => ['type' => 'string', 'max' => 16, 'min' => 0], 'String253' => ['type' => 'string', 'max' => 253, 'min' => 0], 'String3' => ['type' => 'string', 'max' => 3, 'min' => 0], 'String3To255' => ['type' => 'string', 'max' => 255, 'min' => 3], 'String40' => ['type' => 'string', 'max' => 40, 'min' => 0], 'String5' => ['type' => 'string', 'max' => 5, 'min' => 0], 'String64' => ['type' => 'string', 'max' => 64, 'min' => 0], 'TStamp' => ['type' => 'timestamp'], 'Tag' => ['type' => 'structure', 'required' => ['Key'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Tags'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag'], 'max' => 50, 'min' => 1], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TooManyTagsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'UntagCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Tags'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'UpdateCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'Status' => ['shape' => 'CertificateAuthorityStatus']]], 'Validity' => ['type' => 'structure', 'required' => ['Value', 'Type'], 'members' => ['Value' => ['shape' => 'PositiveLong', 'box' => \true], 'Type' => ['shape' => 'ValidityPeriodType']]], 'ValidityPeriodType' => ['type' => 'string', 'enum' => ['END_DATE', 'ABSOLUTE', 'DAYS', 'MONTHS', 'YEARS']]]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/acm-pca/2017-08-22/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-08-22', 'endpointPrefix' => 'acm-pca', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceAbbreviation' => 'ACM-PCA', 'serviceFullName' => 'AWS Certificate Manager Private Certificate Authority', 'serviceId' => 'ACM PCA', 'signatureVersion' => 'v4', 'targetPrefix' => 'ACMPrivateCA', 'uid' => 'acm-pca-2017-08-22'], 'operations' => ['CreateCertificateAuthority' => ['name' => 'CreateCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateCertificateAuthorityRequest'], 'output' => ['shape' => 'CreateCertificateAuthorityResponse'], 'errors' => [['shape' => 'InvalidArgsException'], ['shape' => 'InvalidPolicyException'], ['shape' => 'InvalidTagException'], ['shape' => 'LimitExceededException']], 'idempotent' => \true], 'CreateCertificateAuthorityAuditReport' => ['name' => 'CreateCertificateAuthorityAuditReport', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateCertificateAuthorityAuditReportRequest'], 'output' => ['shape' => 'CreateCertificateAuthorityAuditReportResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException'], ['shape' => 'InvalidStateException']], 'idempotent' => \true], 'CreatePermission' => ['name' => 'CreatePermission', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreatePermissionRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'PermissionAlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'DeleteCertificateAuthority' => ['name' => 'DeleteCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteCertificateAuthorityRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'DeletePermission' => ['name' => 'DeletePermission', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeletePermissionRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'DeletePolicy' => ['name' => 'DeletePolicy', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeletePolicyRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'LockoutPreventedException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException']]], 'DescribeCertificateAuthority' => ['name' => 'DescribeCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateAuthorityRequest'], 'output' => ['shape' => 'DescribeCertificateAuthorityResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'DescribeCertificateAuthorityAuditReport' => ['name' => 'DescribeCertificateAuthorityAuditReport', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateAuthorityAuditReportRequest'], 'output' => ['shape' => 'DescribeCertificateAuthorityAuditReportResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException']]], 'GetCertificate' => ['name' => 'GetCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateRequest'], 'output' => ['shape' => 'GetCertificateResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'GetCertificateAuthorityCertificate' => ['name' => 'GetCertificateAuthorityCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateAuthorityCertificateRequest'], 'output' => ['shape' => 'GetCertificateAuthorityCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]], 'GetCertificateAuthorityCsr' => ['name' => 'GetCertificateAuthorityCsr', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateAuthorityCsrRequest'], 'output' => ['shape' => 'GetCertificateAuthorityCsrResponse'], 'errors' => [['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'GetPolicy' => ['name' => 'GetPolicy', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetPolicyRequest'], 'output' => ['shape' => 'GetPolicyResponse'], 'errors' => [['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException']]], 'ImportCertificateAuthorityCertificate' => ['name' => 'ImportCertificateAuthorityCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ImportCertificateAuthorityCertificateRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidRequestException'], ['shape' => 'InvalidStateException'], ['shape' => 'MalformedCertificateException'], ['shape' => 'CertificateMismatchException']]], 'IssueCertificate' => ['name' => 'IssueCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'IssueCertificateRequest'], 'output' => ['shape' => 'IssueCertificateResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidArgsException'], ['shape' => 'MalformedCSRException']], 'idempotent' => \true], 'ListCertificateAuthorities' => ['name' => 'ListCertificateAuthorities', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListCertificateAuthoritiesRequest'], 'output' => ['shape' => 'ListCertificateAuthoritiesResponse'], 'errors' => [['shape' => 'InvalidNextTokenException']]], 'ListPermissions' => ['name' => 'ListPermissions', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListPermissionsRequest'], 'output' => ['shape' => 'ListPermissionsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidNextTokenException'], ['shape' => 'InvalidStateException'], ['shape' => 'RequestFailedException']]], 'ListTags' => ['name' => 'ListTags', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsRequest'], 'output' => ['shape' => 'ListTagsResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException']]], 'PutPolicy' => ['name' => 'PutPolicy', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutPolicyRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidPolicyException'], ['shape' => 'LockoutPreventedException'], ['shape' => 'RequestFailedException'], ['shape' => 'ResourceNotFoundException']]], 'RestoreCertificateAuthority' => ['name' => 'RestoreCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RestoreCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]], 'RevokeCertificate' => ['name' => 'RevokeCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RevokeCertificateRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidRequestException'], ['shape' => 'InvalidStateException'], ['shape' => 'LimitExceededException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestAlreadyProcessedException'], ['shape' => 'RequestInProgressException'], ['shape' => 'RequestFailedException']]], 'TagCertificateAuthority' => ['name' => 'TagCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'TagCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException']]], 'UntagCertificateAuthority' => ['name' => 'UntagCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UntagCertificateAuthorityRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidTagException']]], 'UpdateCertificateAuthority' => ['name' => 'UpdateCertificateAuthority', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateCertificateAuthorityRequest'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArgsException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidPolicyException']]]], 'shapes' => ['ASN1PrintableString64' => ['type' => 'string', 'max' => 64, 'min' => 0, 'pattern' => '[a-zA-Z0-9\'()+-.?:/= ]*'], 'ASN1Subject' => ['type' => 'structure', 'members' => ['Country' => ['shape' => 'CountryCodeString'], 'Organization' => ['shape' => 'String64'], 'OrganizationalUnit' => ['shape' => 'String64'], 'DistinguishedNameQualifier' => ['shape' => 'ASN1PrintableString64'], 'State' => ['shape' => 'String128'], 'CommonName' => ['shape' => 'String64'], 'SerialNumber' => ['shape' => 'ASN1PrintableString64'], 'Locality' => ['shape' => 'String128'], 'Title' => ['shape' => 'String64'], 'Surname' => ['shape' => 'String40'], 'GivenName' => ['shape' => 'String16'], 'Initials' => ['shape' => 'String5'], 'Pseudonym' => ['shape' => 'String128'], 'GenerationQualifier' => ['shape' => 'String3']]], 'AWSPolicy' => ['type' => 'string', 'max' => 20480, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+'], 'AccountId' => ['type' => 'string', 'max' => 12, 'min' => 12, 'pattern' => '[0-9]+'], 'ActionList' => ['type' => 'list', 'member' => ['shape' => 'ActionType'], 'max' => 3, 'min' => 1], 'ActionType' => ['type' => 'string', 'enum' => ['IssueCertificate', 'GetCertificate', 'ListPermissions']], 'Arn' => ['type' => 'string', 'max' => 200, 'min' => 5, 'pattern' => 'arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*'], 'AuditReportId' => ['type' => 'string', 'max' => 36, 'min' => 36, 'pattern' => '[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}'], 'AuditReportResponseFormat' => ['type' => 'string', 'enum' => ['JSON', 'CSV']], 'AuditReportStatus' => ['type' => 'string', 'enum' => ['CREATING', 'SUCCESS', 'FAILED']], 'Boolean' => ['type' => 'boolean'], 'CertificateAuthorities' => ['type' => 'list', 'member' => ['shape' => 'CertificateAuthority']], 'CertificateAuthority' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'OwnerAccount' => ['shape' => 'AccountId'], 'CreatedAt' => ['shape' => 'TStamp'], 'LastStateChangeAt' => ['shape' => 'TStamp'], 'Type' => ['shape' => 'CertificateAuthorityType'], 'Serial' => ['shape' => 'String'], 'Status' => ['shape' => 'CertificateAuthorityStatus'], 'NotBefore' => ['shape' => 'TStamp'], 'NotAfter' => ['shape' => 'TStamp'], 'FailureReason' => ['shape' => 'FailureReason'], 'CertificateAuthorityConfiguration' => ['shape' => 'CertificateAuthorityConfiguration'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'RestorableUntil' => ['shape' => 'TStamp']]], 'CertificateAuthorityConfiguration' => ['type' => 'structure', 'required' => ['KeyAlgorithm', 'SigningAlgorithm', 'Subject'], 'members' => ['KeyAlgorithm' => ['shape' => 'KeyAlgorithm'], 'SigningAlgorithm' => ['shape' => 'SigningAlgorithm'], 'Subject' => ['shape' => 'ASN1Subject']]], 'CertificateAuthorityStatus' => ['type' => 'string', 'enum' => ['CREATING', 'PENDING_CERTIFICATE', 'ACTIVE', 'DELETED', 'DISABLED', 'EXPIRED', 'FAILED']], 'CertificateAuthorityType' => ['type' => 'string', 'enum' => ['ROOT', 'SUBORDINATE']], 'CertificateBody' => ['type' => 'string'], 'CertificateBodyBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CertificateChain' => ['type' => 'string'], 'CertificateChainBlob' => ['type' => 'blob', 'max' => 2097152, 'min' => 0], 'CertificateMismatchException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ConcurrentModificationException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'CountryCodeString' => ['type' => 'string', 'max' => 2, 'min' => 2, 'pattern' => '[A-Za-z]{2}'], 'CreateCertificateAuthorityAuditReportRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'S3BucketName', 'AuditReportResponseFormat'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'S3BucketName' => ['shape' => 'S3BucketName'], 'AuditReportResponseFormat' => ['shape' => 'AuditReportResponseFormat']]], 'CreateCertificateAuthorityAuditReportResponse' => ['type' => 'structure', 'members' => ['AuditReportId' => ['shape' => 'AuditReportId'], 'S3Key' => ['shape' => 'S3Key']]], 'CreateCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityConfiguration', 'CertificateAuthorityType'], 'members' => ['CertificateAuthorityConfiguration' => ['shape' => 'CertificateAuthorityConfiguration'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'CertificateAuthorityType' => ['shape' => 'CertificateAuthorityType'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken'], 'Tags' => ['shape' => 'TagList']]], 'CreateCertificateAuthorityResponse' => ['type' => 'structure', 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'CreatePermissionRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Principal', 'Actions'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Principal' => ['shape' => 'Principal'], 'SourceAccount' => ['shape' => 'AccountId'], 'Actions' => ['shape' => 'ActionList']]], 'CrlConfiguration' => ['type' => 'structure', 'required' => ['Enabled'], 'members' => ['Enabled' => ['shape' => 'Boolean', 'box' => \true], 'ExpirationInDays' => ['shape' => 'Integer1To5000', 'box' => \true], 'CustomCname' => ['shape' => 'String253'], 'S3BucketName' => ['shape' => 'String3To255']]], 'CsrBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CsrBody' => ['type' => 'string'], 'DeleteCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'PermanentDeletionTimeInDays' => ['shape' => 'PermanentDeletionTimeInDays']]], 'DeletePermissionRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Principal'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Principal' => ['shape' => 'Principal'], 'SourceAccount' => ['shape' => 'AccountId']]], 'DeletePolicyRequest' => ['type' => 'structure', 'required' => ['ResourceArn'], 'members' => ['ResourceArn' => ['shape' => 'Arn']]], 'DescribeCertificateAuthorityAuditReportRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'AuditReportId'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'AuditReportId' => ['shape' => 'AuditReportId']]], 'DescribeCertificateAuthorityAuditReportResponse' => ['type' => 'structure', 'members' => ['AuditReportStatus' => ['shape' => 'AuditReportStatus'], 'S3BucketName' => ['shape' => 'S3BucketName'], 'S3Key' => ['shape' => 'S3Key'], 'CreatedAt' => ['shape' => 'TStamp']]], 'DescribeCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'DescribeCertificateAuthorityResponse' => ['type' => 'structure', 'members' => ['CertificateAuthority' => ['shape' => 'CertificateAuthority']]], 'FailureReason' => ['type' => 'string', 'enum' => ['REQUEST_TIMED_OUT', 'UNSUPPORTED_ALGORITHM', 'OTHER']], 'GetCertificateAuthorityCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'GetCertificateAuthorityCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'GetCertificateAuthorityCsrRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'GetCertificateAuthorityCsrResponse' => ['type' => 'structure', 'members' => ['Csr' => ['shape' => 'CsrBody']]], 'GetCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'CertificateArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CertificateArn' => ['shape' => 'Arn']]], 'GetCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'GetPolicyRequest' => ['type' => 'structure', 'required' => ['ResourceArn'], 'members' => ['ResourceArn' => ['shape' => 'Arn']]], 'GetPolicyResponse' => ['type' => 'structure', 'members' => ['Policy' => ['shape' => 'AWSPolicy']]], 'IdempotencyToken' => ['type' => 'string', 'max' => 36, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*'], 'ImportCertificateAuthorityCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Certificate'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Certificate' => ['shape' => 'CertificateBodyBlob'], 'CertificateChain' => ['shape' => 'CertificateChainBlob']]], 'Integer1To5000' => ['type' => 'integer', 'max' => 5000, 'min' => 1], 'InvalidArgsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidArnException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidNextTokenException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidPolicyException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidStateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidTagException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'IssueCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Csr', 'SigningAlgorithm', 'Validity'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Csr' => ['shape' => 'CsrBlob'], 'SigningAlgorithm' => ['shape' => 'SigningAlgorithm'], 'TemplateArn' => ['shape' => 'Arn'], 'Validity' => ['shape' => 'Validity'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken']]], 'IssueCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'KeyAlgorithm' => ['type' => 'string', 'enum' => ['RSA_2048', 'RSA_4096', 'EC_prime256v1', 'EC_secp384r1']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ListCertificateAuthoritiesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'ResourceOwner' => ['shape' => 'ResourceOwner']]], 'ListCertificateAuthoritiesResponse' => ['type' => 'structure', 'members' => ['CertificateAuthorities' => ['shape' => 'CertificateAuthorities'], 'NextToken' => ['shape' => 'NextToken']]], 'ListPermissionsRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListPermissionsResponse' => ['type' => 'structure', 'members' => ['Permissions' => ['shape' => 'PermissionList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListTagsRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListTagsResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList'], 'NextToken' => ['shape' => 'NextToken']]], 'LockoutPreventedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'MalformedCSRException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'MalformedCertificateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'MaxResults' => ['type' => 'integer', 'max' => 1000, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 500, 'min' => 1], 'PermanentDeletionTimeInDays' => ['type' => 'integer', 'max' => 30, 'min' => 7], 'Permission' => ['type' => 'structure', 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CreatedAt' => ['shape' => 'TStamp'], 'Principal' => ['shape' => 'Principal'], 'SourceAccount' => ['shape' => 'AccountId'], 'Actions' => ['shape' => 'ActionList'], 'Policy' => ['shape' => 'AWSPolicy']]], 'PermissionAlreadyExistsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'PermissionList' => ['type' => 'list', 'member' => ['shape' => 'Permission'], 'min' => 0], 'PositiveLong' => ['type' => 'long', 'min' => 1], 'Principal' => ['type' => 'string', 'max' => 128, 'min' => 0, 'pattern' => '^[^*]+$'], 'PutPolicyRequest' => ['type' => 'structure', 'required' => ['ResourceArn', 'Policy'], 'members' => ['ResourceArn' => ['shape' => 'Arn'], 'Policy' => ['shape' => 'AWSPolicy']]], 'RequestAlreadyProcessedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'RequestFailedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'RequestInProgressException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceNotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceOwner' => ['type' => 'string', 'enum' => ['SELF', 'OTHER_ACCOUNTS']], 'RestoreCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn']]], 'RevocationConfiguration' => ['type' => 'structure', 'members' => ['CrlConfiguration' => ['shape' => 'CrlConfiguration']]], 'RevocationReason' => ['type' => 'string', 'enum' => ['UNSPECIFIED', 'KEY_COMPROMISE', 'CERTIFICATE_AUTHORITY_COMPROMISE', 'AFFILIATION_CHANGED', 'SUPERSEDED', 'CESSATION_OF_OPERATION', 'PRIVILEGE_WITHDRAWN', 'A_A_COMPROMISE']], 'RevokeCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'CertificateSerial', 'RevocationReason'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'CertificateSerial' => ['shape' => 'String128'], 'RevocationReason' => ['shape' => 'RevocationReason']]], 'S3BucketName' => ['type' => 'string', 'max' => 63, 'min' => 3], 'S3Key' => ['type' => 'string', 'max' => 1024], 'SigningAlgorithm' => ['type' => 'string', 'enum' => ['SHA256WITHECDSA', 'SHA384WITHECDSA', 'SHA512WITHECDSA', 'SHA256WITHRSA', 'SHA384WITHRSA', 'SHA512WITHRSA']], 'String' => ['type' => 'string'], 'String128' => ['type' => 'string', 'max' => 128, 'min' => 0], 'String16' => ['type' => 'string', 'max' => 16, 'min' => 0], 'String253' => ['type' => 'string', 'max' => 253, 'min' => 0], 'String3' => ['type' => 'string', 'max' => 3, 'min' => 0], 'String3To255' => ['type' => 'string', 'max' => 255, 'min' => 3], 'String40' => ['type' => 'string', 'max' => 40, 'min' => 0], 'String5' => ['type' => 'string', 'max' => 5, 'min' => 0], 'String64' => ['type' => 'string', 'max' => 64, 'min' => 0], 'TStamp' => ['type' => 'timestamp'], 'Tag' => ['type' => 'structure', 'required' => ['Key'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Tags'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag'], 'max' => 50, 'min' => 1], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TooManyTagsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'UntagCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn', 'Tags'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'UpdateCertificateAuthorityRequest' => ['type' => 'structure', 'required' => ['CertificateAuthorityArn'], 'members' => ['CertificateAuthorityArn' => ['shape' => 'Arn'], 'RevocationConfiguration' => ['shape' => 'RevocationConfiguration'], 'Status' => ['shape' => 'CertificateAuthorityStatus']]], 'Validity' => ['type' => 'structure', 'required' => ['Value', 'Type'], 'members' => ['Value' => ['shape' => 'PositiveLong', 'box' => \true], 'Type' => ['shape' => 'ValidityPeriodType']]], 'ValidityPeriodType' => ['type' => 'string', 'enum' => ['END_DATE', 'ABSOLUTE', 'DAYS', 'MONTHS', 'YEARS']]]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/acm/2015-12-08/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2015-12-08', 'endpointPrefix' => 'acm', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceAbbreviation' => 'ACM', 'serviceFullName' => 'AWS Certificate Manager', 'serviceId' => 'ACM', 'signatureVersion' => 'v4', 'targetPrefix' => 'CertificateManager', 'uid' => 'acm-2015-12-08'], 'operations' => ['AddTagsToCertificate' => ['name' => 'AddTagsToCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AddTagsToCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'DeleteCertificate' => ['name' => 'DeleteCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ResourceInUseException'], ['shape' => 'InvalidArnException']]], 'DescribeCertificate' => ['name' => 'DescribeCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateRequest'], 'output' => ['shape' => 'DescribeCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'ExportCertificate' => ['name' => 'ExportCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ExportCertificateRequest'], 'output' => ['shape' => 'ExportCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestInProgressException'], ['shape' => 'InvalidArnException']]], 'GetCertificate' => ['name' => 'GetCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateRequest'], 'output' => ['shape' => 'GetCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestInProgressException'], ['shape' => 'InvalidArnException']]], 'ImportCertificate' => ['name' => 'ImportCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ImportCertificateRequest'], 'output' => ['shape' => 'ImportCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'ListCertificates' => ['name' => 'ListCertificates', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListCertificatesRequest'], 'output' => ['shape' => 'ListCertificatesResponse'], 'errors' => [['shape' => 'InvalidArgsException']]], 'ListTagsForCertificate' => ['name' => 'ListTagsForCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsForCertificateRequest'], 'output' => ['shape' => 'ListTagsForCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'RemoveTagsFromCertificate' => ['name' => 'RemoveTagsFromCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RemoveTagsFromCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'RenewCertificate' => ['name' => 'RenewCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RenewCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'RequestCertificate' => ['name' => 'RequestCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RequestCertificateRequest'], 'output' => ['shape' => 'RequestCertificateResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'InvalidDomainValidationOptionsException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'ResendValidationEmail' => ['name' => 'ResendValidationEmail', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ResendValidationEmailRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidDomainValidationOptionsException']]], 'UpdateCertificateOptions' => ['name' => 'UpdateCertificateOptions', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateCertificateOptionsRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]]], 'shapes' => ['AddTagsToCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Tags'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'Arn' => ['type' => 'string', 'max' => 2048, 'min' => 20, 'pattern' => 'arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=,.@-]+)*'], 'CertificateBody' => ['type' => 'string', 'max' => 32768, 'min' => 1, 'pattern' => '-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'CertificateBodyBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CertificateChain' => ['type' => 'string', 'max' => 2097152, 'min' => 1, 'pattern' => '(-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}\\u000D?\\u000A)*-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'CertificateChainBlob' => ['type' => 'blob', 'max' => 2097152, 'min' => 1], 'CertificateDetail' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'DomainName' => ['shape' => 'DomainNameString'], 'SubjectAlternativeNames' => ['shape' => 'DomainList'], 'DomainValidationOptions' => ['shape' => 'DomainValidationList'], 'Serial' => ['shape' => 'String'], 'Subject' => ['shape' => 'String'], 'Issuer' => ['shape' => 'String'], 'CreatedAt' => ['shape' => 'TStamp'], 'IssuedAt' => ['shape' => 'TStamp'], 'ImportedAt' => ['shape' => 'TStamp'], 'Status' => ['shape' => 'CertificateStatus'], 'RevokedAt' => ['shape' => 'TStamp'], 'RevocationReason' => ['shape' => 'RevocationReason'], 'NotBefore' => ['shape' => 'TStamp'], 'NotAfter' => ['shape' => 'TStamp'], 'KeyAlgorithm' => ['shape' => 'KeyAlgorithm'], 'SignatureAlgorithm' => ['shape' => 'String'], 'InUseBy' => ['shape' => 'InUseList'], 'FailureReason' => ['shape' => 'FailureReason'], 'Type' => ['shape' => 'CertificateType'], 'RenewalSummary' => ['shape' => 'RenewalSummary'], 'KeyUsages' => ['shape' => 'KeyUsageList'], 'ExtendedKeyUsages' => ['shape' => 'ExtendedKeyUsageList'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'RenewalEligibility' => ['shape' => 'RenewalEligibility'], 'Options' => ['shape' => 'CertificateOptions']]], 'CertificateOptions' => ['type' => 'structure', 'members' => ['CertificateTransparencyLoggingPreference' => ['shape' => 'CertificateTransparencyLoggingPreference']]], 'CertificateStatus' => ['type' => 'string', 'enum' => ['PENDING_VALIDATION', 'ISSUED', 'INACTIVE', 'EXPIRED', 'VALIDATION_TIMED_OUT', 'REVOKED', 'FAILED']], 'CertificateStatuses' => ['type' => 'list', 'member' => ['shape' => 'CertificateStatus']], 'CertificateSummary' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'DomainName' => ['shape' => 'DomainNameString']]], 'CertificateSummaryList' => ['type' => 'list', 'member' => ['shape' => 'CertificateSummary']], 'CertificateTransparencyLoggingPreference' => ['type' => 'string', 'enum' => ['ENABLED', 'DISABLED']], 'CertificateType' => ['type' => 'string', 'enum' => ['IMPORTED', 'AMAZON_ISSUED', 'PRIVATE']], 'DeleteCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'DescribeCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'DescribeCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateDetail']]], 'DomainList' => ['type' => 'list', 'member' => ['shape' => 'DomainNameString'], 'max' => 100, 'min' => 1], 'DomainNameString' => ['type' => 'string', 'max' => 253, 'min' => 1, 'pattern' => '^(\\*\\.)?(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$'], 'DomainStatus' => ['type' => 'string', 'enum' => ['PENDING_VALIDATION', 'SUCCESS', 'FAILED']], 'DomainValidation' => ['type' => 'structure', 'required' => ['DomainName'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationEmails' => ['shape' => 'ValidationEmailList'], 'ValidationDomain' => ['shape' => 'DomainNameString'], 'ValidationStatus' => ['shape' => 'DomainStatus'], 'ResourceRecord' => ['shape' => 'ResourceRecord'], 'ValidationMethod' => ['shape' => 'ValidationMethod']]], 'DomainValidationList' => ['type' => 'list', 'member' => ['shape' => 'DomainValidation'], 'max' => 1000, 'min' => 1], 'DomainValidationOption' => ['type' => 'structure', 'required' => ['DomainName', 'ValidationDomain'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationDomain' => ['shape' => 'DomainNameString']]], 'DomainValidationOptionList' => ['type' => 'list', 'member' => ['shape' => 'DomainValidationOption'], 'max' => 100, 'min' => 1], 'ExportCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Passphrase'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Passphrase' => ['shape' => 'PassphraseBlob']]], 'ExportCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain'], 'PrivateKey' => ['shape' => 'PrivateKey']]], 'ExtendedKeyUsage' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'ExtendedKeyUsageName'], 'OID' => ['shape' => 'String']]], 'ExtendedKeyUsageFilterList' => ['type' => 'list', 'member' => ['shape' => 'ExtendedKeyUsageName']], 'ExtendedKeyUsageList' => ['type' => 'list', 'member' => ['shape' => 'ExtendedKeyUsage']], 'ExtendedKeyUsageName' => ['type' => 'string', 'enum' => ['TLS_WEB_SERVER_AUTHENTICATION', 'TLS_WEB_CLIENT_AUTHENTICATION', 'CODE_SIGNING', 'EMAIL_PROTECTION', 'TIME_STAMPING', 'OCSP_SIGNING', 'IPSEC_END_SYSTEM', 'IPSEC_TUNNEL', 'IPSEC_USER', 'ANY', 'NONE', 'CUSTOM']], 'FailureReason' => ['type' => 'string', 'enum' => ['NO_AVAILABLE_CONTACTS', 'ADDITIONAL_VERIFICATION_REQUIRED', 'DOMAIN_NOT_ALLOWED', 'INVALID_PUBLIC_DOMAIN', 'DOMAIN_VALIDATION_DENIED', 'CAA_ERROR', 'PCA_LIMIT_EXCEEDED', 'PCA_INVALID_ARN', 'PCA_INVALID_STATE', 'PCA_REQUEST_FAILED', 'PCA_NAME_CONSTRAINTS_VALIDATION', 'PCA_RESOURCE_NOT_FOUND', 'PCA_INVALID_ARGS', 'PCA_INVALID_DURATION', 'PCA_ACCESS_DENIED', 'OTHER']], 'Filters' => ['type' => 'structure', 'members' => ['extendedKeyUsage' => ['shape' => 'ExtendedKeyUsageFilterList'], 'keyUsage' => ['shape' => 'KeyUsageFilterList'], 'keyTypes' => ['shape' => 'KeyAlgorithmList']]], 'GetCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'GetCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'IdempotencyToken' => ['type' => 'string', 'max' => 32, 'min' => 1, 'pattern' => '\\w+'], 'ImportCertificateRequest' => ['type' => 'structure', 'required' => ['Certificate', 'PrivateKey'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Certificate' => ['shape' => 'CertificateBodyBlob'], 'PrivateKey' => ['shape' => 'PrivateKeyBlob'], 'CertificateChain' => ['shape' => 'CertificateChainBlob'], 'Tags' => ['shape' => 'TagList']]], 'ImportCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'InUseList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'InvalidArgsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidArnException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidDomainValidationOptionsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidParameterException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidStateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidTagException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'KeyAlgorithm' => ['type' => 'string', 'enum' => ['RSA_2048', 'RSA_1024', 'RSA_4096', 'EC_prime256v1', 'EC_secp384r1', 'EC_secp521r1']], 'KeyAlgorithmList' => ['type' => 'list', 'member' => ['shape' => 'KeyAlgorithm']], 'KeyUsage' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'KeyUsageName']]], 'KeyUsageFilterList' => ['type' => 'list', 'member' => ['shape' => 'KeyUsageName']], 'KeyUsageList' => ['type' => 'list', 'member' => ['shape' => 'KeyUsage']], 'KeyUsageName' => ['type' => 'string', 'enum' => ['DIGITAL_SIGNATURE', 'NON_REPUDIATION', 'KEY_ENCIPHERMENT', 'DATA_ENCIPHERMENT', 'KEY_AGREEMENT', 'CERTIFICATE_SIGNING', 'CRL_SIGNING', 'ENCIPHER_ONLY', 'DECIPHER_ONLY', 'ANY', 'CUSTOM']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ListCertificatesRequest' => ['type' => 'structure', 'members' => ['CertificateStatuses' => ['shape' => 'CertificateStatuses'], 'Includes' => ['shape' => 'Filters'], 'NextToken' => ['shape' => 'NextToken'], 'MaxItems' => ['shape' => 'MaxItems']]], 'ListCertificatesResponse' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'CertificateSummaryList' => ['shape' => 'CertificateSummaryList']]], 'ListTagsForCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'ListTagsForCertificateResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList']]], 'MaxItems' => ['type' => 'integer', 'max' => 1000, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 10000, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*'], 'PassphraseBlob' => ['type' => 'blob', 'max' => 128, 'min' => 4, 'sensitive' => \true], 'PrivateKey' => ['type' => 'string', 'max' => 524288, 'min' => 1, 'pattern' => '-{5}BEGIN PRIVATE KEY-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END PRIVATE KEY-{5}(\\u000D?\\u000A)?', 'sensitive' => \true], 'PrivateKeyBlob' => ['type' => 'blob', 'max' => 5120, 'min' => 1, 'sensitive' => \true], 'RecordType' => ['type' => 'string', 'enum' => ['CNAME']], 'RemoveTagsFromCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Tags'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'RenewCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'RenewalEligibility' => ['type' => 'string', 'enum' => ['ELIGIBLE', 'INELIGIBLE']], 'RenewalStatus' => ['type' => 'string', 'enum' => ['PENDING_AUTO_RENEWAL', 'PENDING_VALIDATION', 'SUCCESS', 'FAILED']], 'RenewalSummary' => ['type' => 'structure', 'required' => ['RenewalStatus', 'DomainValidationOptions', 'UpdatedAt'], 'members' => ['RenewalStatus' => ['shape' => 'RenewalStatus'], 'DomainValidationOptions' => ['shape' => 'DomainValidationList'], 'RenewalStatusReason' => ['shape' => 'FailureReason'], 'UpdatedAt' => ['shape' => 'TStamp']]], 'RequestCertificateRequest' => ['type' => 'structure', 'required' => ['DomainName'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationMethod' => ['shape' => 'ValidationMethod'], 'SubjectAlternativeNames' => ['shape' => 'DomainList'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken'], 'DomainValidationOptions' => ['shape' => 'DomainValidationOptionList'], 'Options' => ['shape' => 'CertificateOptions'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'RequestCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'RequestInProgressException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResendValidationEmailRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Domain', 'ValidationDomain'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Domain' => ['shape' => 'DomainNameString'], 'ValidationDomain' => ['shape' => 'DomainNameString']]], 'ResourceInUseException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceNotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceRecord' => ['type' => 'structure', 'required' => ['Name', 'Type', 'Value'], 'members' => ['Name' => ['shape' => 'String'], 'Type' => ['shape' => 'RecordType'], 'Value' => ['shape' => 'String']]], 'RevocationReason' => ['type' => 'string', 'enum' => ['UNSPECIFIED', 'KEY_COMPROMISE', 'CA_COMPROMISE', 'AFFILIATION_CHANGED', 'SUPERCEDED', 'CESSATION_OF_OPERATION', 'CERTIFICATE_HOLD', 'REMOVE_FROM_CRL', 'PRIVILEGE_WITHDRAWN', 'A_A_COMPROMISE']], 'String' => ['type' => 'string'], 'TStamp' => ['type' => 'timestamp'], 'Tag' => ['type' => 'structure', 'required' => ['Key'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*'], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag'], 'max' => 50, 'min' => 1], 'TagPolicyException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*'], 'TooManyTagsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'UpdateCertificateOptionsRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Options'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Options' => ['shape' => 'CertificateOptions']]], 'ValidationEmailList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'ValidationMethod' => ['type' => 'string', 'enum' => ['EMAIL', 'DNS']]]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/acm/2015-12-08/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2015-12-08', 'endpointPrefix' => 'acm', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceAbbreviation' => 'ACM', 'serviceFullName' => 'AWS Certificate Manager', 'serviceId' => 'ACM', 'signatureVersion' => 'v4', 'targetPrefix' => 'CertificateManager', 'uid' => 'acm-2015-12-08'], 'operations' => ['AddTagsToCertificate' => ['name' => 'AddTagsToCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AddTagsToCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'DeleteCertificate' => ['name' => 'DeleteCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'ResourceInUseException'], ['shape' => 'InvalidArnException']]], 'DescribeCertificate' => ['name' => 'DescribeCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DescribeCertificateRequest'], 'output' => ['shape' => 'DescribeCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'ExportCertificate' => ['name' => 'ExportCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ExportCertificateRequest'], 'output' => ['shape' => 'ExportCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestInProgressException'], ['shape' => 'InvalidArnException']]], 'GetCertificate' => ['name' => 'GetCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetCertificateRequest'], 'output' => ['shape' => 'GetCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'RequestInProgressException'], ['shape' => 'InvalidArnException']]], 'ImportCertificate' => ['name' => 'ImportCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ImportCertificateRequest'], 'output' => ['shape' => 'ImportCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'ListCertificates' => ['name' => 'ListCertificates', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListCertificatesRequest'], 'output' => ['shape' => 'ListCertificatesResponse'], 'errors' => [['shape' => 'InvalidArgsException']]], 'ListTagsForCertificate' => ['name' => 'ListTagsForCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsForCertificateRequest'], 'output' => ['shape' => 'ListTagsForCertificateResponse'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'RemoveTagsFromCertificate' => ['name' => 'RemoveTagsFromCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RemoveTagsFromCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'RenewCertificate' => ['name' => 'RenewCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RenewCertificateRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidArnException']]], 'RequestCertificate' => ['name' => 'RequestCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RequestCertificateRequest'], 'output' => ['shape' => 'RequestCertificateResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'InvalidDomainValidationOptionsException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidTagException'], ['shape' => 'TooManyTagsException'], ['shape' => 'TagPolicyException'], ['shape' => 'InvalidParameterException']]], 'ResendValidationEmail' => ['name' => 'ResendValidationEmail', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ResendValidationEmailRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException'], ['shape' => 'InvalidDomainValidationOptionsException']]], 'UpdateCertificateOptions' => ['name' => 'UpdateCertificateOptions', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateCertificateOptionsRequest'], 'errors' => [['shape' => 'ResourceNotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'InvalidStateException'], ['shape' => 'InvalidArnException']]]], 'shapes' => ['AddTagsToCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Tags'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'Arn' => ['type' => 'string', 'max' => 2048, 'min' => 20, 'pattern' => 'arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=,.@-]+)*'], 'CertificateBody' => ['type' => 'string', 'max' => 32768, 'min' => 1, 'pattern' => '-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'CertificateBodyBlob' => ['type' => 'blob', 'max' => 32768, 'min' => 1], 'CertificateChain' => ['type' => 'string', 'max' => 2097152, 'min' => 1, 'pattern' => '(-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}\\u000D?\\u000A)*-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'CertificateChainBlob' => ['type' => 'blob', 'max' => 2097152, 'min' => 1], 'CertificateDetail' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'DomainName' => ['shape' => 'DomainNameString'], 'SubjectAlternativeNames' => ['shape' => 'DomainList'], 'DomainValidationOptions' => ['shape' => 'DomainValidationList'], 'Serial' => ['shape' => 'String'], 'Subject' => ['shape' => 'String'], 'Issuer' => ['shape' => 'String'], 'CreatedAt' => ['shape' => 'TStamp'], 'IssuedAt' => ['shape' => 'TStamp'], 'ImportedAt' => ['shape' => 'TStamp'], 'Status' => ['shape' => 'CertificateStatus'], 'RevokedAt' => ['shape' => 'TStamp'], 'RevocationReason' => ['shape' => 'RevocationReason'], 'NotBefore' => ['shape' => 'TStamp'], 'NotAfter' => ['shape' => 'TStamp'], 'KeyAlgorithm' => ['shape' => 'KeyAlgorithm'], 'SignatureAlgorithm' => ['shape' => 'String'], 'InUseBy' => ['shape' => 'InUseList'], 'FailureReason' => ['shape' => 'FailureReason'], 'Type' => ['shape' => 'CertificateType'], 'RenewalSummary' => ['shape' => 'RenewalSummary'], 'KeyUsages' => ['shape' => 'KeyUsageList'], 'ExtendedKeyUsages' => ['shape' => 'ExtendedKeyUsageList'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'RenewalEligibility' => ['shape' => 'RenewalEligibility'], 'Options' => ['shape' => 'CertificateOptions']]], 'CertificateOptions' => ['type' => 'structure', 'members' => ['CertificateTransparencyLoggingPreference' => ['shape' => 'CertificateTransparencyLoggingPreference']]], 'CertificateStatus' => ['type' => 'string', 'enum' => ['PENDING_VALIDATION', 'ISSUED', 'INACTIVE', 'EXPIRED', 'VALIDATION_TIMED_OUT', 'REVOKED', 'FAILED']], 'CertificateStatuses' => ['type' => 'list', 'member' => ['shape' => 'CertificateStatus']], 'CertificateSummary' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'DomainName' => ['shape' => 'DomainNameString']]], 'CertificateSummaryList' => ['type' => 'list', 'member' => ['shape' => 'CertificateSummary']], 'CertificateTransparencyLoggingPreference' => ['type' => 'string', 'enum' => ['ENABLED', 'DISABLED']], 'CertificateType' => ['type' => 'string', 'enum' => ['IMPORTED', 'AMAZON_ISSUED', 'PRIVATE']], 'DeleteCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'DescribeCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'DescribeCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateDetail']]], 'DomainList' => ['type' => 'list', 'member' => ['shape' => 'DomainNameString'], 'max' => 100, 'min' => 1], 'DomainNameString' => ['type' => 'string', 'max' => 253, 'min' => 1, 'pattern' => '^(\\*\\.)?(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$'], 'DomainStatus' => ['type' => 'string', 'enum' => ['PENDING_VALIDATION', 'SUCCESS', 'FAILED']], 'DomainValidation' => ['type' => 'structure', 'required' => ['DomainName'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationEmails' => ['shape' => 'ValidationEmailList'], 'ValidationDomain' => ['shape' => 'DomainNameString'], 'ValidationStatus' => ['shape' => 'DomainStatus'], 'ResourceRecord' => ['shape' => 'ResourceRecord'], 'ValidationMethod' => ['shape' => 'ValidationMethod']]], 'DomainValidationList' => ['type' => 'list', 'member' => ['shape' => 'DomainValidation'], 'max' => 1000, 'min' => 1], 'DomainValidationOption' => ['type' => 'structure', 'required' => ['DomainName', 'ValidationDomain'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationDomain' => ['shape' => 'DomainNameString']]], 'DomainValidationOptionList' => ['type' => 'list', 'member' => ['shape' => 'DomainValidationOption'], 'max' => 100, 'min' => 1], 'ExportCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Passphrase'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Passphrase' => ['shape' => 'PassphraseBlob']]], 'ExportCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain'], 'PrivateKey' => ['shape' => 'PrivateKey']]], 'ExtendedKeyUsage' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'ExtendedKeyUsageName'], 'OID' => ['shape' => 'String']]], 'ExtendedKeyUsageFilterList' => ['type' => 'list', 'member' => ['shape' => 'ExtendedKeyUsageName']], 'ExtendedKeyUsageList' => ['type' => 'list', 'member' => ['shape' => 'ExtendedKeyUsage']], 'ExtendedKeyUsageName' => ['type' => 'string', 'enum' => ['TLS_WEB_SERVER_AUTHENTICATION', 'TLS_WEB_CLIENT_AUTHENTICATION', 'CODE_SIGNING', 'EMAIL_PROTECTION', 'TIME_STAMPING', 'OCSP_SIGNING', 'IPSEC_END_SYSTEM', 'IPSEC_TUNNEL', 'IPSEC_USER', 'ANY', 'NONE', 'CUSTOM']], 'FailureReason' => ['type' => 'string', 'enum' => ['NO_AVAILABLE_CONTACTS', 'ADDITIONAL_VERIFICATION_REQUIRED', 'DOMAIN_NOT_ALLOWED', 'INVALID_PUBLIC_DOMAIN', 'DOMAIN_VALIDATION_DENIED', 'CAA_ERROR', 'PCA_LIMIT_EXCEEDED', 'PCA_INVALID_ARN', 'PCA_INVALID_STATE', 'PCA_REQUEST_FAILED', 'PCA_NAME_CONSTRAINTS_VALIDATION', 'PCA_RESOURCE_NOT_FOUND', 'PCA_INVALID_ARGS', 'PCA_INVALID_DURATION', 'PCA_ACCESS_DENIED', 'SLR_NOT_FOUND', 'OTHER']], 'Filters' => ['type' => 'structure', 'members' => ['extendedKeyUsage' => ['shape' => 'ExtendedKeyUsageFilterList'], 'keyUsage' => ['shape' => 'KeyUsageFilterList'], 'keyTypes' => ['shape' => 'KeyAlgorithmList']]], 'GetCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'GetCertificateResponse' => ['type' => 'structure', 'members' => ['Certificate' => ['shape' => 'CertificateBody'], 'CertificateChain' => ['shape' => 'CertificateChain']]], 'IdempotencyToken' => ['type' => 'string', 'max' => 32, 'min' => 1, 'pattern' => '\\w+'], 'ImportCertificateRequest' => ['type' => 'structure', 'required' => ['Certificate', 'PrivateKey'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Certificate' => ['shape' => 'CertificateBodyBlob'], 'PrivateKey' => ['shape' => 'PrivateKeyBlob'], 'CertificateChain' => ['shape' => 'CertificateChainBlob'], 'Tags' => ['shape' => 'TagList']]], 'ImportCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'InUseList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'InvalidArgsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidArnException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidDomainValidationOptionsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidParameterException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidStateException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'InvalidTagException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'KeyAlgorithm' => ['type' => 'string', 'enum' => ['RSA_2048', 'RSA_1024', 'RSA_4096', 'EC_prime256v1', 'EC_secp384r1', 'EC_secp521r1']], 'KeyAlgorithmList' => ['type' => 'list', 'member' => ['shape' => 'KeyAlgorithm']], 'KeyUsage' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'KeyUsageName']]], 'KeyUsageFilterList' => ['type' => 'list', 'member' => ['shape' => 'KeyUsageName']], 'KeyUsageList' => ['type' => 'list', 'member' => ['shape' => 'KeyUsage']], 'KeyUsageName' => ['type' => 'string', 'enum' => ['DIGITAL_SIGNATURE', 'NON_REPUDIATION', 'KEY_ENCIPHERMENT', 'DATA_ENCIPHERMENT', 'KEY_AGREEMENT', 'CERTIFICATE_SIGNING', 'CRL_SIGNING', 'ENCIPHER_ONLY', 'DECIPHER_ONLY', 'ANY', 'CUSTOM']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ListCertificatesRequest' => ['type' => 'structure', 'members' => ['CertificateStatuses' => ['shape' => 'CertificateStatuses'], 'Includes' => ['shape' => 'Filters'], 'NextToken' => ['shape' => 'NextToken'], 'MaxItems' => ['shape' => 'MaxItems']]], 'ListCertificatesResponse' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'CertificateSummaryList' => ['shape' => 'CertificateSummaryList']]], 'ListTagsForCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'ListTagsForCertificateResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList']]], 'MaxItems' => ['type' => 'integer', 'max' => 1000, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 10000, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*'], 'PassphraseBlob' => ['type' => 'blob', 'max' => 128, 'min' => 4, 'sensitive' => \true], 'PrivateKey' => ['type' => 'string', 'max' => 524288, 'min' => 1, 'pattern' => '-{5}BEGIN PRIVATE KEY-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END PRIVATE KEY-{5}(\\u000D?\\u000A)?', 'sensitive' => \true], 'PrivateKeyBlob' => ['type' => 'blob', 'max' => 5120, 'min' => 1, 'sensitive' => \true], 'RecordType' => ['type' => 'string', 'enum' => ['CNAME']], 'RemoveTagsFromCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Tags'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'RenewCertificateRequest' => ['type' => 'structure', 'required' => ['CertificateArn'], 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'RenewalEligibility' => ['type' => 'string', 'enum' => ['ELIGIBLE', 'INELIGIBLE']], 'RenewalStatus' => ['type' => 'string', 'enum' => ['PENDING_AUTO_RENEWAL', 'PENDING_VALIDATION', 'SUCCESS', 'FAILED']], 'RenewalSummary' => ['type' => 'structure', 'required' => ['RenewalStatus', 'DomainValidationOptions', 'UpdatedAt'], 'members' => ['RenewalStatus' => ['shape' => 'RenewalStatus'], 'DomainValidationOptions' => ['shape' => 'DomainValidationList'], 'RenewalStatusReason' => ['shape' => 'FailureReason'], 'UpdatedAt' => ['shape' => 'TStamp']]], 'RequestCertificateRequest' => ['type' => 'structure', 'required' => ['DomainName'], 'members' => ['DomainName' => ['shape' => 'DomainNameString'], 'ValidationMethod' => ['shape' => 'ValidationMethod'], 'SubjectAlternativeNames' => ['shape' => 'DomainList'], 'IdempotencyToken' => ['shape' => 'IdempotencyToken'], 'DomainValidationOptions' => ['shape' => 'DomainValidationOptionList'], 'Options' => ['shape' => 'CertificateOptions'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'RequestCertificateResponse' => ['type' => 'structure', 'members' => ['CertificateArn' => ['shape' => 'Arn']]], 'RequestInProgressException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResendValidationEmailRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Domain', 'ValidationDomain'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Domain' => ['shape' => 'DomainNameString'], 'ValidationDomain' => ['shape' => 'DomainNameString']]], 'ResourceInUseException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceNotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'ResourceRecord' => ['type' => 'structure', 'required' => ['Name', 'Type', 'Value'], 'members' => ['Name' => ['shape' => 'String'], 'Type' => ['shape' => 'RecordType'], 'Value' => ['shape' => 'String']]], 'RevocationReason' => ['type' => 'string', 'enum' => ['UNSPECIFIED', 'KEY_COMPROMISE', 'CA_COMPROMISE', 'AFFILIATION_CHANGED', 'SUPERCEDED', 'CESSATION_OF_OPERATION', 'CERTIFICATE_HOLD', 'REMOVE_FROM_CRL', 'PRIVILEGE_WITHDRAWN', 'A_A_COMPROMISE']], 'String' => ['type' => 'string'], 'TStamp' => ['type' => 'timestamp'], 'Tag' => ['type' => 'structure', 'required' => ['Key'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*'], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag'], 'max' => 50, 'min' => 1], 'TagPolicyException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*'], 'TooManyTagsException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'exception' => \true], 'UpdateCertificateOptionsRequest' => ['type' => 'structure', 'required' => ['CertificateArn', 'Options'], 'members' => ['CertificateArn' => ['shape' => 'Arn'], 'Options' => ['shape' => 'CertificateOptions']]], 'ValidationEmailList' => ['type' => 'list', 'member' => ['shape' => 'String']], 'ValidationMethod' => ['type' => 'string', 'enum' => ['EMAIL', 'DNS']]]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/alexaforbusiness/2017-11-09/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-11-09', 'endpointPrefix' => 'a4b', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceFullName' => 'Alexa For Business', 'serviceId' => 'Alexa For Business', 'signatureVersion' => 'v4', 'targetPrefix' => 'AlexaForBusiness', 'uid' => 'alexaforbusiness-2017-11-09'], 'operations' => ['ApproveSkill' => ['name' => 'ApproveSkill', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ApproveSkillRequest'], 'output' => ['shape' => 'ApproveSkillResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'AssociateContactWithAddressBook' => ['name' => 'AssociateContactWithAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateContactWithAddressBookRequest'], 'output' => ['shape' => 'AssociateContactWithAddressBookResponse'], 'errors' => [['shape' => 'LimitExceededException']]], 'AssociateDeviceWithNetworkProfile' => ['name' => 'AssociateDeviceWithNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateDeviceWithNetworkProfileRequest'], 'output' => ['shape' => 'AssociateDeviceWithNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'AssociateDeviceWithRoom' => ['name' => 'AssociateDeviceWithRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateDeviceWithRoomRequest'], 'output' => ['shape' => 'AssociateDeviceWithRoomResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'AssociateSkillGroupWithRoom' => ['name' => 'AssociateSkillGroupWithRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillGroupWithRoomRequest'], 'output' => ['shape' => 'AssociateSkillGroupWithRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'AssociateSkillWithSkillGroup' => ['name' => 'AssociateSkillWithSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillWithSkillGroupRequest'], 'output' => ['shape' => 'AssociateSkillWithSkillGroupResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException'], ['shape' => 'SkillNotLinkedException']]], 'AssociateSkillWithUsers' => ['name' => 'AssociateSkillWithUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillWithUsersRequest'], 'output' => ['shape' => 'AssociateSkillWithUsersResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'CreateAddressBook' => ['name' => 'CreateAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateAddressBookRequest'], 'output' => ['shape' => 'CreateAddressBookResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateBusinessReportSchedule' => ['name' => 'CreateBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateBusinessReportScheduleRequest'], 'output' => ['shape' => 'CreateBusinessReportScheduleResponse'], 'errors' => [['shape' => 'AlreadyExistsException']]], 'CreateConferenceProvider' => ['name' => 'CreateConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateConferenceProviderRequest'], 'output' => ['shape' => 'CreateConferenceProviderResponse'], 'errors' => [['shape' => 'AlreadyExistsException']]], 'CreateContact' => ['name' => 'CreateContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateContactRequest'], 'output' => ['shape' => 'CreateContactResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateGatewayGroup' => ['name' => 'CreateGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateGatewayGroupRequest'], 'output' => ['shape' => 'CreateGatewayGroupResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateNetworkProfile' => ['name' => 'CreateNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateNetworkProfileRequest'], 'output' => ['shape' => 'CreateNetworkProfileResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException'], ['shape' => 'InvalidServiceLinkedRoleStateException']]], 'CreateProfile' => ['name' => 'CreateProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateProfileRequest'], 'output' => ['shape' => 'CreateProfileResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'AlreadyExistsException'], ['shape' => 'ConcurrentModificationException']]], 'CreateRoom' => ['name' => 'CreateRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateRoomRequest'], 'output' => ['shape' => 'CreateRoomResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateSkillGroup' => ['name' => 'CreateSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateSkillGroupRequest'], 'output' => ['shape' => 'CreateSkillGroupResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException']]], 'CreateUser' => ['name' => 'CreateUser', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateUserRequest'], 'output' => ['shape' => 'CreateUserResponse'], 'errors' => [['shape' => 'ResourceInUseException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteAddressBook' => ['name' => 'DeleteAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteAddressBookRequest'], 'output' => ['shape' => 'DeleteAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteBusinessReportSchedule' => ['name' => 'DeleteBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteBusinessReportScheduleRequest'], 'output' => ['shape' => 'DeleteBusinessReportScheduleResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteConferenceProvider' => ['name' => 'DeleteConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteConferenceProviderRequest'], 'output' => ['shape' => 'DeleteConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'DeleteContact' => ['name' => 'DeleteContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteContactRequest'], 'output' => ['shape' => 'DeleteContactResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteDevice' => ['name' => 'DeleteDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteDeviceRequest'], 'output' => ['shape' => 'DeleteDeviceResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException']]], 'DeleteDeviceUsageData' => ['name' => 'DeleteDeviceUsageData', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteDeviceUsageDataRequest'], 'output' => ['shape' => 'DeleteDeviceUsageDataResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'DeviceNotRegisteredException'], ['shape' => 'LimitExceededException']]], 'DeleteGatewayGroup' => ['name' => 'DeleteGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteGatewayGroupRequest'], 'output' => ['shape' => 'DeleteGatewayGroupResponse'], 'errors' => [['shape' => 'ResourceAssociatedException']]], 'DeleteNetworkProfile' => ['name' => 'DeleteNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteNetworkProfileRequest'], 'output' => ['shape' => 'DeleteNetworkProfileResponse'], 'errors' => [['shape' => 'ResourceInUseException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DeleteProfile' => ['name' => 'DeleteProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteProfileRequest'], 'output' => ['shape' => 'DeleteProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteRoom' => ['name' => 'DeleteRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteRoomRequest'], 'output' => ['shape' => 'DeleteRoomResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteRoomSkillParameter' => ['name' => 'DeleteRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteRoomSkillParameterRequest'], 'output' => ['shape' => 'DeleteRoomSkillParameterResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'DeleteSkillAuthorization' => ['name' => 'DeleteSkillAuthorization', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteSkillAuthorizationRequest'], 'output' => ['shape' => 'DeleteSkillAuthorizationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteSkillGroup' => ['name' => 'DeleteSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteSkillGroupRequest'], 'output' => ['shape' => 'DeleteSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteUser' => ['name' => 'DeleteUser', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteUserRequest'], 'output' => ['shape' => 'DeleteUserResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DisassociateContactFromAddressBook' => ['name' => 'DisassociateContactFromAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateContactFromAddressBookRequest'], 'output' => ['shape' => 'DisassociateContactFromAddressBookResponse']], 'DisassociateDeviceFromRoom' => ['name' => 'DisassociateDeviceFromRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateDeviceFromRoomRequest'], 'output' => ['shape' => 'DisassociateDeviceFromRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'DisassociateSkillFromSkillGroup' => ['name' => 'DisassociateSkillFromSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillFromSkillGroupRequest'], 'output' => ['shape' => 'DisassociateSkillFromSkillGroupResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DisassociateSkillFromUsers' => ['name' => 'DisassociateSkillFromUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillFromUsersRequest'], 'output' => ['shape' => 'DisassociateSkillFromUsersResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DisassociateSkillGroupFromRoom' => ['name' => 'DisassociateSkillGroupFromRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillGroupFromRoomRequest'], 'output' => ['shape' => 'DisassociateSkillGroupFromRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'ForgetSmartHomeAppliances' => ['name' => 'ForgetSmartHomeAppliances', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ForgetSmartHomeAppliancesRequest'], 'output' => ['shape' => 'ForgetSmartHomeAppliancesResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetAddressBook' => ['name' => 'GetAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetAddressBookRequest'], 'output' => ['shape' => 'GetAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetConferencePreference' => ['name' => 'GetConferencePreference', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetConferencePreferenceRequest'], 'output' => ['shape' => 'GetConferencePreferenceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetConferenceProvider' => ['name' => 'GetConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetConferenceProviderRequest'], 'output' => ['shape' => 'GetConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetContact' => ['name' => 'GetContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetContactRequest'], 'output' => ['shape' => 'GetContactResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetDevice' => ['name' => 'GetDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetDeviceRequest'], 'output' => ['shape' => 'GetDeviceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetGateway' => ['name' => 'GetGateway', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetGatewayRequest'], 'output' => ['shape' => 'GetGatewayResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetGatewayGroup' => ['name' => 'GetGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetGatewayGroupRequest'], 'output' => ['shape' => 'GetGatewayGroupResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetInvitationConfiguration' => ['name' => 'GetInvitationConfiguration', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetInvitationConfigurationRequest'], 'output' => ['shape' => 'GetInvitationConfigurationResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetNetworkProfile' => ['name' => 'GetNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetNetworkProfileRequest'], 'output' => ['shape' => 'GetNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'InvalidSecretsManagerResourceException']]], 'GetProfile' => ['name' => 'GetProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetProfileRequest'], 'output' => ['shape' => 'GetProfileResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetRoom' => ['name' => 'GetRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetRoomRequest'], 'output' => ['shape' => 'GetRoomResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetRoomSkillParameter' => ['name' => 'GetRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetRoomSkillParameterRequest'], 'output' => ['shape' => 'GetRoomSkillParameterResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetSkillGroup' => ['name' => 'GetSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetSkillGroupRequest'], 'output' => ['shape' => 'GetSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListBusinessReportSchedules' => ['name' => 'ListBusinessReportSchedules', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListBusinessReportSchedulesRequest'], 'output' => ['shape' => 'ListBusinessReportSchedulesResponse']], 'ListConferenceProviders' => ['name' => 'ListConferenceProviders', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListConferenceProvidersRequest'], 'output' => ['shape' => 'ListConferenceProvidersResponse']], 'ListDeviceEvents' => ['name' => 'ListDeviceEvents', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListDeviceEventsRequest'], 'output' => ['shape' => 'ListDeviceEventsResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListGatewayGroups' => ['name' => 'ListGatewayGroups', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListGatewayGroupsRequest'], 'output' => ['shape' => 'ListGatewayGroupsResponse']], 'ListGateways' => ['name' => 'ListGateways', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListGatewaysRequest'], 'output' => ['shape' => 'ListGatewaysResponse']], 'ListSkills' => ['name' => 'ListSkills', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsRequest'], 'output' => ['shape' => 'ListSkillsResponse']], 'ListSkillsStoreCategories' => ['name' => 'ListSkillsStoreCategories', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsStoreCategoriesRequest'], 'output' => ['shape' => 'ListSkillsStoreCategoriesResponse']], 'ListSkillsStoreSkillsByCategory' => ['name' => 'ListSkillsStoreSkillsByCategory', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsStoreSkillsByCategoryRequest'], 'output' => ['shape' => 'ListSkillsStoreSkillsByCategoryResponse']], 'ListSmartHomeAppliances' => ['name' => 'ListSmartHomeAppliances', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSmartHomeAppliancesRequest'], 'output' => ['shape' => 'ListSmartHomeAppliancesResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListTags' => ['name' => 'ListTags', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsRequest'], 'output' => ['shape' => 'ListTagsResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'PutConferencePreference' => ['name' => 'PutConferencePreference', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutConferencePreferenceRequest'], 'output' => ['shape' => 'PutConferencePreferenceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'PutInvitationConfiguration' => ['name' => 'PutInvitationConfiguration', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutInvitationConfigurationRequest'], 'output' => ['shape' => 'PutInvitationConfigurationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'PutRoomSkillParameter' => ['name' => 'PutRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutRoomSkillParameterRequest'], 'output' => ['shape' => 'PutRoomSkillParameterResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'PutSkillAuthorization' => ['name' => 'PutSkillAuthorization', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutSkillAuthorizationRequest'], 'output' => ['shape' => 'PutSkillAuthorizationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'ConcurrentModificationException']]], 'RegisterAVSDevice' => ['name' => 'RegisterAVSDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RegisterAVSDeviceRequest'], 'output' => ['shape' => 'RegisterAVSDeviceResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidDeviceException']]], 'RejectSkill' => ['name' => 'RejectSkill', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RejectSkillRequest'], 'output' => ['shape' => 'RejectSkillResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'ResolveRoom' => ['name' => 'ResolveRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ResolveRoomRequest'], 'output' => ['shape' => 'ResolveRoomResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'RevokeInvitation' => ['name' => 'RevokeInvitation', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RevokeInvitationRequest'], 'output' => ['shape' => 'RevokeInvitationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'SearchAddressBooks' => ['name' => 'SearchAddressBooks', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchAddressBooksRequest'], 'output' => ['shape' => 'SearchAddressBooksResponse']], 'SearchContacts' => ['name' => 'SearchContacts', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchContactsRequest'], 'output' => ['shape' => 'SearchContactsResponse']], 'SearchDevices' => ['name' => 'SearchDevices', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchDevicesRequest'], 'output' => ['shape' => 'SearchDevicesResponse']], 'SearchNetworkProfiles' => ['name' => 'SearchNetworkProfiles', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchNetworkProfilesRequest'], 'output' => ['shape' => 'SearchNetworkProfilesResponse']], 'SearchProfiles' => ['name' => 'SearchProfiles', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchProfilesRequest'], 'output' => ['shape' => 'SearchProfilesResponse']], 'SearchRooms' => ['name' => 'SearchRooms', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchRoomsRequest'], 'output' => ['shape' => 'SearchRoomsResponse']], 'SearchSkillGroups' => ['name' => 'SearchSkillGroups', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchSkillGroupsRequest'], 'output' => ['shape' => 'SearchSkillGroupsResponse']], 'SearchUsers' => ['name' => 'SearchUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchUsersRequest'], 'output' => ['shape' => 'SearchUsersResponse']], 'SendAnnouncement' => ['name' => 'SendAnnouncement', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SendAnnouncementRequest'], 'output' => ['shape' => 'SendAnnouncementResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'AlreadyExistsException']]], 'SendInvitation' => ['name' => 'SendInvitation', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SendInvitationRequest'], 'output' => ['shape' => 'SendInvitationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'InvalidUserStatusException'], ['shape' => 'ConcurrentModificationException']]], 'StartDeviceSync' => ['name' => 'StartDeviceSync', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'StartDeviceSyncRequest'], 'output' => ['shape' => 'StartDeviceSyncResponse'], 'errors' => [['shape' => 'DeviceNotRegisteredException']]], 'StartSmartHomeApplianceDiscovery' => ['name' => 'StartSmartHomeApplianceDiscovery', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'StartSmartHomeApplianceDiscoveryRequest'], 'output' => ['shape' => 'StartSmartHomeApplianceDiscoveryResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UpdateAddressBook' => ['name' => 'UpdateAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateAddressBookRequest'], 'output' => ['shape' => 'UpdateAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateBusinessReportSchedule' => ['name' => 'UpdateBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateBusinessReportScheduleRequest'], 'output' => ['shape' => 'UpdateBusinessReportScheduleResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateConferenceProvider' => ['name' => 'UpdateConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateConferenceProviderRequest'], 'output' => ['shape' => 'UpdateConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UpdateContact' => ['name' => 'UpdateContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateContactRequest'], 'output' => ['shape' => 'UpdateContactResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateDevice' => ['name' => 'UpdateDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateDeviceRequest'], 'output' => ['shape' => 'UpdateDeviceResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'UpdateGateway' => ['name' => 'UpdateGateway', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateGatewayRequest'], 'output' => ['shape' => 'UpdateGatewayResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateGatewayGroup' => ['name' => 'UpdateGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateGatewayGroupRequest'], 'output' => ['shape' => 'UpdateGatewayGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateNetworkProfile' => ['name' => 'UpdateNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateNetworkProfileRequest'], 'output' => ['shape' => 'UpdateNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException'], ['shape' => 'InvalidSecretsManagerResourceException']]], 'UpdateProfile' => ['name' => 'UpdateProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateProfileRequest'], 'output' => ['shape' => 'UpdateProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateRoom' => ['name' => 'UpdateRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateRoomRequest'], 'output' => ['shape' => 'UpdateRoomResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateSkillGroup' => ['name' => 'UpdateSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateSkillGroupRequest'], 'output' => ['shape' => 'UpdateSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]]], 'shapes' => ['Address' => ['type' => 'string', 'max' => 500, 'min' => 1], 'AddressBook' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'AddressBookData' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'AddressBookDataList' => ['type' => 'list', 'member' => ['shape' => 'AddressBookData']], 'AddressBookDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'AddressBookName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'AlreadyExistsException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'AmazonId' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,18}'], 'ApplianceDescription' => ['type' => 'string'], 'ApplianceFriendlyName' => ['type' => 'string'], 'ApplianceManufacturerName' => ['type' => 'string'], 'ApproveSkillRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'ApproveSkillResponse' => ['type' => 'structure', 'members' => []], 'Arn' => ['type' => 'string', 'pattern' => 'arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}'], 'AssociateContactWithAddressBookRequest' => ['type' => 'structure', 'required' => ['ContactArn', 'AddressBookArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'AddressBookArn' => ['shape' => 'Arn']]], 'AssociateContactWithAddressBookResponse' => ['type' => 'structure', 'members' => []], 'AssociateDeviceWithNetworkProfileRequest' => ['type' => 'structure', 'required' => ['DeviceArn', 'NetworkProfileArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'NetworkProfileArn' => ['shape' => 'Arn']]], 'AssociateDeviceWithNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'AssociateDeviceWithRoomRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'AssociateDeviceWithRoomResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillGroupWithRoomRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'AssociateSkillGroupWithRoomResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillWithSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId']]], 'AssociateSkillWithSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillWithUsersRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'AssociateSkillWithUsersResponse' => ['type' => 'structure', 'members' => []], 'Audio' => ['type' => 'structure', 'required' => ['Locale', 'Location'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Location' => ['shape' => 'AudioLocation']]], 'AudioList' => ['type' => 'list', 'member' => ['shape' => 'Audio'], 'max' => 1], 'AudioLocation' => ['type' => 'string', 'max' => 1200, 'min' => 0, 'pattern' => 'https://([A-Za-z0-9_.-]+)?(s3-[A-Za-z0-9-]+|s3\\.([A-Za-z0-9-])+|s3|s3.dualstack\\.([A-Za-z0-9-])+)+.amazonaws.com/.*'], 'AuthorizationResult' => ['type' => 'map', 'key' => ['shape' => 'Key'], 'value' => ['shape' => 'Value'], 'sensitive' => \true], 'Boolean' => ['type' => 'boolean'], 'BulletPoint' => ['type' => 'string'], 'BulletPoints' => ['type' => 'list', 'member' => ['shape' => 'BulletPoint']], 'BusinessReport' => ['type' => 'structure', 'members' => ['Status' => ['shape' => 'BusinessReportStatus'], 'FailureCode' => ['shape' => 'BusinessReportFailureCode'], 'S3Location' => ['shape' => 'BusinessReportS3Location'], 'DeliveryTime' => ['shape' => 'BusinessReportDeliveryTime'], 'DownloadUrl' => ['shape' => 'BusinessReportDownloadUrl']]], 'BusinessReportContentRange' => ['type' => 'structure', 'members' => ['Interval' => ['shape' => 'BusinessReportInterval']]], 'BusinessReportDeliveryTime' => ['type' => 'timestamp'], 'BusinessReportDownloadUrl' => ['type' => 'string'], 'BusinessReportFailureCode' => ['type' => 'string', 'enum' => ['ACCESS_DENIED', 'NO_SUCH_BUCKET', 'INTERNAL_FAILURE']], 'BusinessReportFormat' => ['type' => 'string', 'enum' => ['CSV', 'CSV_ZIP']], 'BusinessReportInterval' => ['type' => 'string', 'enum' => ['ONE_DAY', 'ONE_WEEK', 'THIRTY_DAYS']], 'BusinessReportRecurrence' => ['type' => 'structure', 'members' => ['StartDate' => ['shape' => 'Date']]], 'BusinessReportS3Location' => ['type' => 'structure', 'members' => ['Path' => ['shape' => 'BusinessReportS3Path'], 'BucketName' => ['shape' => 'CustomerS3BucketName']]], 'BusinessReportS3Path' => ['type' => 'string'], 'BusinessReportSchedule' => ['type' => 'structure', 'members' => ['ScheduleArn' => ['shape' => 'Arn'], 'ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ContentRange' => ['shape' => 'BusinessReportContentRange'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence'], 'LastBusinessReport' => ['shape' => 'BusinessReport']]], 'BusinessReportScheduleList' => ['type' => 'list', 'member' => ['shape' => 'BusinessReportSchedule']], 'BusinessReportScheduleName' => ['type' => 'string', 'max' => 64, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'BusinessReportStatus' => ['type' => 'string', 'enum' => ['RUNNING', 'SUCCEEDED', 'FAILED']], 'Category' => ['type' => 'structure', 'members' => ['CategoryId' => ['shape' => 'CategoryId'], 'CategoryName' => ['shape' => 'CategoryName']]], 'CategoryId' => ['type' => 'long', 'min' => 1], 'CategoryList' => ['type' => 'list', 'member' => ['shape' => 'Category']], 'CategoryName' => ['type' => 'string'], 'CertificateTime' => ['type' => 'timestamp'], 'ClientId' => ['type' => 'string', 'pattern' => '^\\S+{1,256}$'], 'ClientRequestToken' => ['type' => 'string', 'max' => 150, 'min' => 10, 'pattern' => '[a-zA-Z0-9][a-zA-Z0-9_-]*'], 'CommsProtocol' => ['type' => 'string', 'enum' => ['SIP', 'SIPS', 'H323']], 'ConcurrentModificationException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ConferencePreference' => ['type' => 'structure', 'members' => ['DefaultConferenceProviderArn' => ['shape' => 'Arn']]], 'ConferenceProvider' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'ConferenceProviderName'], 'Type' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting']]], 'ConferenceProviderName' => ['type' => 'string', 'max' => 50, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'ConferenceProviderType' => ['type' => 'string', 'enum' => ['CHIME', 'BLUEJEANS', 'FUZE', 'GOOGLE_HANGOUTS', 'POLYCOM', 'RINGCENTRAL', 'SKYPE_FOR_BUSINESS', 'WEBEX', 'ZOOM', 'CUSTOM']], 'ConferenceProvidersList' => ['type' => 'list', 'member' => ['shape' => 'ConferenceProvider']], 'ConnectionStatus' => ['type' => 'string', 'enum' => ['ONLINE', 'OFFLINE']], 'ConnectionStatusUpdatedTime' => ['type' => 'timestamp'], 'Contact' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'ContactData' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'ContactDataList' => ['type' => 'list', 'member' => ['shape' => 'ContactData']], 'ContactName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'Content' => ['type' => 'structure', 'members' => ['TextList' => ['shape' => 'TextList'], 'SsmlList' => ['shape' => 'SsmlList'], 'AudioList' => ['shape' => 'AudioList']]], 'CountryCode' => ['type' => 'string', 'pattern' => '\\d{1,3}'], 'CreateAddressBookRequest' => ['type' => 'structure', 'required' => ['Name'], 'members' => ['Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateAddressBookResponse' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'CreateBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['Format', 'ContentRange'], 'members' => ['ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ContentRange' => ['shape' => 'BusinessReportContentRange'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => ['ScheduleArn' => ['shape' => 'Arn']]], 'CreateConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderName', 'ConferenceProviderType', 'MeetingSetting'], 'members' => ['ConferenceProviderName' => ['shape' => 'ConferenceProviderName'], 'ConferenceProviderType' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateConferenceProviderResponse' => ['type' => 'structure', 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'CreateContactRequest' => ['type' => 'structure', 'required' => ['FirstName'], 'members' => ['DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateContactResponse' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'CreateEndOfMeetingReminder' => ['type' => 'structure', 'required' => ['ReminderAtMinutes', 'ReminderType', 'Enabled'], 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateGatewayGroupRequest' => ['type' => 'structure', 'required' => ['Name', 'ClientRequestToken'], 'members' => ['Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateGatewayGroupResponse' => ['type' => 'structure', 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'CreateInstantBooking' => ['type' => 'structure', 'required' => ['DurationInMinutes', 'Enabled'], 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateMeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'CreateEndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'CreateInstantBooking'], 'RequireCheckIn' => ['shape' => 'CreateRequireCheckIn']]], 'CreateNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileName', 'Ssid', 'SecurityType', 'ClientRequestToken'], 'members' => ['NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateNetworkProfileResponse' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'CreateProfileRequest' => ['type' => 'structure', 'required' => ['ProfileName', 'Timezone', 'Address', 'DistanceUnit', 'TemperatureUnit', 'WakeWord'], 'members' => ['ProfileName' => ['shape' => 'ProfileName'], 'Timezone' => ['shape' => 'Timezone'], 'Address' => ['shape' => 'Address'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'MeetingRoomConfiguration' => ['shape' => 'CreateMeetingRoomConfiguration']]], 'CreateProfileResponse' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'CreateRequireCheckIn' => ['type' => 'structure', 'required' => ['ReleaseAfterMinutes', 'Enabled'], 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateRoomRequest' => ['type' => 'structure', 'required' => ['RoomName'], 'members' => ['RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProfileArn' => ['shape' => 'Arn'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateRoomResponse' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'CreateSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillGroupName'], 'members' => ['SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateSkillGroupResponse' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'CreateUserRequest' => ['type' => 'structure', 'required' => ['UserId'], 'members' => ['UserId' => ['shape' => 'user_UserId'], 'FirstName' => ['shape' => 'user_FirstName'], 'LastName' => ['shape' => 'user_LastName'], 'Email' => ['shape' => 'Email'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateUserResponse' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn']]], 'CurrentWiFiPassword' => ['type' => 'string', 'max' => 128, 'min' => 5, 'pattern' => '[\\x00-\\x7F]*', 'sensitive' => \true], 'CustomerS3BucketName' => ['type' => 'string', 'pattern' => '[a-z0-9-\\.]{3,63}'], 'Date' => ['type' => 'string', 'pattern' => '^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$'], 'DeleteAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'DeleteAddressBookResponse' => ['type' => 'structure', 'members' => []], 'DeleteBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['ScheduleArn'], 'members' => ['ScheduleArn' => ['shape' => 'Arn']]], 'DeleteBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => []], 'DeleteConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'DeleteConferenceProviderResponse' => ['type' => 'structure', 'members' => []], 'DeleteContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'DeleteContactResponse' => ['type' => 'structure', 'members' => []], 'DeleteDeviceRequest' => ['type' => 'structure', 'required' => ['DeviceArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'DeleteDeviceResponse' => ['type' => 'structure', 'members' => []], 'DeleteDeviceUsageDataRequest' => ['type' => 'structure', 'required' => ['DeviceArn', 'DeviceUsageType'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceUsageType' => ['shape' => 'DeviceUsageType']]], 'DeleteDeviceUsageDataResponse' => ['type' => 'structure', 'members' => []], 'DeleteGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'DeleteGatewayGroupResponse' => ['type' => 'structure', 'members' => []], 'DeleteNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'DeleteNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'DeleteProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'DeleteProfileResponse' => ['type' => 'structure', 'members' => []], 'DeleteRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'DeleteRoomResponse' => ['type' => 'structure', 'members' => []], 'DeleteRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'ParameterKey'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'ParameterKey' => ['shape' => 'RoomSkillParameterKey']]], 'DeleteRoomSkillParameterResponse' => ['type' => 'structure', 'members' => []], 'DeleteSkillAuthorizationRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId'], 'RoomArn' => ['shape' => 'Arn']]], 'DeleteSkillAuthorizationResponse' => ['type' => 'structure', 'members' => []], 'DeleteSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'DeleteSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'DeleteUserRequest' => ['type' => 'structure', 'required' => ['EnrollmentId'], 'members' => ['UserArn' => ['shape' => 'Arn'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'DeleteUserResponse' => ['type' => 'structure', 'members' => []], 'DeveloperInfo' => ['type' => 'structure', 'members' => ['DeveloperName' => ['shape' => 'DeveloperName'], 'PrivacyPolicy' => ['shape' => 'PrivacyPolicy'], 'Email' => ['shape' => 'Email'], 'Url' => ['shape' => 'Url']]], 'DeveloperName' => ['type' => 'string'], 'Device' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumber'], 'DeviceType' => ['shape' => 'DeviceType'], 'DeviceName' => ['shape' => 'DeviceName'], 'SoftwareVersion' => ['shape' => 'SoftwareVersion'], 'MacAddress' => ['shape' => 'MacAddress'], 'RoomArn' => ['shape' => 'Arn'], 'DeviceStatus' => ['shape' => 'DeviceStatus'], 'DeviceStatusInfo' => ['shape' => 'DeviceStatusInfo'], 'NetworkProfileInfo' => ['shape' => 'DeviceNetworkProfileInfo']]], 'DeviceData' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumber'], 'DeviceType' => ['shape' => 'DeviceType'], 'DeviceName' => ['shape' => 'DeviceName'], 'SoftwareVersion' => ['shape' => 'SoftwareVersion'], 'MacAddress' => ['shape' => 'MacAddress'], 'DeviceStatus' => ['shape' => 'DeviceStatus'], 'NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'DeviceStatusInfo' => ['shape' => 'DeviceStatusInfo'], 'CreatedTime' => ['shape' => 'DeviceDataCreatedTime']]], 'DeviceDataCreatedTime' => ['type' => 'timestamp'], 'DeviceDataList' => ['type' => 'list', 'member' => ['shape' => 'DeviceData']], 'DeviceEvent' => ['type' => 'structure', 'members' => ['Type' => ['shape' => 'DeviceEventType'], 'Value' => ['shape' => 'DeviceEventValue'], 'Timestamp' => ['shape' => 'DeviceEventTime']]], 'DeviceEventList' => ['type' => 'list', 'member' => ['shape' => 'DeviceEvent']], 'DeviceEventTime' => ['type' => 'timestamp'], 'DeviceEventType' => ['type' => 'string', 'enum' => ['CONNECTION_STATUS', 'DEVICE_STATUS']], 'DeviceEventValue' => ['type' => 'string'], 'DeviceLocale' => ['type' => 'string', 'max' => 256, 'min' => 1], 'DeviceName' => ['type' => 'string', 'max' => 100, 'min' => 2, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'DeviceNetworkProfileInfo' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'CertificateArn' => ['shape' => 'Arn'], 'CertificateExpirationTime' => ['shape' => 'CertificateTime']]], 'DeviceNotRegisteredException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'DeviceSerialNumber' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,200}'], 'DeviceSerialNumberForAVS' => ['type' => 'string', 'pattern' => '^[a-zA-Z0-9]{1,50}$'], 'DeviceStatus' => ['type' => 'string', 'enum' => ['READY', 'PENDING', 'WAS_OFFLINE', 'DEREGISTERED', 'FAILED']], 'DeviceStatusDetail' => ['type' => 'structure', 'members' => ['Feature' => ['shape' => 'Feature'], 'Code' => ['shape' => 'DeviceStatusDetailCode']]], 'DeviceStatusDetailCode' => ['type' => 'string', 'enum' => ['DEVICE_SOFTWARE_UPDATE_NEEDED', 'DEVICE_WAS_OFFLINE', 'CREDENTIALS_ACCESS_FAILURE', 'TLS_VERSION_MISMATCH', 'ASSOCIATION_REJECTION', 'AUTHENTICATION_FAILURE', 'DHCP_FAILURE', 'INTERNET_UNAVAILABLE', 'DNS_FAILURE', 'UNKNOWN_FAILURE', 'CERTIFICATE_ISSUING_LIMIT_EXCEEDED', 'INVALID_CERTIFICATE_AUTHORITY', 'NETWORK_PROFILE_NOT_FOUND', 'INVALID_PASSWORD_STATE', 'PASSWORD_NOT_FOUND']], 'DeviceStatusDetails' => ['type' => 'list', 'member' => ['shape' => 'DeviceStatusDetail']], 'DeviceStatusInfo' => ['type' => 'structure', 'members' => ['DeviceStatusDetails' => ['shape' => 'DeviceStatusDetails'], 'ConnectionStatus' => ['shape' => 'ConnectionStatus'], 'ConnectionStatusUpdatedTime' => ['shape' => 'ConnectionStatusUpdatedTime']]], 'DeviceType' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,200}'], 'DeviceUsageType' => ['type' => 'string', 'enum' => ['VOICE']], 'DisassociateContactFromAddressBookRequest' => ['type' => 'structure', 'required' => ['ContactArn', 'AddressBookArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'AddressBookArn' => ['shape' => 'Arn']]], 'DisassociateContactFromAddressBookResponse' => ['type' => 'structure', 'members' => []], 'DisassociateDeviceFromRoomRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'DisassociateDeviceFromRoomResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillFromSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId']]], 'DisassociateSkillFromSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillFromUsersRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'DisassociateSkillFromUsersResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillGroupFromRoomRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'DisassociateSkillGroupFromRoomResponse' => ['type' => 'structure', 'members' => []], 'DistanceUnit' => ['type' => 'string', 'enum' => ['METRIC', 'IMPERIAL']], 'Email' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '([0-9a-zA-Z]([+-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z]([-\\w]*[0-9a-zA-Z]+)*\\.)+[a-zA-Z]{2,9})'], 'EnablementType' => ['type' => 'string', 'enum' => ['ENABLED', 'PENDING']], 'EnablementTypeFilter' => ['type' => 'string', 'enum' => ['ENABLED', 'PENDING']], 'EndOfMeetingReminder' => ['type' => 'structure', 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'EndOfMeetingReminderMinutesList' => ['type' => 'list', 'member' => ['shape' => 'Minutes'], 'max' => 1, 'min' => 1], 'EndOfMeetingReminderType' => ['type' => 'string', 'enum' => ['ANNOUNCEMENT_TIME_CHECK', 'ANNOUNCEMENT_VARIABLE_TIME_LEFT', 'CHIME', 'KNOCK']], 'EndUserLicenseAgreement' => ['type' => 'string'], 'Endpoint' => ['type' => 'string', 'max' => 256, 'min' => 1], 'EnrollmentId' => ['type' => 'string', 'max' => 128, 'min' => 0], 'EnrollmentStatus' => ['type' => 'string', 'enum' => ['INITIALIZED', 'PENDING', 'REGISTERED', 'DISASSOCIATING', 'DEREGISTERING']], 'ErrorMessage' => ['type' => 'string'], 'Feature' => ['type' => 'string', 'enum' => ['BLUETOOTH', 'VOLUME', 'NOTIFICATIONS', 'LISTS', 'SKILLS', 'NETWORK_PROFILE', 'SETTINGS', 'ALL']], 'Features' => ['type' => 'list', 'member' => ['shape' => 'Feature']], 'Filter' => ['type' => 'structure', 'required' => ['Key', 'Values'], 'members' => ['Key' => ['shape' => 'FilterKey'], 'Values' => ['shape' => 'FilterValueList']]], 'FilterKey' => ['type' => 'string', 'max' => 500, 'min' => 1], 'FilterList' => ['type' => 'list', 'member' => ['shape' => 'Filter'], 'max' => 25], 'FilterValue' => ['type' => 'string', 'max' => 500, 'min' => 1], 'FilterValueList' => ['type' => 'list', 'member' => ['shape' => 'FilterValue'], 'max' => 50], 'ForgetSmartHomeAppliancesRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'ForgetSmartHomeAppliancesResponse' => ['type' => 'structure', 'members' => []], 'Gateway' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'GatewayGroupArn' => ['shape' => 'Arn'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'GatewayDescription' => ['type' => 'string', 'max' => 200, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewayGroup' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'GatewayGroupDescription' => ['type' => 'string', 'max' => 200, 'min' => 0], 'GatewayGroupName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewayGroupSummaries' => ['type' => 'list', 'member' => ['shape' => 'GatewayGroupSummary']], 'GatewayGroupSummary' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'GatewayName' => ['type' => 'string', 'max' => 253, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewaySummaries' => ['type' => 'list', 'member' => ['shape' => 'GatewaySummary']], 'GatewaySummary' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'GatewayGroupArn' => ['shape' => 'Arn'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'GatewayVersion' => ['type' => 'string', 'max' => 50, 'min' => 1], 'GenericKeyword' => ['type' => 'string'], 'GenericKeywords' => ['type' => 'list', 'member' => ['shape' => 'GenericKeyword']], 'GetAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'GetAddressBookResponse' => ['type' => 'structure', 'members' => ['AddressBook' => ['shape' => 'AddressBook']]], 'GetConferencePreferenceRequest' => ['type' => 'structure', 'members' => []], 'GetConferencePreferenceResponse' => ['type' => 'structure', 'members' => ['Preference' => ['shape' => 'ConferencePreference']]], 'GetConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'GetConferenceProviderResponse' => ['type' => 'structure', 'members' => ['ConferenceProvider' => ['shape' => 'ConferenceProvider']]], 'GetContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'GetContactResponse' => ['type' => 'structure', 'members' => ['Contact' => ['shape' => 'Contact']]], 'GetDeviceRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'GetDeviceResponse' => ['type' => 'structure', 'members' => ['Device' => ['shape' => 'Device']]], 'GetGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'GetGatewayGroupResponse' => ['type' => 'structure', 'members' => ['GatewayGroup' => ['shape' => 'GatewayGroup']]], 'GetGatewayRequest' => ['type' => 'structure', 'required' => ['GatewayArn'], 'members' => ['GatewayArn' => ['shape' => 'Arn']]], 'GetGatewayResponse' => ['type' => 'structure', 'members' => ['Gateway' => ['shape' => 'Gateway']]], 'GetInvitationConfigurationRequest' => ['type' => 'structure', 'members' => []], 'GetInvitationConfigurationResponse' => ['type' => 'structure', 'members' => ['OrganizationName' => ['shape' => 'OrganizationName'], 'ContactEmail' => ['shape' => 'Email'], 'PrivateSkillIds' => ['shape' => 'ShortSkillIdList']]], 'GetNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'GetNetworkProfileResponse' => ['type' => 'structure', 'members' => ['NetworkProfile' => ['shape' => 'NetworkProfile']]], 'GetProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'GetProfileResponse' => ['type' => 'structure', 'members' => ['Profile' => ['shape' => 'Profile']]], 'GetRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'GetRoomResponse' => ['type' => 'structure', 'members' => ['Room' => ['shape' => 'Room']]], 'GetRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'ParameterKey'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'ParameterKey' => ['shape' => 'RoomSkillParameterKey']]], 'GetRoomSkillParameterResponse' => ['type' => 'structure', 'members' => ['RoomSkillParameter' => ['shape' => 'RoomSkillParameter']]], 'GetSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'GetSkillGroupResponse' => ['type' => 'structure', 'members' => ['SkillGroup' => ['shape' => 'SkillGroup']]], 'IPDialIn' => ['type' => 'structure', 'required' => ['Endpoint', 'CommsProtocol'], 'members' => ['Endpoint' => ['shape' => 'Endpoint'], 'CommsProtocol' => ['shape' => 'CommsProtocol']]], 'IconUrl' => ['type' => 'string'], 'InstantBooking' => ['type' => 'structure', 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'InvalidCertificateAuthorityException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidDeviceException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidSecretsManagerResourceException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidServiceLinkedRoleStateException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidUserStatusException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvocationPhrase' => ['type' => 'string'], 'Key' => ['type' => 'string', 'min' => 1], 'LimitExceededException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ListBusinessReportSchedulesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListBusinessReportSchedulesResponse' => ['type' => 'structure', 'members' => ['BusinessReportSchedules' => ['shape' => 'BusinessReportScheduleList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListConferenceProvidersRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListConferenceProvidersResponse' => ['type' => 'structure', 'members' => ['ConferenceProviders' => ['shape' => 'ConferenceProvidersList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListDeviceEventsRequest' => ['type' => 'structure', 'required' => ['DeviceArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'EventType' => ['shape' => 'DeviceEventType'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListDeviceEventsResponse' => ['type' => 'structure', 'members' => ['DeviceEvents' => ['shape' => 'DeviceEventList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListGatewayGroupsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListGatewayGroupsResponse' => ['type' => 'structure', 'members' => ['GatewayGroups' => ['shape' => 'GatewayGroupSummaries'], 'NextToken' => ['shape' => 'NextToken']]], 'ListGatewaysRequest' => ['type' => 'structure', 'members' => ['GatewayGroupArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListGatewaysResponse' => ['type' => 'structure', 'members' => ['Gateways' => ['shape' => 'GatewaySummaries'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'EnablementType' => ['shape' => 'EnablementTypeFilter'], 'SkillType' => ['shape' => 'SkillTypeFilter'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'SkillListMaxResults']]], 'ListSkillsResponse' => ['type' => 'structure', 'members' => ['SkillSummaries' => ['shape' => 'SkillSummaryList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsStoreCategoriesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListSkillsStoreCategoriesResponse' => ['type' => 'structure', 'members' => ['CategoryList' => ['shape' => 'CategoryList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsStoreSkillsByCategoryRequest' => ['type' => 'structure', 'required' => ['CategoryId'], 'members' => ['CategoryId' => ['shape' => 'CategoryId'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'SkillListMaxResults']]], 'ListSkillsStoreSkillsByCategoryResponse' => ['type' => 'structure', 'members' => ['SkillsStoreSkills' => ['shape' => 'SkillsStoreSkillList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSmartHomeAppliancesRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'MaxResults' => ['shape' => 'MaxResults'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSmartHomeAppliancesResponse' => ['type' => 'structure', 'members' => ['SmartHomeAppliances' => ['shape' => 'SmartHomeApplianceList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListTagsRequest' => ['type' => 'structure', 'required' => ['Arn'], 'members' => ['Arn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListTagsResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList'], 'NextToken' => ['shape' => 'NextToken']]], 'Locale' => ['type' => 'string', 'enum' => ['en-US']], 'MacAddress' => ['type' => 'string'], 'MaxResults' => ['type' => 'integer', 'max' => 50, 'min' => 1], 'MaxVolumeLimit' => ['type' => 'integer'], 'MeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'EndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'InstantBooking'], 'RequireCheckIn' => ['shape' => 'RequireCheckIn']]], 'MeetingSetting' => ['type' => 'structure', 'required' => ['RequirePin'], 'members' => ['RequirePin' => ['shape' => 'RequirePin']]], 'Minutes' => ['type' => 'integer'], 'NameInUseException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'NetworkEapMethod' => ['type' => 'string', 'enum' => ['EAP_TLS']], 'NetworkProfile' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList']]], 'NetworkProfileData' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CertificateAuthorityArn' => ['shape' => 'Arn']]], 'NetworkProfileDataList' => ['type' => 'list', 'member' => ['shape' => 'NetworkProfileData']], 'NetworkProfileDescription' => ['type' => 'string', 'max' => 200, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NetworkProfileName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NetworkSecurityType' => ['type' => 'string', 'enum' => ['OPEN', 'WEP', 'WPA_PSK', 'WPA2_PSK', 'WPA2_ENTERPRISE']], 'NetworkSsid' => ['type' => 'string', 'max' => 32, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NewInThisVersionBulletPoints' => ['type' => 'list', 'member' => ['shape' => 'BulletPoint']], 'NextToken' => ['type' => 'string', 'max' => 1100, 'min' => 1], 'NextWiFiPassword' => ['type' => 'string', 'max' => 128, 'min' => 0, 'pattern' => '(^$)|([\\x00-\\x7F]{5,})', 'sensitive' => \true], 'NotFoundException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'OneClickIdDelay' => ['type' => 'string', 'max' => 2, 'min' => 1], 'OneClickPinDelay' => ['type' => 'string', 'max' => 2, 'min' => 1], 'OrganizationName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'OutboundPhoneNumber' => ['type' => 'string', 'pattern' => '\\d{10}'], 'PSTNDialIn' => ['type' => 'structure', 'required' => ['CountryCode', 'PhoneNumber', 'OneClickIdDelay', 'OneClickPinDelay'], 'members' => ['CountryCode' => ['shape' => 'CountryCode'], 'PhoneNumber' => ['shape' => 'OutboundPhoneNumber'], 'OneClickIdDelay' => ['shape' => 'OneClickIdDelay'], 'OneClickPinDelay' => ['shape' => 'OneClickPinDelay']]], 'PhoneNumber' => ['type' => 'structure', 'required' => ['Number', 'Type'], 'members' => ['Number' => ['shape' => 'RawPhoneNumber'], 'Type' => ['shape' => 'PhoneNumberType']]], 'PhoneNumberList' => ['type' => 'list', 'member' => ['shape' => 'PhoneNumber'], 'max' => 3, 'min' => 0], 'PhoneNumberType' => ['type' => 'string', 'enum' => ['MOBILE', 'WORK', 'HOME'], 'sensitive' => \true], 'PrivacyPolicy' => ['type' => 'string'], 'ProductDescription' => ['type' => 'string'], 'ProductId' => ['type' => 'string', 'pattern' => '^[a-zA-Z0-9_]{1,256}$'], 'Profile' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Address' => ['shape' => 'Address'], 'Timezone' => ['shape' => 'Timezone'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'AddressBookArn' => ['shape' => 'Arn'], 'MeetingRoomConfiguration' => ['shape' => 'MeetingRoomConfiguration']]], 'ProfileData' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Address' => ['shape' => 'Address'], 'Timezone' => ['shape' => 'Timezone'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale']]], 'ProfileDataList' => ['type' => 'list', 'member' => ['shape' => 'ProfileData']], 'ProfileName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'ProviderCalendarId' => ['type' => 'string', 'max' => 100, 'min' => 0], 'PutConferencePreferenceRequest' => ['type' => 'structure', 'required' => ['ConferencePreference'], 'members' => ['ConferencePreference' => ['shape' => 'ConferencePreference']]], 'PutConferencePreferenceResponse' => ['type' => 'structure', 'members' => []], 'PutInvitationConfigurationRequest' => ['type' => 'structure', 'required' => ['OrganizationName'], 'members' => ['OrganizationName' => ['shape' => 'OrganizationName'], 'ContactEmail' => ['shape' => 'Email'], 'PrivateSkillIds' => ['shape' => 'ShortSkillIdList']]], 'PutInvitationConfigurationResponse' => ['type' => 'structure', 'members' => []], 'PutRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'RoomSkillParameter'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'RoomSkillParameter' => ['shape' => 'RoomSkillParameter']]], 'PutRoomSkillParameterResponse' => ['type' => 'structure', 'members' => []], 'PutSkillAuthorizationRequest' => ['type' => 'structure', 'required' => ['AuthorizationResult', 'SkillId'], 'members' => ['AuthorizationResult' => ['shape' => 'AuthorizationResult'], 'SkillId' => ['shape' => 'SkillId'], 'RoomArn' => ['shape' => 'Arn']]], 'PutSkillAuthorizationResponse' => ['type' => 'structure', 'members' => []], 'RawPhoneNumber' => ['type' => 'string', 'max' => 50, 'min' => 0, 'pattern' => '^[\\+0-9\\#\\,\\(][\\+0-9\\-\\.\\/\\(\\)\\,\\#\\s]+$', 'sensitive' => \true], 'RegisterAVSDeviceRequest' => ['type' => 'structure', 'required' => ['ClientId', 'UserCode', 'ProductId', 'DeviceSerialNumber', 'AmazonId'], 'members' => ['ClientId' => ['shape' => 'ClientId'], 'UserCode' => ['shape' => 'UserCode'], 'ProductId' => ['shape' => 'ProductId'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumberForAVS'], 'AmazonId' => ['shape' => 'AmazonId']]], 'RegisterAVSDeviceResponse' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'RejectSkillRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'RejectSkillResponse' => ['type' => 'structure', 'members' => []], 'ReleaseDate' => ['type' => 'string'], 'RequireCheckIn' => ['type' => 'structure', 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'RequirePin' => ['type' => 'string', 'enum' => ['YES', 'NO', 'OPTIONAL']], 'ResolveRoomRequest' => ['type' => 'structure', 'required' => ['UserId', 'SkillId'], 'members' => ['UserId' => ['shape' => 'UserId'], 'SkillId' => ['shape' => 'SkillId']]], 'ResolveRoomResponse' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'RoomSkillParameters' => ['shape' => 'RoomSkillParameters']]], 'ResourceAssociatedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ResourceInUseException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken']], 'exception' => \true], 'ReviewKey' => ['type' => 'string'], 'ReviewValue' => ['type' => 'string'], 'Reviews' => ['type' => 'map', 'key' => ['shape' => 'ReviewKey'], 'value' => ['shape' => 'ReviewValue']], 'RevokeInvitationRequest' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'RevokeInvitationResponse' => ['type' => 'structure', 'members' => []], 'Room' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn']]], 'RoomData' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName']]], 'RoomDataList' => ['type' => 'list', 'member' => ['shape' => 'RoomData']], 'RoomDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'RoomName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'RoomSkillParameter' => ['type' => 'structure', 'required' => ['ParameterKey', 'ParameterValue'], 'members' => ['ParameterKey' => ['shape' => 'RoomSkillParameterKey'], 'ParameterValue' => ['shape' => 'RoomSkillParameterValue']]], 'RoomSkillParameterKey' => ['type' => 'string', 'max' => 256, 'min' => 1], 'RoomSkillParameterValue' => ['type' => 'string', 'max' => 512, 'min' => 1], 'RoomSkillParameters' => ['type' => 'list', 'member' => ['shape' => 'RoomSkillParameter']], 'S3KeyPrefix' => ['type' => 'string', 'max' => 100, 'min' => 0, 'pattern' => '[A-Za-z0-9!_\\-\\.\\*\'()/]*'], 'SampleUtterances' => ['type' => 'list', 'member' => ['shape' => 'Utterance']], 'SearchAddressBooksRequest' => ['type' => 'structure', 'members' => ['Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'SearchAddressBooksResponse' => ['type' => 'structure', 'members' => ['AddressBooks' => ['shape' => 'AddressBookDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchContactsRequest' => ['type' => 'structure', 'members' => ['Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'SearchContactsResponse' => ['type' => 'structure', 'members' => ['Contacts' => ['shape' => 'ContactDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchDevicesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchDevicesResponse' => ['type' => 'structure', 'members' => ['Devices' => ['shape' => 'DeviceDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchNetworkProfilesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchNetworkProfilesResponse' => ['type' => 'structure', 'members' => ['NetworkProfiles' => ['shape' => 'NetworkProfileDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchProfilesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchProfilesResponse' => ['type' => 'structure', 'members' => ['Profiles' => ['shape' => 'ProfileDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchRoomsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchRoomsResponse' => ['type' => 'structure', 'members' => ['Rooms' => ['shape' => 'RoomDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchSkillGroupsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchSkillGroupsResponse' => ['type' => 'structure', 'members' => ['SkillGroups' => ['shape' => 'SkillGroupDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchUsersRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchUsersResponse' => ['type' => 'structure', 'members' => ['Users' => ['shape' => 'UserDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SendAnnouncementRequest' => ['type' => 'structure', 'required' => ['RoomFilters', 'Content', 'ClientRequestToken'], 'members' => ['RoomFilters' => ['shape' => 'FilterList'], 'Content' => ['shape' => 'Content'], 'TimeToLiveInSeconds' => ['shape' => 'TimeToLiveInSeconds'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'SendAnnouncementResponse' => ['type' => 'structure', 'members' => ['AnnouncementArn' => ['shape' => 'Arn']]], 'SendInvitationRequest' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn']]], 'SendInvitationResponse' => ['type' => 'structure', 'members' => []], 'ShortDescription' => ['type' => 'string'], 'ShortSkillIdList' => ['type' => 'list', 'member' => ['shape' => 'SkillId'], 'max' => 3, 'min' => 0], 'SipAddress' => ['type' => 'structure', 'required' => ['Uri', 'Type'], 'members' => ['Uri' => ['shape' => 'SipUri'], 'Type' => ['shape' => 'SipType']]], 'SipAddressList' => ['type' => 'list', 'member' => ['shape' => 'SipAddress'], 'max' => 1, 'min' => 0], 'SipType' => ['type' => 'string', 'enum' => ['WORK'], 'sensitive' => \true], 'SipUri' => ['type' => 'string', 'max' => 256, 'min' => 1, 'pattern' => '^sip[s]?:([^@:]+)\\@([^@]+)$', 'sensitive' => \true], 'SkillDetails' => ['type' => 'structure', 'members' => ['ProductDescription' => ['shape' => 'ProductDescription'], 'InvocationPhrase' => ['shape' => 'InvocationPhrase'], 'ReleaseDate' => ['shape' => 'ReleaseDate'], 'EndUserLicenseAgreement' => ['shape' => 'EndUserLicenseAgreement'], 'GenericKeywords' => ['shape' => 'GenericKeywords'], 'BulletPoints' => ['shape' => 'BulletPoints'], 'NewInThisVersionBulletPoints' => ['shape' => 'NewInThisVersionBulletPoints'], 'SkillTypes' => ['shape' => 'SkillTypes'], 'Reviews' => ['shape' => 'Reviews'], 'DeveloperInfo' => ['shape' => 'DeveloperInfo']]], 'SkillGroup' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'SkillGroupData' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'SkillGroupDataList' => ['type' => 'list', 'member' => ['shape' => 'SkillGroupData']], 'SkillGroupDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillGroupName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillId' => ['type' => 'string', 'pattern' => '(^amzn1\\.ask\\.skill\\.[0-9a-f\\-]{1,200})|(^amzn1\\.echo-sdk-ams\\.app\\.[0-9a-f\\-]{1,200})'], 'SkillListMaxResults' => ['type' => 'integer', 'max' => 10, 'min' => 1], 'SkillName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillNotLinkedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'SkillStoreType' => ['type' => 'string'], 'SkillSummary' => ['type' => 'structure', 'members' => ['SkillId' => ['shape' => 'SkillId'], 'SkillName' => ['shape' => 'SkillName'], 'SupportsLinking' => ['shape' => 'boolean'], 'EnablementType' => ['shape' => 'EnablementType'], 'SkillType' => ['shape' => 'SkillType']]], 'SkillSummaryList' => ['type' => 'list', 'member' => ['shape' => 'SkillSummary']], 'SkillType' => ['type' => 'string', 'enum' => ['PUBLIC', 'PRIVATE'], 'max' => 100, 'min' => 1, 'pattern' => '[a-zA-Z0-9][a-zA-Z0-9_-]*'], 'SkillTypeFilter' => ['type' => 'string', 'enum' => ['PUBLIC', 'PRIVATE', 'ALL']], 'SkillTypes' => ['type' => 'list', 'member' => ['shape' => 'SkillStoreType']], 'SkillsStoreSkill' => ['type' => 'structure', 'members' => ['SkillId' => ['shape' => 'SkillId'], 'SkillName' => ['shape' => 'SkillName'], 'ShortDescription' => ['shape' => 'ShortDescription'], 'IconUrl' => ['shape' => 'IconUrl'], 'SampleUtterances' => ['shape' => 'SampleUtterances'], 'SkillDetails' => ['shape' => 'SkillDetails'], 'SupportsLinking' => ['shape' => 'boolean']]], 'SkillsStoreSkillList' => ['type' => 'list', 'member' => ['shape' => 'SkillsStoreSkill']], 'SmartHomeAppliance' => ['type' => 'structure', 'members' => ['FriendlyName' => ['shape' => 'ApplianceFriendlyName'], 'Description' => ['shape' => 'ApplianceDescription'], 'ManufacturerName' => ['shape' => 'ApplianceManufacturerName']]], 'SmartHomeApplianceList' => ['type' => 'list', 'member' => ['shape' => 'SmartHomeAppliance']], 'SoftwareVersion' => ['type' => 'string'], 'Sort' => ['type' => 'structure', 'required' => ['Key', 'Value'], 'members' => ['Key' => ['shape' => 'SortKey'], 'Value' => ['shape' => 'SortValue']]], 'SortKey' => ['type' => 'string', 'max' => 500, 'min' => 1], 'SortList' => ['type' => 'list', 'member' => ['shape' => 'Sort'], 'max' => 25], 'SortValue' => ['type' => 'string', 'enum' => ['ASC', 'DESC']], 'Ssml' => ['type' => 'structure', 'required' => ['Locale', 'Value'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Value' => ['shape' => 'SsmlValue']]], 'SsmlList' => ['type' => 'list', 'member' => ['shape' => 'Ssml'], 'max' => 1], 'SsmlValue' => ['type' => 'string', 'max' => 4096, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'StartDeviceSyncRequest' => ['type' => 'structure', 'required' => ['Features'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'DeviceArn' => ['shape' => 'Arn'], 'Features' => ['shape' => 'Features']]], 'StartDeviceSyncResponse' => ['type' => 'structure', 'members' => []], 'StartSmartHomeApplianceDiscoveryRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'StartSmartHomeApplianceDiscoveryResponse' => ['type' => 'structure', 'members' => []], 'Tag' => ['type' => 'structure', 'required' => ['Key', 'Value'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TagKeyList' => ['type' => 'list', 'member' => ['shape' => 'TagKey']], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag']], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['Arn', 'Tags'], 'members' => ['Arn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TemperatureUnit' => ['type' => 'string', 'enum' => ['FAHRENHEIT', 'CELSIUS']], 'Text' => ['type' => 'structure', 'required' => ['Locale', 'Value'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Value' => ['shape' => 'TextValue']]], 'TextList' => ['type' => 'list', 'member' => ['shape' => 'Text'], 'max' => 1], 'TextValue' => ['type' => 'string', 'max' => 4096, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'TimeToLiveInSeconds' => ['type' => 'integer', 'max' => 3600, 'min' => 1], 'Timezone' => ['type' => 'string', 'max' => 100, 'min' => 1], 'TotalCount' => ['type' => 'integer'], 'TrustAnchor' => ['type' => 'string', 'pattern' => '-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'TrustAnchorList' => ['type' => 'list', 'member' => ['shape' => 'TrustAnchor'], 'max' => 5, 'min' => 1], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['Arn', 'TagKeys'], 'members' => ['Arn' => ['shape' => 'Arn'], 'TagKeys' => ['shape' => 'TagKeyList']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'UpdateAddressBookResponse' => ['type' => 'structure', 'members' => []], 'UpdateBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['ScheduleArn'], 'members' => ['ScheduleArn' => ['shape' => 'Arn'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence']]], 'UpdateBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => []], 'UpdateConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn', 'ConferenceProviderType', 'MeetingSetting'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn'], 'ConferenceProviderType' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting']]], 'UpdateConferenceProviderResponse' => ['type' => 'structure', 'members' => []], 'UpdateContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'UpdateContactResponse' => ['type' => 'structure', 'members' => []], 'UpdateDeviceRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceName' => ['shape' => 'DeviceName']]], 'UpdateDeviceResponse' => ['type' => 'structure', 'members' => []], 'UpdateEndOfMeetingReminder' => ['type' => 'structure', 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'UpdateGatewayGroupResponse' => ['type' => 'structure', 'members' => []], 'UpdateGatewayRequest' => ['type' => 'structure', 'required' => ['GatewayArn'], 'members' => ['GatewayArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'UpdateGatewayResponse' => ['type' => 'structure', 'members' => []], 'UpdateInstantBooking' => ['type' => 'structure', 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateMeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'UpdateEndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'UpdateInstantBooking'], 'RequireCheckIn' => ['shape' => 'UpdateRequireCheckIn']]], 'UpdateNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList']]], 'UpdateNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'UpdateProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Timezone' => ['shape' => 'Timezone'], 'Address' => ['shape' => 'Address'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'MeetingRoomConfiguration' => ['shape' => 'UpdateMeetingRoomConfiguration']]], 'UpdateProfileResponse' => ['type' => 'structure', 'members' => []], 'UpdateRequireCheckIn' => ['type' => 'structure', 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn']]], 'UpdateRoomResponse' => ['type' => 'structure', 'members' => []], 'UpdateSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'UpdateSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'Url' => ['type' => 'string'], 'UserCode' => ['type' => 'string', 'max' => 128, 'min' => 1], 'UserData' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn'], 'FirstName' => ['shape' => 'user_FirstName'], 'LastName' => ['shape' => 'user_LastName'], 'Email' => ['shape' => 'Email'], 'EnrollmentStatus' => ['shape' => 'EnrollmentStatus'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'UserDataList' => ['type' => 'list', 'member' => ['shape' => 'UserData']], 'UserId' => ['type' => 'string', 'pattern' => 'amzn1\\.[A-Za-z0-9+-\\/=.]{1,300}'], 'Utterance' => ['type' => 'string'], 'Value' => ['type' => 'string', 'min' => 1], 'WakeWord' => ['type' => 'string', 'enum' => ['ALEXA', 'AMAZON', 'ECHO', 'COMPUTER']], 'boolean' => ['type' => 'boolean'], 'user_FirstName' => ['type' => 'string', 'max' => 30, 'min' => 0, 'pattern' => '([A-Za-z\\-\' 0-9._]|\\p{IsLetter})*'], 'user_LastName' => ['type' => 'string', 'max' => 30, 'min' => 0, 'pattern' => '([A-Za-z\\-\' 0-9._]|\\p{IsLetter})*'], 'user_UserId' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '[a-zA-Z0-9@_+.-]*']]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/alexaforbusiness/2017-11-09/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-11-09', 'endpointPrefix' => 'a4b', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceFullName' => 'Alexa For Business', 'serviceId' => 'Alexa For Business', 'signatureVersion' => 'v4', 'targetPrefix' => 'AlexaForBusiness', 'uid' => 'alexaforbusiness-2017-11-09'], 'operations' => ['ApproveSkill' => ['name' => 'ApproveSkill', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ApproveSkillRequest'], 'output' => ['shape' => 'ApproveSkillResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'AssociateContactWithAddressBook' => ['name' => 'AssociateContactWithAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateContactWithAddressBookRequest'], 'output' => ['shape' => 'AssociateContactWithAddressBookResponse'], 'errors' => [['shape' => 'LimitExceededException']]], 'AssociateDeviceWithNetworkProfile' => ['name' => 'AssociateDeviceWithNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateDeviceWithNetworkProfileRequest'], 'output' => ['shape' => 'AssociateDeviceWithNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'AssociateDeviceWithRoom' => ['name' => 'AssociateDeviceWithRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateDeviceWithRoomRequest'], 'output' => ['shape' => 'AssociateDeviceWithRoomResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'AssociateSkillGroupWithRoom' => ['name' => 'AssociateSkillGroupWithRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillGroupWithRoomRequest'], 'output' => ['shape' => 'AssociateSkillGroupWithRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'AssociateSkillWithSkillGroup' => ['name' => 'AssociateSkillWithSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillWithSkillGroupRequest'], 'output' => ['shape' => 'AssociateSkillWithSkillGroupResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException'], ['shape' => 'SkillNotLinkedException']]], 'AssociateSkillWithUsers' => ['name' => 'AssociateSkillWithUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'AssociateSkillWithUsersRequest'], 'output' => ['shape' => 'AssociateSkillWithUsersResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'CreateAddressBook' => ['name' => 'CreateAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateAddressBookRequest'], 'output' => ['shape' => 'CreateAddressBookResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateBusinessReportSchedule' => ['name' => 'CreateBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateBusinessReportScheduleRequest'], 'output' => ['shape' => 'CreateBusinessReportScheduleResponse'], 'errors' => [['shape' => 'AlreadyExistsException']]], 'CreateConferenceProvider' => ['name' => 'CreateConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateConferenceProviderRequest'], 'output' => ['shape' => 'CreateConferenceProviderResponse'], 'errors' => [['shape' => 'AlreadyExistsException']]], 'CreateContact' => ['name' => 'CreateContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateContactRequest'], 'output' => ['shape' => 'CreateContactResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateGatewayGroup' => ['name' => 'CreateGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateGatewayGroupRequest'], 'output' => ['shape' => 'CreateGatewayGroupResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateNetworkProfile' => ['name' => 'CreateNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateNetworkProfileRequest'], 'output' => ['shape' => 'CreateNetworkProfileResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException'], ['shape' => 'InvalidServiceLinkedRoleStateException']]], 'CreateProfile' => ['name' => 'CreateProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateProfileRequest'], 'output' => ['shape' => 'CreateProfileResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'AlreadyExistsException'], ['shape' => 'ConcurrentModificationException']]], 'CreateRoom' => ['name' => 'CreateRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateRoomRequest'], 'output' => ['shape' => 'CreateRoomResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException']]], 'CreateSkillGroup' => ['name' => 'CreateSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateSkillGroupRequest'], 'output' => ['shape' => 'CreateSkillGroupResponse'], 'errors' => [['shape' => 'AlreadyExistsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException']]], 'CreateUser' => ['name' => 'CreateUser', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'CreateUserRequest'], 'output' => ['shape' => 'CreateUserResponse'], 'errors' => [['shape' => 'ResourceInUseException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteAddressBook' => ['name' => 'DeleteAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteAddressBookRequest'], 'output' => ['shape' => 'DeleteAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteBusinessReportSchedule' => ['name' => 'DeleteBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteBusinessReportScheduleRequest'], 'output' => ['shape' => 'DeleteBusinessReportScheduleResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteConferenceProvider' => ['name' => 'DeleteConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteConferenceProviderRequest'], 'output' => ['shape' => 'DeleteConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'DeleteContact' => ['name' => 'DeleteContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteContactRequest'], 'output' => ['shape' => 'DeleteContactResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteDevice' => ['name' => 'DeleteDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteDeviceRequest'], 'output' => ['shape' => 'DeleteDeviceResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException']]], 'DeleteDeviceUsageData' => ['name' => 'DeleteDeviceUsageData', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteDeviceUsageDataRequest'], 'output' => ['shape' => 'DeleteDeviceUsageDataResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'DeviceNotRegisteredException'], ['shape' => 'LimitExceededException']]], 'DeleteGatewayGroup' => ['name' => 'DeleteGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteGatewayGroupRequest'], 'output' => ['shape' => 'DeleteGatewayGroupResponse'], 'errors' => [['shape' => 'ResourceAssociatedException']]], 'DeleteNetworkProfile' => ['name' => 'DeleteNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteNetworkProfileRequest'], 'output' => ['shape' => 'DeleteNetworkProfileResponse'], 'errors' => [['shape' => 'ResourceInUseException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DeleteProfile' => ['name' => 'DeleteProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteProfileRequest'], 'output' => ['shape' => 'DeleteProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteRoom' => ['name' => 'DeleteRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteRoomRequest'], 'output' => ['shape' => 'DeleteRoomResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteRoomSkillParameter' => ['name' => 'DeleteRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteRoomSkillParameterRequest'], 'output' => ['shape' => 'DeleteRoomSkillParameterResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'DeleteSkillAuthorization' => ['name' => 'DeleteSkillAuthorization', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteSkillAuthorizationRequest'], 'output' => ['shape' => 'DeleteSkillAuthorizationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteSkillGroup' => ['name' => 'DeleteSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteSkillGroupRequest'], 'output' => ['shape' => 'DeleteSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DeleteUser' => ['name' => 'DeleteUser', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DeleteUserRequest'], 'output' => ['shape' => 'DeleteUserResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'DisassociateContactFromAddressBook' => ['name' => 'DisassociateContactFromAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateContactFromAddressBookRequest'], 'output' => ['shape' => 'DisassociateContactFromAddressBookResponse']], 'DisassociateDeviceFromRoom' => ['name' => 'DisassociateDeviceFromRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateDeviceFromRoomRequest'], 'output' => ['shape' => 'DisassociateDeviceFromRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'DisassociateSkillFromSkillGroup' => ['name' => 'DisassociateSkillFromSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillFromSkillGroupRequest'], 'output' => ['shape' => 'DisassociateSkillFromSkillGroupResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DisassociateSkillFromUsers' => ['name' => 'DisassociateSkillFromUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillFromUsersRequest'], 'output' => ['shape' => 'DisassociateSkillFromUsersResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'DisassociateSkillGroupFromRoom' => ['name' => 'DisassociateSkillGroupFromRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'DisassociateSkillGroupFromRoomRequest'], 'output' => ['shape' => 'DisassociateSkillGroupFromRoomResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'ForgetSmartHomeAppliances' => ['name' => 'ForgetSmartHomeAppliances', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ForgetSmartHomeAppliancesRequest'], 'output' => ['shape' => 'ForgetSmartHomeAppliancesResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetAddressBook' => ['name' => 'GetAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetAddressBookRequest'], 'output' => ['shape' => 'GetAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetConferencePreference' => ['name' => 'GetConferencePreference', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetConferencePreferenceRequest'], 'output' => ['shape' => 'GetConferencePreferenceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetConferenceProvider' => ['name' => 'GetConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetConferenceProviderRequest'], 'output' => ['shape' => 'GetConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetContact' => ['name' => 'GetContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetContactRequest'], 'output' => ['shape' => 'GetContactResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetDevice' => ['name' => 'GetDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetDeviceRequest'], 'output' => ['shape' => 'GetDeviceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetGateway' => ['name' => 'GetGateway', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetGatewayRequest'], 'output' => ['shape' => 'GetGatewayResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetGatewayGroup' => ['name' => 'GetGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetGatewayGroupRequest'], 'output' => ['shape' => 'GetGatewayGroupResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetInvitationConfiguration' => ['name' => 'GetInvitationConfiguration', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetInvitationConfigurationRequest'], 'output' => ['shape' => 'GetInvitationConfigurationResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetNetworkProfile' => ['name' => 'GetNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetNetworkProfileRequest'], 'output' => ['shape' => 'GetNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'InvalidSecretsManagerResourceException']]], 'GetProfile' => ['name' => 'GetProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetProfileRequest'], 'output' => ['shape' => 'GetProfileResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetRoom' => ['name' => 'GetRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetRoomRequest'], 'output' => ['shape' => 'GetRoomResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetRoomSkillParameter' => ['name' => 'GetRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetRoomSkillParameterRequest'], 'output' => ['shape' => 'GetRoomSkillParameterResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'GetSkillGroup' => ['name' => 'GetSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'GetSkillGroupRequest'], 'output' => ['shape' => 'GetSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListBusinessReportSchedules' => ['name' => 'ListBusinessReportSchedules', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListBusinessReportSchedulesRequest'], 'output' => ['shape' => 'ListBusinessReportSchedulesResponse']], 'ListConferenceProviders' => ['name' => 'ListConferenceProviders', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListConferenceProvidersRequest'], 'output' => ['shape' => 'ListConferenceProvidersResponse']], 'ListDeviceEvents' => ['name' => 'ListDeviceEvents', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListDeviceEventsRequest'], 'output' => ['shape' => 'ListDeviceEventsResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListGatewayGroups' => ['name' => 'ListGatewayGroups', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListGatewayGroupsRequest'], 'output' => ['shape' => 'ListGatewayGroupsResponse']], 'ListGateways' => ['name' => 'ListGateways', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListGatewaysRequest'], 'output' => ['shape' => 'ListGatewaysResponse']], 'ListSkills' => ['name' => 'ListSkills', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsRequest'], 'output' => ['shape' => 'ListSkillsResponse']], 'ListSkillsStoreCategories' => ['name' => 'ListSkillsStoreCategories', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsStoreCategoriesRequest'], 'output' => ['shape' => 'ListSkillsStoreCategoriesResponse']], 'ListSkillsStoreSkillsByCategory' => ['name' => 'ListSkillsStoreSkillsByCategory', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSkillsStoreSkillsByCategoryRequest'], 'output' => ['shape' => 'ListSkillsStoreSkillsByCategoryResponse']], 'ListSmartHomeAppliances' => ['name' => 'ListSmartHomeAppliances', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListSmartHomeAppliancesRequest'], 'output' => ['shape' => 'ListSmartHomeAppliancesResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'ListTags' => ['name' => 'ListTags', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ListTagsRequest'], 'output' => ['shape' => 'ListTagsResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'PutConferencePreference' => ['name' => 'PutConferencePreference', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutConferencePreferenceRequest'], 'output' => ['shape' => 'PutConferencePreferenceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'PutInvitationConfiguration' => ['name' => 'PutInvitationConfiguration', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutInvitationConfigurationRequest'], 'output' => ['shape' => 'PutInvitationConfigurationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'PutRoomSkillParameter' => ['name' => 'PutRoomSkillParameter', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutRoomSkillParameterRequest'], 'output' => ['shape' => 'PutRoomSkillParameterResponse'], 'errors' => [['shape' => 'ConcurrentModificationException']]], 'PutSkillAuthorization' => ['name' => 'PutSkillAuthorization', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'PutSkillAuthorizationRequest'], 'output' => ['shape' => 'PutSkillAuthorizationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'ConcurrentModificationException']]], 'RegisterAVSDevice' => ['name' => 'RegisterAVSDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RegisterAVSDeviceRequest'], 'output' => ['shape' => 'RegisterAVSDeviceResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException'], ['shape' => 'InvalidDeviceException']]], 'RejectSkill' => ['name' => 'RejectSkill', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RejectSkillRequest'], 'output' => ['shape' => 'RejectSkillResponse'], 'errors' => [['shape' => 'ConcurrentModificationException'], ['shape' => 'NotFoundException']]], 'ResolveRoom' => ['name' => 'ResolveRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'ResolveRoomRequest'], 'output' => ['shape' => 'ResolveRoomResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'RevokeInvitation' => ['name' => 'RevokeInvitation', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'RevokeInvitationRequest'], 'output' => ['shape' => 'RevokeInvitationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'SearchAddressBooks' => ['name' => 'SearchAddressBooks', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchAddressBooksRequest'], 'output' => ['shape' => 'SearchAddressBooksResponse']], 'SearchContacts' => ['name' => 'SearchContacts', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchContactsRequest'], 'output' => ['shape' => 'SearchContactsResponse']], 'SearchDevices' => ['name' => 'SearchDevices', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchDevicesRequest'], 'output' => ['shape' => 'SearchDevicesResponse']], 'SearchNetworkProfiles' => ['name' => 'SearchNetworkProfiles', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchNetworkProfilesRequest'], 'output' => ['shape' => 'SearchNetworkProfilesResponse']], 'SearchProfiles' => ['name' => 'SearchProfiles', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchProfilesRequest'], 'output' => ['shape' => 'SearchProfilesResponse']], 'SearchRooms' => ['name' => 'SearchRooms', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchRoomsRequest'], 'output' => ['shape' => 'SearchRoomsResponse']], 'SearchSkillGroups' => ['name' => 'SearchSkillGroups', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchSkillGroupsRequest'], 'output' => ['shape' => 'SearchSkillGroupsResponse']], 'SearchUsers' => ['name' => 'SearchUsers', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SearchUsersRequest'], 'output' => ['shape' => 'SearchUsersResponse']], 'SendAnnouncement' => ['name' => 'SendAnnouncement', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SendAnnouncementRequest'], 'output' => ['shape' => 'SendAnnouncementResponse'], 'errors' => [['shape' => 'LimitExceededException'], ['shape' => 'AlreadyExistsException']]], 'SendInvitation' => ['name' => 'SendInvitation', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'SendInvitationRequest'], 'output' => ['shape' => 'SendInvitationResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'InvalidUserStatusException'], ['shape' => 'ConcurrentModificationException']]], 'StartDeviceSync' => ['name' => 'StartDeviceSync', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'StartDeviceSyncRequest'], 'output' => ['shape' => 'StartDeviceSyncResponse'], 'errors' => [['shape' => 'DeviceNotRegisteredException']]], 'StartSmartHomeApplianceDiscovery' => ['name' => 'StartSmartHomeApplianceDiscovery', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'StartSmartHomeApplianceDiscoveryRequest'], 'output' => ['shape' => 'StartSmartHomeApplianceDiscoveryResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UpdateAddressBook' => ['name' => 'UpdateAddressBook', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateAddressBookRequest'], 'output' => ['shape' => 'UpdateAddressBookResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateBusinessReportSchedule' => ['name' => 'UpdateBusinessReportSchedule', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateBusinessReportScheduleRequest'], 'output' => ['shape' => 'UpdateBusinessReportScheduleResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateConferenceProvider' => ['name' => 'UpdateConferenceProvider', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateConferenceProviderRequest'], 'output' => ['shape' => 'UpdateConferenceProviderResponse'], 'errors' => [['shape' => 'NotFoundException']]], 'UpdateContact' => ['name' => 'UpdateContact', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateContactRequest'], 'output' => ['shape' => 'UpdateContactResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateDevice' => ['name' => 'UpdateDevice', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateDeviceRequest'], 'output' => ['shape' => 'UpdateDeviceResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'DeviceNotRegisteredException']]], 'UpdateGateway' => ['name' => 'UpdateGateway', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateGatewayRequest'], 'output' => ['shape' => 'UpdateGatewayResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateGatewayGroup' => ['name' => 'UpdateGatewayGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateGatewayGroupRequest'], 'output' => ['shape' => 'UpdateGatewayGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateNetworkProfile' => ['name' => 'UpdateNetworkProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateNetworkProfileRequest'], 'output' => ['shape' => 'UpdateNetworkProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException'], ['shape' => 'InvalidCertificateAuthorityException'], ['shape' => 'InvalidSecretsManagerResourceException']]], 'UpdateProfile' => ['name' => 'UpdateProfile', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateProfileRequest'], 'output' => ['shape' => 'UpdateProfileResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]], 'UpdateRoom' => ['name' => 'UpdateRoom', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateRoomRequest'], 'output' => ['shape' => 'UpdateRoomResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException']]], 'UpdateSkillGroup' => ['name' => 'UpdateSkillGroup', 'http' => ['method' => 'POST', 'requestUri' => '/'], 'input' => ['shape' => 'UpdateSkillGroupRequest'], 'output' => ['shape' => 'UpdateSkillGroupResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'NameInUseException'], ['shape' => 'ConcurrentModificationException']]]], 'shapes' => ['Address' => ['type' => 'string', 'max' => 500, 'min' => 1], 'AddressBook' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'AddressBookData' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'AddressBookDataList' => ['type' => 'list', 'member' => ['shape' => 'AddressBookData']], 'AddressBookDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'AddressBookName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'AlreadyExistsException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'AmazonId' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,18}'], 'ApplianceDescription' => ['type' => 'string'], 'ApplianceFriendlyName' => ['type' => 'string'], 'ApplianceManufacturerName' => ['type' => 'string'], 'ApproveSkillRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'ApproveSkillResponse' => ['type' => 'structure', 'members' => []], 'Arn' => ['type' => 'string', 'pattern' => 'arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}'], 'AssociateContactWithAddressBookRequest' => ['type' => 'structure', 'required' => ['ContactArn', 'AddressBookArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'AddressBookArn' => ['shape' => 'Arn']]], 'AssociateContactWithAddressBookResponse' => ['type' => 'structure', 'members' => []], 'AssociateDeviceWithNetworkProfileRequest' => ['type' => 'structure', 'required' => ['DeviceArn', 'NetworkProfileArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'NetworkProfileArn' => ['shape' => 'Arn']]], 'AssociateDeviceWithNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'AssociateDeviceWithRoomRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'AssociateDeviceWithRoomResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillGroupWithRoomRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'AssociateSkillGroupWithRoomResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillWithSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId']]], 'AssociateSkillWithSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'AssociateSkillWithUsersRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'AssociateSkillWithUsersResponse' => ['type' => 'structure', 'members' => []], 'Audio' => ['type' => 'structure', 'required' => ['Locale', 'Location'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Location' => ['shape' => 'AudioLocation']]], 'AudioList' => ['type' => 'list', 'member' => ['shape' => 'Audio'], 'max' => 1], 'AudioLocation' => ['type' => 'string', 'max' => 1200, 'min' => 0, 'pattern' => 'https://([A-Za-z0-9_.-]+)?(s3-[A-Za-z0-9-]+|s3\\.([A-Za-z0-9-])+|s3|s3.dualstack\\.([A-Za-z0-9-])+)+.amazonaws.com/.*'], 'AuthorizationResult' => ['type' => 'map', 'key' => ['shape' => 'Key'], 'value' => ['shape' => 'Value'], 'sensitive' => \true], 'Boolean' => ['type' => 'boolean'], 'BulletPoint' => ['type' => 'string'], 'BulletPoints' => ['type' => 'list', 'member' => ['shape' => 'BulletPoint']], 'BusinessReport' => ['type' => 'structure', 'members' => ['Status' => ['shape' => 'BusinessReportStatus'], 'FailureCode' => ['shape' => 'BusinessReportFailureCode'], 'S3Location' => ['shape' => 'BusinessReportS3Location'], 'DeliveryTime' => ['shape' => 'BusinessReportDeliveryTime'], 'DownloadUrl' => ['shape' => 'BusinessReportDownloadUrl']]], 'BusinessReportContentRange' => ['type' => 'structure', 'required' => ['Interval'], 'members' => ['Interval' => ['shape' => 'BusinessReportInterval']]], 'BusinessReportDeliveryTime' => ['type' => 'timestamp'], 'BusinessReportDownloadUrl' => ['type' => 'string'], 'BusinessReportFailureCode' => ['type' => 'string', 'enum' => ['ACCESS_DENIED', 'NO_SUCH_BUCKET', 'INTERNAL_FAILURE']], 'BusinessReportFormat' => ['type' => 'string', 'enum' => ['CSV', 'CSV_ZIP']], 'BusinessReportInterval' => ['type' => 'string', 'enum' => ['ONE_DAY', 'ONE_WEEK', 'THIRTY_DAYS']], 'BusinessReportRecurrence' => ['type' => 'structure', 'members' => ['StartDate' => ['shape' => 'Date']]], 'BusinessReportS3Location' => ['type' => 'structure', 'members' => ['Path' => ['shape' => 'BusinessReportS3Path'], 'BucketName' => ['shape' => 'CustomerS3BucketName']]], 'BusinessReportS3Path' => ['type' => 'string'], 'BusinessReportSchedule' => ['type' => 'structure', 'members' => ['ScheduleArn' => ['shape' => 'Arn'], 'ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ContentRange' => ['shape' => 'BusinessReportContentRange'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence'], 'LastBusinessReport' => ['shape' => 'BusinessReport']]], 'BusinessReportScheduleList' => ['type' => 'list', 'member' => ['shape' => 'BusinessReportSchedule']], 'BusinessReportScheduleName' => ['type' => 'string', 'max' => 64, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'BusinessReportStatus' => ['type' => 'string', 'enum' => ['RUNNING', 'SUCCEEDED', 'FAILED']], 'Category' => ['type' => 'structure', 'members' => ['CategoryId' => ['shape' => 'CategoryId'], 'CategoryName' => ['shape' => 'CategoryName']]], 'CategoryId' => ['type' => 'long', 'min' => 1], 'CategoryList' => ['type' => 'list', 'member' => ['shape' => 'Category']], 'CategoryName' => ['type' => 'string'], 'CertificateTime' => ['type' => 'timestamp'], 'ClientId' => ['type' => 'string', 'pattern' => '^\\S+{1,256}$'], 'ClientRequestToken' => ['type' => 'string', 'max' => 150, 'min' => 10, 'pattern' => '[a-zA-Z0-9][a-zA-Z0-9_-]*'], 'CommsProtocol' => ['type' => 'string', 'enum' => ['SIP', 'SIPS', 'H323']], 'ConcurrentModificationException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ConferencePreference' => ['type' => 'structure', 'members' => ['DefaultConferenceProviderArn' => ['shape' => 'Arn']]], 'ConferenceProvider' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'ConferenceProviderName'], 'Type' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting']]], 'ConferenceProviderName' => ['type' => 'string', 'max' => 50, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'ConferenceProviderType' => ['type' => 'string', 'enum' => ['CHIME', 'BLUEJEANS', 'FUZE', 'GOOGLE_HANGOUTS', 'POLYCOM', 'RINGCENTRAL', 'SKYPE_FOR_BUSINESS', 'WEBEX', 'ZOOM', 'CUSTOM']], 'ConferenceProvidersList' => ['type' => 'list', 'member' => ['shape' => 'ConferenceProvider']], 'ConnectionStatus' => ['type' => 'string', 'enum' => ['ONLINE', 'OFFLINE']], 'ConnectionStatusUpdatedTime' => ['type' => 'timestamp'], 'Contact' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'ContactData' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'ContactDataList' => ['type' => 'list', 'member' => ['shape' => 'ContactData']], 'ContactName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'Content' => ['type' => 'structure', 'members' => ['TextList' => ['shape' => 'TextList'], 'SsmlList' => ['shape' => 'SsmlList'], 'AudioList' => ['shape' => 'AudioList']]], 'CountryCode' => ['type' => 'string', 'pattern' => '\\d{1,3}'], 'CreateAddressBookRequest' => ['type' => 'structure', 'required' => ['Name'], 'members' => ['Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateAddressBookResponse' => ['type' => 'structure', 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'CreateBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['Format', 'ContentRange'], 'members' => ['ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ContentRange' => ['shape' => 'BusinessReportContentRange'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => ['ScheduleArn' => ['shape' => 'Arn']]], 'CreateConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderName', 'ConferenceProviderType', 'MeetingSetting'], 'members' => ['ConferenceProviderName' => ['shape' => 'ConferenceProviderName'], 'ConferenceProviderType' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateConferenceProviderResponse' => ['type' => 'structure', 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'CreateContactRequest' => ['type' => 'structure', 'required' => ['FirstName'], 'members' => ['DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateContactResponse' => ['type' => 'structure', 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'CreateEndOfMeetingReminder' => ['type' => 'structure', 'required' => ['ReminderAtMinutes', 'ReminderType', 'Enabled'], 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateGatewayGroupRequest' => ['type' => 'structure', 'required' => ['Name', 'ClientRequestToken'], 'members' => ['Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateGatewayGroupResponse' => ['type' => 'structure', 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'CreateInstantBooking' => ['type' => 'structure', 'required' => ['DurationInMinutes', 'Enabled'], 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateMeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'CreateEndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'CreateInstantBooking'], 'RequireCheckIn' => ['shape' => 'CreateRequireCheckIn']]], 'CreateNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileName', 'Ssid', 'SecurityType', 'ClientRequestToken'], 'members' => ['NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'CreateNetworkProfileResponse' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'CreateProfileRequest' => ['type' => 'structure', 'required' => ['ProfileName', 'Timezone', 'Address', 'DistanceUnit', 'TemperatureUnit', 'WakeWord'], 'members' => ['ProfileName' => ['shape' => 'ProfileName'], 'Timezone' => ['shape' => 'Timezone'], 'Address' => ['shape' => 'Address'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'MeetingRoomConfiguration' => ['shape' => 'CreateMeetingRoomConfiguration'], 'Tags' => ['shape' => 'TagList']]], 'CreateProfileResponse' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'CreateRequireCheckIn' => ['type' => 'structure', 'required' => ['ReleaseAfterMinutes', 'Enabled'], 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'CreateRoomRequest' => ['type' => 'structure', 'required' => ['RoomName'], 'members' => ['RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProfileArn' => ['shape' => 'Arn'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateRoomResponse' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'CreateSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillGroupName'], 'members' => ['SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateSkillGroupResponse' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'CreateUserRequest' => ['type' => 'structure', 'required' => ['UserId'], 'members' => ['UserId' => ['shape' => 'user_UserId'], 'FirstName' => ['shape' => 'user_FirstName'], 'LastName' => ['shape' => 'user_LastName'], 'Email' => ['shape' => 'Email'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true], 'Tags' => ['shape' => 'TagList']]], 'CreateUserResponse' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn']]], 'CurrentWiFiPassword' => ['type' => 'string', 'max' => 128, 'min' => 5, 'pattern' => '[\\x00-\\x7F]*', 'sensitive' => \true], 'CustomerS3BucketName' => ['type' => 'string', 'pattern' => '[a-z0-9-\\.]{3,63}'], 'Date' => ['type' => 'string', 'pattern' => '^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$'], 'DeleteAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'DeleteAddressBookResponse' => ['type' => 'structure', 'members' => []], 'DeleteBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['ScheduleArn'], 'members' => ['ScheduleArn' => ['shape' => 'Arn']]], 'DeleteBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => []], 'DeleteConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'DeleteConferenceProviderResponse' => ['type' => 'structure', 'members' => []], 'DeleteContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'DeleteContactResponse' => ['type' => 'structure', 'members' => []], 'DeleteDeviceRequest' => ['type' => 'structure', 'required' => ['DeviceArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'DeleteDeviceResponse' => ['type' => 'structure', 'members' => []], 'DeleteDeviceUsageDataRequest' => ['type' => 'structure', 'required' => ['DeviceArn', 'DeviceUsageType'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceUsageType' => ['shape' => 'DeviceUsageType']]], 'DeleteDeviceUsageDataResponse' => ['type' => 'structure', 'members' => []], 'DeleteGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'DeleteGatewayGroupResponse' => ['type' => 'structure', 'members' => []], 'DeleteNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'DeleteNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'DeleteProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'DeleteProfileResponse' => ['type' => 'structure', 'members' => []], 'DeleteRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'DeleteRoomResponse' => ['type' => 'structure', 'members' => []], 'DeleteRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'ParameterKey'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'ParameterKey' => ['shape' => 'RoomSkillParameterKey']]], 'DeleteRoomSkillParameterResponse' => ['type' => 'structure', 'members' => []], 'DeleteSkillAuthorizationRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId'], 'RoomArn' => ['shape' => 'Arn']]], 'DeleteSkillAuthorizationResponse' => ['type' => 'structure', 'members' => []], 'DeleteSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'DeleteSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'DeleteUserRequest' => ['type' => 'structure', 'required' => ['EnrollmentId'], 'members' => ['UserArn' => ['shape' => 'Arn'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'DeleteUserResponse' => ['type' => 'structure', 'members' => []], 'DeveloperInfo' => ['type' => 'structure', 'members' => ['DeveloperName' => ['shape' => 'DeveloperName'], 'PrivacyPolicy' => ['shape' => 'PrivacyPolicy'], 'Email' => ['shape' => 'Email'], 'Url' => ['shape' => 'Url']]], 'DeveloperName' => ['type' => 'string'], 'Device' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumber'], 'DeviceType' => ['shape' => 'DeviceType'], 'DeviceName' => ['shape' => 'DeviceName'], 'SoftwareVersion' => ['shape' => 'SoftwareVersion'], 'MacAddress' => ['shape' => 'MacAddress'], 'RoomArn' => ['shape' => 'Arn'], 'DeviceStatus' => ['shape' => 'DeviceStatus'], 'DeviceStatusInfo' => ['shape' => 'DeviceStatusInfo'], 'NetworkProfileInfo' => ['shape' => 'DeviceNetworkProfileInfo']]], 'DeviceData' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumber'], 'DeviceType' => ['shape' => 'DeviceType'], 'DeviceName' => ['shape' => 'DeviceName'], 'SoftwareVersion' => ['shape' => 'SoftwareVersion'], 'MacAddress' => ['shape' => 'MacAddress'], 'DeviceStatus' => ['shape' => 'DeviceStatus'], 'NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'DeviceRoomName'], 'DeviceStatusInfo' => ['shape' => 'DeviceStatusInfo'], 'CreatedTime' => ['shape' => 'DeviceDataCreatedTime']]], 'DeviceDataCreatedTime' => ['type' => 'timestamp'], 'DeviceDataList' => ['type' => 'list', 'member' => ['shape' => 'DeviceData']], 'DeviceEvent' => ['type' => 'structure', 'members' => ['Type' => ['shape' => 'DeviceEventType'], 'Value' => ['shape' => 'DeviceEventValue'], 'Timestamp' => ['shape' => 'DeviceEventTime']]], 'DeviceEventList' => ['type' => 'list', 'member' => ['shape' => 'DeviceEvent']], 'DeviceEventTime' => ['type' => 'timestamp'], 'DeviceEventType' => ['type' => 'string', 'enum' => ['CONNECTION_STATUS', 'DEVICE_STATUS']], 'DeviceEventValue' => ['type' => 'string'], 'DeviceLocale' => ['type' => 'string', 'max' => 256, 'min' => 1], 'DeviceName' => ['type' => 'string', 'max' => 100, 'min' => 2, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'DeviceNetworkProfileInfo' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'CertificateArn' => ['shape' => 'Arn'], 'CertificateExpirationTime' => ['shape' => 'CertificateTime']]], 'DeviceNotRegisteredException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'DeviceRoomName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'DeviceSerialNumber' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,200}'], 'DeviceSerialNumberForAVS' => ['type' => 'string', 'pattern' => '^[a-zA-Z0-9]{1,50}$'], 'DeviceStatus' => ['type' => 'string', 'enum' => ['READY', 'PENDING', 'WAS_OFFLINE', 'DEREGISTERED', 'FAILED']], 'DeviceStatusDetail' => ['type' => 'structure', 'members' => ['Feature' => ['shape' => 'Feature'], 'Code' => ['shape' => 'DeviceStatusDetailCode']]], 'DeviceStatusDetailCode' => ['type' => 'string', 'enum' => ['DEVICE_SOFTWARE_UPDATE_NEEDED', 'DEVICE_WAS_OFFLINE', 'CREDENTIALS_ACCESS_FAILURE', 'TLS_VERSION_MISMATCH', 'ASSOCIATION_REJECTION', 'AUTHENTICATION_FAILURE', 'DHCP_FAILURE', 'INTERNET_UNAVAILABLE', 'DNS_FAILURE', 'UNKNOWN_FAILURE', 'CERTIFICATE_ISSUING_LIMIT_EXCEEDED', 'INVALID_CERTIFICATE_AUTHORITY', 'NETWORK_PROFILE_NOT_FOUND', 'INVALID_PASSWORD_STATE', 'PASSWORD_NOT_FOUND', 'PASSWORD_MANAGER_ACCESS_DENIED', 'CERTIFICATE_AUTHORITY_ACCESS_DENIED']], 'DeviceStatusDetails' => ['type' => 'list', 'member' => ['shape' => 'DeviceStatusDetail']], 'DeviceStatusInfo' => ['type' => 'structure', 'members' => ['DeviceStatusDetails' => ['shape' => 'DeviceStatusDetails'], 'ConnectionStatus' => ['shape' => 'ConnectionStatus'], 'ConnectionStatusUpdatedTime' => ['shape' => 'ConnectionStatusUpdatedTime']]], 'DeviceType' => ['type' => 'string', 'pattern' => '[a-zA-Z0-9]{1,200}'], 'DeviceUsageType' => ['type' => 'string', 'enum' => ['VOICE']], 'DisassociateContactFromAddressBookRequest' => ['type' => 'structure', 'required' => ['ContactArn', 'AddressBookArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'AddressBookArn' => ['shape' => 'Arn']]], 'DisassociateContactFromAddressBookResponse' => ['type' => 'structure', 'members' => []], 'DisassociateDeviceFromRoomRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'DisassociateDeviceFromRoomResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillFromSkillGroupRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId']]], 'DisassociateSkillFromSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillFromUsersRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'DisassociateSkillFromUsersResponse' => ['type' => 'structure', 'members' => []], 'DisassociateSkillGroupFromRoomRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'RoomArn' => ['shape' => 'Arn']]], 'DisassociateSkillGroupFromRoomResponse' => ['type' => 'structure', 'members' => []], 'DistanceUnit' => ['type' => 'string', 'enum' => ['METRIC', 'IMPERIAL']], 'Email' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '([0-9a-zA-Z]([+-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z]([-\\w]*[0-9a-zA-Z]+)*\\.)+[a-zA-Z]{2,9})'], 'EnablementType' => ['type' => 'string', 'enum' => ['ENABLED', 'PENDING']], 'EnablementTypeFilter' => ['type' => 'string', 'enum' => ['ENABLED', 'PENDING']], 'EndOfMeetingReminder' => ['type' => 'structure', 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'EndOfMeetingReminderMinutesList' => ['type' => 'list', 'member' => ['shape' => 'Minutes'], 'max' => 1, 'min' => 1], 'EndOfMeetingReminderType' => ['type' => 'string', 'enum' => ['ANNOUNCEMENT_TIME_CHECK', 'ANNOUNCEMENT_VARIABLE_TIME_LEFT', 'CHIME', 'KNOCK']], 'EndUserLicenseAgreement' => ['type' => 'string'], 'Endpoint' => ['type' => 'string', 'max' => 256, 'min' => 1], 'EnrollmentId' => ['type' => 'string', 'max' => 128, 'min' => 0], 'EnrollmentStatus' => ['type' => 'string', 'enum' => ['INITIALIZED', 'PENDING', 'REGISTERED', 'DISASSOCIATING', 'DEREGISTERING']], 'ErrorMessage' => ['type' => 'string'], 'Feature' => ['type' => 'string', 'enum' => ['BLUETOOTH', 'VOLUME', 'NOTIFICATIONS', 'LISTS', 'SKILLS', 'NETWORK_PROFILE', 'SETTINGS', 'ALL']], 'Features' => ['type' => 'list', 'member' => ['shape' => 'Feature']], 'Filter' => ['type' => 'structure', 'required' => ['Key', 'Values'], 'members' => ['Key' => ['shape' => 'FilterKey'], 'Values' => ['shape' => 'FilterValueList']]], 'FilterKey' => ['type' => 'string', 'max' => 500, 'min' => 1], 'FilterList' => ['type' => 'list', 'member' => ['shape' => 'Filter'], 'max' => 25], 'FilterValue' => ['type' => 'string', 'max' => 500, 'min' => 1], 'FilterValueList' => ['type' => 'list', 'member' => ['shape' => 'FilterValue'], 'max' => 50], 'ForgetSmartHomeAppliancesRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'ForgetSmartHomeAppliancesResponse' => ['type' => 'structure', 'members' => []], 'Gateway' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'GatewayGroupArn' => ['shape' => 'Arn'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'GatewayDescription' => ['type' => 'string', 'max' => 200, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewayGroup' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'GatewayGroupDescription' => ['type' => 'string', 'max' => 200, 'min' => 0], 'GatewayGroupName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewayGroupSummaries' => ['type' => 'list', 'member' => ['shape' => 'GatewayGroupSummary']], 'GatewayGroupSummary' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'GatewayName' => ['type' => 'string', 'max' => 253, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'GatewaySummaries' => ['type' => 'list', 'member' => ['shape' => 'GatewaySummary']], 'GatewaySummary' => ['type' => 'structure', 'members' => ['Arn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'GatewayGroupArn' => ['shape' => 'Arn'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'GatewayVersion' => ['type' => 'string', 'max' => 50, 'min' => 1], 'GenericKeyword' => ['type' => 'string'], 'GenericKeywords' => ['type' => 'list', 'member' => ['shape' => 'GenericKeyword']], 'GetAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn']]], 'GetAddressBookResponse' => ['type' => 'structure', 'members' => ['AddressBook' => ['shape' => 'AddressBook']]], 'GetConferencePreferenceRequest' => ['type' => 'structure', 'members' => []], 'GetConferencePreferenceResponse' => ['type' => 'structure', 'members' => ['Preference' => ['shape' => 'ConferencePreference']]], 'GetConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn']]], 'GetConferenceProviderResponse' => ['type' => 'structure', 'members' => ['ConferenceProvider' => ['shape' => 'ConferenceProvider']]], 'GetContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn']]], 'GetContactResponse' => ['type' => 'structure', 'members' => ['Contact' => ['shape' => 'Contact']]], 'GetDeviceRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'GetDeviceResponse' => ['type' => 'structure', 'members' => ['Device' => ['shape' => 'Device']]], 'GetGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn']]], 'GetGatewayGroupResponse' => ['type' => 'structure', 'members' => ['GatewayGroup' => ['shape' => 'GatewayGroup']]], 'GetGatewayRequest' => ['type' => 'structure', 'required' => ['GatewayArn'], 'members' => ['GatewayArn' => ['shape' => 'Arn']]], 'GetGatewayResponse' => ['type' => 'structure', 'members' => ['Gateway' => ['shape' => 'Gateway']]], 'GetInvitationConfigurationRequest' => ['type' => 'structure', 'members' => []], 'GetInvitationConfigurationResponse' => ['type' => 'structure', 'members' => ['OrganizationName' => ['shape' => 'OrganizationName'], 'ContactEmail' => ['shape' => 'Email'], 'PrivateSkillIds' => ['shape' => 'ShortSkillIdList']]], 'GetNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn']]], 'GetNetworkProfileResponse' => ['type' => 'structure', 'members' => ['NetworkProfile' => ['shape' => 'NetworkProfile']]], 'GetProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn']]], 'GetProfileResponse' => ['type' => 'structure', 'members' => ['Profile' => ['shape' => 'Profile']]], 'GetRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'GetRoomResponse' => ['type' => 'structure', 'members' => ['Room' => ['shape' => 'Room']]], 'GetRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'ParameterKey'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'ParameterKey' => ['shape' => 'RoomSkillParameterKey']]], 'GetRoomSkillParameterResponse' => ['type' => 'structure', 'members' => ['RoomSkillParameter' => ['shape' => 'RoomSkillParameter']]], 'GetSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn']]], 'GetSkillGroupResponse' => ['type' => 'structure', 'members' => ['SkillGroup' => ['shape' => 'SkillGroup']]], 'IPDialIn' => ['type' => 'structure', 'required' => ['Endpoint', 'CommsProtocol'], 'members' => ['Endpoint' => ['shape' => 'Endpoint'], 'CommsProtocol' => ['shape' => 'CommsProtocol']]], 'IconUrl' => ['type' => 'string'], 'InstantBooking' => ['type' => 'structure', 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'InvalidCertificateAuthorityException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidDeviceException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidSecretsManagerResourceException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidServiceLinkedRoleStateException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvalidUserStatusException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'InvocationPhrase' => ['type' => 'string'], 'Key' => ['type' => 'string', 'min' => 1], 'LimitExceededException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ListBusinessReportSchedulesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListBusinessReportSchedulesResponse' => ['type' => 'structure', 'members' => ['BusinessReportSchedules' => ['shape' => 'BusinessReportScheduleList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListConferenceProvidersRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListConferenceProvidersResponse' => ['type' => 'structure', 'members' => ['ConferenceProviders' => ['shape' => 'ConferenceProvidersList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListDeviceEventsRequest' => ['type' => 'structure', 'required' => ['DeviceArn'], 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'EventType' => ['shape' => 'DeviceEventType'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListDeviceEventsResponse' => ['type' => 'structure', 'members' => ['DeviceEvents' => ['shape' => 'DeviceEventList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListGatewayGroupsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListGatewayGroupsResponse' => ['type' => 'structure', 'members' => ['GatewayGroups' => ['shape' => 'GatewayGroupSummaries'], 'NextToken' => ['shape' => 'NextToken']]], 'ListGatewaysRequest' => ['type' => 'structure', 'members' => ['GatewayGroupArn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListGatewaysResponse' => ['type' => 'structure', 'members' => ['Gateways' => ['shape' => 'GatewaySummaries'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'EnablementType' => ['shape' => 'EnablementTypeFilter'], 'SkillType' => ['shape' => 'SkillTypeFilter'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'SkillListMaxResults']]], 'ListSkillsResponse' => ['type' => 'structure', 'members' => ['SkillSummaries' => ['shape' => 'SkillSummaryList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsStoreCategoriesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListSkillsStoreCategoriesResponse' => ['type' => 'structure', 'members' => ['CategoryList' => ['shape' => 'CategoryList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSkillsStoreSkillsByCategoryRequest' => ['type' => 'structure', 'required' => ['CategoryId'], 'members' => ['CategoryId' => ['shape' => 'CategoryId'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'SkillListMaxResults']]], 'ListSkillsStoreSkillsByCategoryResponse' => ['type' => 'structure', 'members' => ['SkillsStoreSkills' => ['shape' => 'SkillsStoreSkillList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSmartHomeAppliancesRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'MaxResults' => ['shape' => 'MaxResults'], 'NextToken' => ['shape' => 'NextToken']]], 'ListSmartHomeAppliancesResponse' => ['type' => 'structure', 'members' => ['SmartHomeAppliances' => ['shape' => 'SmartHomeApplianceList'], 'NextToken' => ['shape' => 'NextToken']]], 'ListTagsRequest' => ['type' => 'structure', 'required' => ['Arn'], 'members' => ['Arn' => ['shape' => 'Arn'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'ListTagsResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'TagList'], 'NextToken' => ['shape' => 'NextToken']]], 'Locale' => ['type' => 'string', 'enum' => ['en-US']], 'MacAddress' => ['type' => 'string'], 'MaxResults' => ['type' => 'integer', 'max' => 50, 'min' => 1], 'MaxVolumeLimit' => ['type' => 'integer'], 'MeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'EndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'InstantBooking'], 'RequireCheckIn' => ['shape' => 'RequireCheckIn']]], 'MeetingSetting' => ['type' => 'structure', 'required' => ['RequirePin'], 'members' => ['RequirePin' => ['shape' => 'RequirePin']]], 'Minutes' => ['type' => 'integer'], 'NameInUseException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'NetworkEapMethod' => ['type' => 'string', 'enum' => ['EAP_TLS']], 'NetworkProfile' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList']]], 'NetworkProfileData' => ['type' => 'structure', 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'Ssid' => ['shape' => 'NetworkSsid'], 'SecurityType' => ['shape' => 'NetworkSecurityType'], 'EapMethod' => ['shape' => 'NetworkEapMethod'], 'CertificateAuthorityArn' => ['shape' => 'Arn']]], 'NetworkProfileDataList' => ['type' => 'list', 'member' => ['shape' => 'NetworkProfileData']], 'NetworkProfileDescription' => ['type' => 'string', 'max' => 200, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NetworkProfileName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NetworkSecurityType' => ['type' => 'string', 'enum' => ['OPEN', 'WEP', 'WPA_PSK', 'WPA2_PSK', 'WPA2_ENTERPRISE']], 'NetworkSsid' => ['type' => 'string', 'max' => 32, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'NewInThisVersionBulletPoints' => ['type' => 'list', 'member' => ['shape' => 'BulletPoint']], 'NextToken' => ['type' => 'string', 'max' => 1100, 'min' => 1], 'NextWiFiPassword' => ['type' => 'string', 'max' => 128, 'min' => 0, 'pattern' => '(^$)|([\\x00-\\x7F]{5,})', 'sensitive' => \true], 'NotFoundException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'OneClickIdDelay' => ['type' => 'string', 'max' => 2, 'min' => 1], 'OneClickPinDelay' => ['type' => 'string', 'max' => 2, 'min' => 1], 'OrganizationName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'OutboundPhoneNumber' => ['type' => 'string', 'pattern' => '\\d{10}'], 'PSTNDialIn' => ['type' => 'structure', 'required' => ['CountryCode', 'PhoneNumber', 'OneClickIdDelay', 'OneClickPinDelay'], 'members' => ['CountryCode' => ['shape' => 'CountryCode'], 'PhoneNumber' => ['shape' => 'OutboundPhoneNumber'], 'OneClickIdDelay' => ['shape' => 'OneClickIdDelay'], 'OneClickPinDelay' => ['shape' => 'OneClickPinDelay']]], 'PhoneNumber' => ['type' => 'structure', 'required' => ['Number', 'Type'], 'members' => ['Number' => ['shape' => 'RawPhoneNumber'], 'Type' => ['shape' => 'PhoneNumberType']]], 'PhoneNumberList' => ['type' => 'list', 'member' => ['shape' => 'PhoneNumber'], 'max' => 3, 'min' => 0], 'PhoneNumberType' => ['type' => 'string', 'enum' => ['MOBILE', 'WORK', 'HOME'], 'sensitive' => \true], 'PrivacyPolicy' => ['type' => 'string'], 'ProductDescription' => ['type' => 'string'], 'ProductId' => ['type' => 'string', 'pattern' => '^[a-zA-Z0-9_]{1,256}$'], 'Profile' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Address' => ['shape' => 'Address'], 'Timezone' => ['shape' => 'Timezone'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'AddressBookArn' => ['shape' => 'Arn'], 'MeetingRoomConfiguration' => ['shape' => 'MeetingRoomConfiguration']]], 'ProfileData' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Address' => ['shape' => 'Address'], 'Timezone' => ['shape' => 'Timezone'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale']]], 'ProfileDataList' => ['type' => 'list', 'member' => ['shape' => 'ProfileData']], 'ProfileName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'ProviderCalendarId' => ['type' => 'string', 'max' => 100, 'min' => 0], 'PutConferencePreferenceRequest' => ['type' => 'structure', 'required' => ['ConferencePreference'], 'members' => ['ConferencePreference' => ['shape' => 'ConferencePreference']]], 'PutConferencePreferenceResponse' => ['type' => 'structure', 'members' => []], 'PutInvitationConfigurationRequest' => ['type' => 'structure', 'required' => ['OrganizationName'], 'members' => ['OrganizationName' => ['shape' => 'OrganizationName'], 'ContactEmail' => ['shape' => 'Email'], 'PrivateSkillIds' => ['shape' => 'ShortSkillIdList']]], 'PutInvitationConfigurationResponse' => ['type' => 'structure', 'members' => []], 'PutRoomSkillParameterRequest' => ['type' => 'structure', 'required' => ['SkillId', 'RoomSkillParameter'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'SkillId' => ['shape' => 'SkillId'], 'RoomSkillParameter' => ['shape' => 'RoomSkillParameter']]], 'PutRoomSkillParameterResponse' => ['type' => 'structure', 'members' => []], 'PutSkillAuthorizationRequest' => ['type' => 'structure', 'required' => ['AuthorizationResult', 'SkillId'], 'members' => ['AuthorizationResult' => ['shape' => 'AuthorizationResult'], 'SkillId' => ['shape' => 'SkillId'], 'RoomArn' => ['shape' => 'Arn']]], 'PutSkillAuthorizationResponse' => ['type' => 'structure', 'members' => []], 'RawPhoneNumber' => ['type' => 'string', 'max' => 50, 'min' => 0, 'pattern' => '^[\\+0-9\\#\\,\\(][\\+0-9\\-\\.\\/\\(\\)\\,\\#\\s]+$', 'sensitive' => \true], 'RegisterAVSDeviceRequest' => ['type' => 'structure', 'required' => ['ClientId', 'UserCode', 'ProductId', 'AmazonId'], 'members' => ['ClientId' => ['shape' => 'ClientId'], 'UserCode' => ['shape' => 'UserCode'], 'ProductId' => ['shape' => 'ProductId'], 'DeviceSerialNumber' => ['shape' => 'DeviceSerialNumberForAVS'], 'AmazonId' => ['shape' => 'AmazonId'], 'RoomArn' => ['shape' => 'Arn']]], 'RegisterAVSDeviceResponse' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn']]], 'RejectSkillRequest' => ['type' => 'structure', 'required' => ['SkillId'], 'members' => ['SkillId' => ['shape' => 'SkillId']]], 'RejectSkillResponse' => ['type' => 'structure', 'members' => []], 'ReleaseDate' => ['type' => 'string'], 'RequireCheckIn' => ['type' => 'structure', 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'RequirePin' => ['type' => 'string', 'enum' => ['YES', 'NO', 'OPTIONAL']], 'ResolveRoomRequest' => ['type' => 'structure', 'required' => ['UserId', 'SkillId'], 'members' => ['UserId' => ['shape' => 'UserId'], 'SkillId' => ['shape' => 'SkillId']]], 'ResolveRoomResponse' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'RoomSkillParameters' => ['shape' => 'RoomSkillParameters']]], 'ResourceAssociatedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'ResourceInUseException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken']], 'exception' => \true], 'ReviewKey' => ['type' => 'string'], 'ReviewValue' => ['type' => 'string'], 'Reviews' => ['type' => 'map', 'key' => ['shape' => 'ReviewKey'], 'value' => ['shape' => 'ReviewValue']], 'RevokeInvitationRequest' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'RevokeInvitationResponse' => ['type' => 'structure', 'members' => []], 'Room' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn']]], 'RoomData' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName']]], 'RoomDataList' => ['type' => 'list', 'member' => ['shape' => 'RoomData']], 'RoomDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'RoomName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'RoomSkillParameter' => ['type' => 'structure', 'required' => ['ParameterKey', 'ParameterValue'], 'members' => ['ParameterKey' => ['shape' => 'RoomSkillParameterKey'], 'ParameterValue' => ['shape' => 'RoomSkillParameterValue']]], 'RoomSkillParameterKey' => ['type' => 'string', 'max' => 256, 'min' => 1], 'RoomSkillParameterValue' => ['type' => 'string', 'max' => 512, 'min' => 1], 'RoomSkillParameters' => ['type' => 'list', 'member' => ['shape' => 'RoomSkillParameter']], 'S3KeyPrefix' => ['type' => 'string', 'max' => 100, 'min' => 0, 'pattern' => '[A-Za-z0-9!_\\-\\.\\*\'()/]*'], 'SampleUtterances' => ['type' => 'list', 'member' => ['shape' => 'Utterance']], 'SearchAddressBooksRequest' => ['type' => 'structure', 'members' => ['Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'SearchAddressBooksResponse' => ['type' => 'structure', 'members' => ['AddressBooks' => ['shape' => 'AddressBookDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchContactsRequest' => ['type' => 'structure', 'members' => ['Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList'], 'NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults']]], 'SearchContactsResponse' => ['type' => 'structure', 'members' => ['Contacts' => ['shape' => 'ContactDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchDevicesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchDevicesResponse' => ['type' => 'structure', 'members' => ['Devices' => ['shape' => 'DeviceDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchNetworkProfilesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchNetworkProfilesResponse' => ['type' => 'structure', 'members' => ['NetworkProfiles' => ['shape' => 'NetworkProfileDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchProfilesRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchProfilesResponse' => ['type' => 'structure', 'members' => ['Profiles' => ['shape' => 'ProfileDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchRoomsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchRoomsResponse' => ['type' => 'structure', 'members' => ['Rooms' => ['shape' => 'RoomDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchSkillGroupsRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchSkillGroupsResponse' => ['type' => 'structure', 'members' => ['SkillGroups' => ['shape' => 'SkillGroupDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SearchUsersRequest' => ['type' => 'structure', 'members' => ['NextToken' => ['shape' => 'NextToken'], 'MaxResults' => ['shape' => 'MaxResults'], 'Filters' => ['shape' => 'FilterList'], 'SortCriteria' => ['shape' => 'SortList']]], 'SearchUsersResponse' => ['type' => 'structure', 'members' => ['Users' => ['shape' => 'UserDataList'], 'NextToken' => ['shape' => 'NextToken'], 'TotalCount' => ['shape' => 'TotalCount']]], 'SendAnnouncementRequest' => ['type' => 'structure', 'required' => ['RoomFilters', 'Content', 'ClientRequestToken'], 'members' => ['RoomFilters' => ['shape' => 'FilterList'], 'Content' => ['shape' => 'Content'], 'TimeToLiveInSeconds' => ['shape' => 'TimeToLiveInSeconds'], 'ClientRequestToken' => ['shape' => 'ClientRequestToken', 'idempotencyToken' => \true]]], 'SendAnnouncementResponse' => ['type' => 'structure', 'members' => ['AnnouncementArn' => ['shape' => 'Arn']]], 'SendInvitationRequest' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn']]], 'SendInvitationResponse' => ['type' => 'structure', 'members' => []], 'ShortDescription' => ['type' => 'string'], 'ShortSkillIdList' => ['type' => 'list', 'member' => ['shape' => 'SkillId'], 'max' => 3, 'min' => 0], 'SipAddress' => ['type' => 'structure', 'required' => ['Uri', 'Type'], 'members' => ['Uri' => ['shape' => 'SipUri'], 'Type' => ['shape' => 'SipType']]], 'SipAddressList' => ['type' => 'list', 'member' => ['shape' => 'SipAddress'], 'max' => 1, 'min' => 0], 'SipType' => ['type' => 'string', 'enum' => ['WORK'], 'sensitive' => \true], 'SipUri' => ['type' => 'string', 'max' => 256, 'min' => 1, 'pattern' => '^sip[s]?:([^@:]+)\\@([^@]+)$', 'sensitive' => \true], 'SkillDetails' => ['type' => 'structure', 'members' => ['ProductDescription' => ['shape' => 'ProductDescription'], 'InvocationPhrase' => ['shape' => 'InvocationPhrase'], 'ReleaseDate' => ['shape' => 'ReleaseDate'], 'EndUserLicenseAgreement' => ['shape' => 'EndUserLicenseAgreement'], 'GenericKeywords' => ['shape' => 'GenericKeywords'], 'BulletPoints' => ['shape' => 'BulletPoints'], 'NewInThisVersionBulletPoints' => ['shape' => 'NewInThisVersionBulletPoints'], 'SkillTypes' => ['shape' => 'SkillTypes'], 'Reviews' => ['shape' => 'Reviews'], 'DeveloperInfo' => ['shape' => 'DeveloperInfo']]], 'SkillGroup' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'SkillGroupData' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'SkillGroupDataList' => ['type' => 'list', 'member' => ['shape' => 'SkillGroupData']], 'SkillGroupDescription' => ['type' => 'string', 'max' => 200, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillGroupName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillId' => ['type' => 'string', 'pattern' => '(^amzn1\\.ask\\.skill\\.[0-9a-f\\-]{1,200})|(^amzn1\\.echo-sdk-ams\\.app\\.[0-9a-f\\-]{1,200})'], 'SkillListMaxResults' => ['type' => 'integer', 'max' => 10, 'min' => 1], 'SkillName' => ['type' => 'string', 'max' => 100, 'min' => 1, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'SkillNotLinkedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'SkillStoreType' => ['type' => 'string'], 'SkillSummary' => ['type' => 'structure', 'members' => ['SkillId' => ['shape' => 'SkillId'], 'SkillName' => ['shape' => 'SkillName'], 'SupportsLinking' => ['shape' => 'boolean'], 'EnablementType' => ['shape' => 'EnablementType'], 'SkillType' => ['shape' => 'SkillType']]], 'SkillSummaryList' => ['type' => 'list', 'member' => ['shape' => 'SkillSummary']], 'SkillType' => ['type' => 'string', 'enum' => ['PUBLIC', 'PRIVATE'], 'max' => 100, 'min' => 1, 'pattern' => '[a-zA-Z0-9][a-zA-Z0-9_-]*'], 'SkillTypeFilter' => ['type' => 'string', 'enum' => ['PUBLIC', 'PRIVATE', 'ALL']], 'SkillTypes' => ['type' => 'list', 'member' => ['shape' => 'SkillStoreType']], 'SkillsStoreSkill' => ['type' => 'structure', 'members' => ['SkillId' => ['shape' => 'SkillId'], 'SkillName' => ['shape' => 'SkillName'], 'ShortDescription' => ['shape' => 'ShortDescription'], 'IconUrl' => ['shape' => 'IconUrl'], 'SampleUtterances' => ['shape' => 'SampleUtterances'], 'SkillDetails' => ['shape' => 'SkillDetails'], 'SupportsLinking' => ['shape' => 'boolean']]], 'SkillsStoreSkillList' => ['type' => 'list', 'member' => ['shape' => 'SkillsStoreSkill']], 'SmartHomeAppliance' => ['type' => 'structure', 'members' => ['FriendlyName' => ['shape' => 'ApplianceFriendlyName'], 'Description' => ['shape' => 'ApplianceDescription'], 'ManufacturerName' => ['shape' => 'ApplianceManufacturerName']]], 'SmartHomeApplianceList' => ['type' => 'list', 'member' => ['shape' => 'SmartHomeAppliance']], 'SoftwareVersion' => ['type' => 'string'], 'Sort' => ['type' => 'structure', 'required' => ['Key', 'Value'], 'members' => ['Key' => ['shape' => 'SortKey'], 'Value' => ['shape' => 'SortValue']]], 'SortKey' => ['type' => 'string', 'max' => 500, 'min' => 1], 'SortList' => ['type' => 'list', 'member' => ['shape' => 'Sort'], 'max' => 25], 'SortValue' => ['type' => 'string', 'enum' => ['ASC', 'DESC']], 'Ssml' => ['type' => 'structure', 'required' => ['Locale', 'Value'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Value' => ['shape' => 'SsmlValue']]], 'SsmlList' => ['type' => 'list', 'member' => ['shape' => 'Ssml'], 'max' => 1], 'SsmlValue' => ['type' => 'string', 'max' => 4096, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'StartDeviceSyncRequest' => ['type' => 'structure', 'required' => ['Features'], 'members' => ['RoomArn' => ['shape' => 'Arn'], 'DeviceArn' => ['shape' => 'Arn'], 'Features' => ['shape' => 'Features']]], 'StartDeviceSyncResponse' => ['type' => 'structure', 'members' => []], 'StartSmartHomeApplianceDiscoveryRequest' => ['type' => 'structure', 'required' => ['RoomArn'], 'members' => ['RoomArn' => ['shape' => 'Arn']]], 'StartSmartHomeApplianceDiscoveryResponse' => ['type' => 'structure', 'members' => []], 'Tag' => ['type' => 'structure', 'required' => ['Key', 'Value'], 'members' => ['Key' => ['shape' => 'TagKey'], 'Value' => ['shape' => 'TagValue']]], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TagKeyList' => ['type' => 'list', 'member' => ['shape' => 'TagKey']], 'TagList' => ['type' => 'list', 'member' => ['shape' => 'Tag']], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['Arn', 'Tags'], 'members' => ['Arn' => ['shape' => 'Arn'], 'Tags' => ['shape' => 'TagList']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagValue' => ['type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$'], 'TemperatureUnit' => ['type' => 'string', 'enum' => ['FAHRENHEIT', 'CELSIUS']], 'Text' => ['type' => 'structure', 'required' => ['Locale', 'Value'], 'members' => ['Locale' => ['shape' => 'Locale'], 'Value' => ['shape' => 'TextValue']]], 'TextList' => ['type' => 'list', 'member' => ['shape' => 'Text'], 'max' => 1], 'TextValue' => ['type' => 'string', 'max' => 4096, 'min' => 0, 'pattern' => '[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*'], 'TimeToLiveInSeconds' => ['type' => 'integer', 'max' => 3600, 'min' => 1], 'Timezone' => ['type' => 'string', 'max' => 100, 'min' => 1], 'TotalCount' => ['type' => 'integer'], 'TrustAnchor' => ['type' => 'string', 'pattern' => '-{5}BEGIN CERTIFICATE-{5}\\u000D?\\u000A([A-Za-z0-9/+]{64}\\u000D?\\u000A)*[A-Za-z0-9/+]{1,64}={0,2}\\u000D?\\u000A-{5}END CERTIFICATE-{5}(\\u000D?\\u000A)?'], 'TrustAnchorList' => ['type' => 'list', 'member' => ['shape' => 'TrustAnchor'], 'max' => 5, 'min' => 1], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => 'ErrorMessage']], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['Arn', 'TagKeys'], 'members' => ['Arn' => ['shape' => 'Arn'], 'TagKeys' => ['shape' => 'TagKeyList']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateAddressBookRequest' => ['type' => 'structure', 'required' => ['AddressBookArn'], 'members' => ['AddressBookArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'AddressBookName'], 'Description' => ['shape' => 'AddressBookDescription']]], 'UpdateAddressBookResponse' => ['type' => 'structure', 'members' => []], 'UpdateBusinessReportScheduleRequest' => ['type' => 'structure', 'required' => ['ScheduleArn'], 'members' => ['ScheduleArn' => ['shape' => 'Arn'], 'S3BucketName' => ['shape' => 'CustomerS3BucketName'], 'S3KeyPrefix' => ['shape' => 'S3KeyPrefix'], 'Format' => ['shape' => 'BusinessReportFormat'], 'ScheduleName' => ['shape' => 'BusinessReportScheduleName'], 'Recurrence' => ['shape' => 'BusinessReportRecurrence']]], 'UpdateBusinessReportScheduleResponse' => ['type' => 'structure', 'members' => []], 'UpdateConferenceProviderRequest' => ['type' => 'structure', 'required' => ['ConferenceProviderArn', 'ConferenceProviderType', 'MeetingSetting'], 'members' => ['ConferenceProviderArn' => ['shape' => 'Arn'], 'ConferenceProviderType' => ['shape' => 'ConferenceProviderType'], 'IPDialIn' => ['shape' => 'IPDialIn'], 'PSTNDialIn' => ['shape' => 'PSTNDialIn'], 'MeetingSetting' => ['shape' => 'MeetingSetting']]], 'UpdateConferenceProviderResponse' => ['type' => 'structure', 'members' => []], 'UpdateContactRequest' => ['type' => 'structure', 'required' => ['ContactArn'], 'members' => ['ContactArn' => ['shape' => 'Arn'], 'DisplayName' => ['shape' => 'ContactName'], 'FirstName' => ['shape' => 'ContactName'], 'LastName' => ['shape' => 'ContactName'], 'PhoneNumber' => ['shape' => 'RawPhoneNumber'], 'PhoneNumbers' => ['shape' => 'PhoneNumberList'], 'SipAddresses' => ['shape' => 'SipAddressList']]], 'UpdateContactResponse' => ['type' => 'structure', 'members' => []], 'UpdateDeviceRequest' => ['type' => 'structure', 'members' => ['DeviceArn' => ['shape' => 'Arn'], 'DeviceName' => ['shape' => 'DeviceName']]], 'UpdateDeviceResponse' => ['type' => 'structure', 'members' => []], 'UpdateEndOfMeetingReminder' => ['type' => 'structure', 'members' => ['ReminderAtMinutes' => ['shape' => 'EndOfMeetingReminderMinutesList'], 'ReminderType' => ['shape' => 'EndOfMeetingReminderType'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateGatewayGroupRequest' => ['type' => 'structure', 'required' => ['GatewayGroupArn'], 'members' => ['GatewayGroupArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayGroupName'], 'Description' => ['shape' => 'GatewayGroupDescription']]], 'UpdateGatewayGroupResponse' => ['type' => 'structure', 'members' => []], 'UpdateGatewayRequest' => ['type' => 'structure', 'required' => ['GatewayArn'], 'members' => ['GatewayArn' => ['shape' => 'Arn'], 'Name' => ['shape' => 'GatewayName'], 'Description' => ['shape' => 'GatewayDescription'], 'SoftwareVersion' => ['shape' => 'GatewayVersion']]], 'UpdateGatewayResponse' => ['type' => 'structure', 'members' => []], 'UpdateInstantBooking' => ['type' => 'structure', 'members' => ['DurationInMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateMeetingRoomConfiguration' => ['type' => 'structure', 'members' => ['RoomUtilizationMetricsEnabled' => ['shape' => 'Boolean'], 'EndOfMeetingReminder' => ['shape' => 'UpdateEndOfMeetingReminder'], 'InstantBooking' => ['shape' => 'UpdateInstantBooking'], 'RequireCheckIn' => ['shape' => 'UpdateRequireCheckIn']]], 'UpdateNetworkProfileRequest' => ['type' => 'structure', 'required' => ['NetworkProfileArn'], 'members' => ['NetworkProfileArn' => ['shape' => 'Arn'], 'NetworkProfileName' => ['shape' => 'NetworkProfileName'], 'Description' => ['shape' => 'NetworkProfileDescription'], 'CurrentPassword' => ['shape' => 'CurrentWiFiPassword'], 'NextPassword' => ['shape' => 'NextWiFiPassword'], 'CertificateAuthorityArn' => ['shape' => 'Arn'], 'TrustAnchors' => ['shape' => 'TrustAnchorList']]], 'UpdateNetworkProfileResponse' => ['type' => 'structure', 'members' => []], 'UpdateProfileRequest' => ['type' => 'structure', 'members' => ['ProfileArn' => ['shape' => 'Arn'], 'ProfileName' => ['shape' => 'ProfileName'], 'IsDefault' => ['shape' => 'Boolean'], 'Timezone' => ['shape' => 'Timezone'], 'Address' => ['shape' => 'Address'], 'DistanceUnit' => ['shape' => 'DistanceUnit'], 'TemperatureUnit' => ['shape' => 'TemperatureUnit'], 'WakeWord' => ['shape' => 'WakeWord'], 'Locale' => ['shape' => 'DeviceLocale'], 'SetupModeDisabled' => ['shape' => 'Boolean'], 'MaxVolumeLimit' => ['shape' => 'MaxVolumeLimit'], 'PSTNEnabled' => ['shape' => 'Boolean'], 'MeetingRoomConfiguration' => ['shape' => 'UpdateMeetingRoomConfiguration']]], 'UpdateProfileResponse' => ['type' => 'structure', 'members' => []], 'UpdateRequireCheckIn' => ['type' => 'structure', 'members' => ['ReleaseAfterMinutes' => ['shape' => 'Minutes'], 'Enabled' => ['shape' => 'Boolean']]], 'UpdateRoomRequest' => ['type' => 'structure', 'members' => ['RoomArn' => ['shape' => 'Arn'], 'RoomName' => ['shape' => 'RoomName'], 'Description' => ['shape' => 'RoomDescription'], 'ProviderCalendarId' => ['shape' => 'ProviderCalendarId'], 'ProfileArn' => ['shape' => 'Arn']]], 'UpdateRoomResponse' => ['type' => 'structure', 'members' => []], 'UpdateSkillGroupRequest' => ['type' => 'structure', 'members' => ['SkillGroupArn' => ['shape' => 'Arn'], 'SkillGroupName' => ['shape' => 'SkillGroupName'], 'Description' => ['shape' => 'SkillGroupDescription']]], 'UpdateSkillGroupResponse' => ['type' => 'structure', 'members' => []], 'Url' => ['type' => 'string'], 'UserCode' => ['type' => 'string', 'max' => 128, 'min' => 1], 'UserData' => ['type' => 'structure', 'members' => ['UserArn' => ['shape' => 'Arn'], 'FirstName' => ['shape' => 'user_FirstName'], 'LastName' => ['shape' => 'user_LastName'], 'Email' => ['shape' => 'Email'], 'EnrollmentStatus' => ['shape' => 'EnrollmentStatus'], 'EnrollmentId' => ['shape' => 'EnrollmentId']]], 'UserDataList' => ['type' => 'list', 'member' => ['shape' => 'UserData']], 'UserId' => ['type' => 'string', 'pattern' => 'amzn1\\.[A-Za-z0-9+-\\/=.]{1,300}'], 'Utterance' => ['type' => 'string'], 'Value' => ['type' => 'string', 'min' => 1], 'WakeWord' => ['type' => 'string', 'enum' => ['ALEXA', 'AMAZON', 'ECHO', 'COMPUTER']], 'boolean' => ['type' => 'boolean'], 'user_FirstName' => ['type' => 'string', 'max' => 30, 'min' => 0, 'pattern' => '([A-Za-z\\-\' 0-9._]|\\p{IsLetter})*'], 'user_LastName' => ['type' => 'string', 'max' => 30, 'min' => 0, 'pattern' => '([A-Za-z\\-\' 0-9._]|\\p{IsLetter})*'], 'user_UserId' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '[a-zA-Z0-9@_+.-]*']]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/amplify/2017-07-25/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-07-25', 'endpointPrefix' => 'amplify', 'jsonVersion' => '1.1', 'protocol' => 'rest-json', 'serviceAbbreviation' => 'Amplify', 'serviceFullName' => 'AWS Amplify', 'serviceId' => 'Amplify', 'signatureVersion' => 'v4', 'signingName' => 'amplify', 'uid' => 'amplify-2017-07-25'], 'operations' => ['CreateApp' => ['name' => 'CreateApp', 'http' => ['method' => 'POST', 'requestUri' => '/apps'], 'input' => ['shape' => 'CreateAppRequest'], 'output' => ['shape' => 'CreateAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateBackendEnvironment' => ['name' => 'CreateBackendEnvironment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/backendenvironments'], 'input' => ['shape' => 'CreateBackendEnvironmentRequest'], 'output' => ['shape' => 'CreateBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'CreateBranch' => ['name' => 'CreateBranch', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches'], 'input' => ['shape' => 'CreateBranchRequest'], 'output' => ['shape' => 'CreateBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateDeployment' => ['name' => 'CreateDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/deployments'], 'input' => ['shape' => 'CreateDeploymentRequest'], 'output' => ['shape' => 'CreateDeploymentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'CreateDomainAssociation' => ['name' => 'CreateDomainAssociation', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/domains'], 'input' => ['shape' => 'CreateDomainAssociationRequest'], 'output' => ['shape' => 'CreateDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateWebhook' => ['name' => 'CreateWebhook', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/webhooks'], 'input' => ['shape' => 'CreateWebhookRequest'], 'output' => ['shape' => 'CreateWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteApp' => ['name' => 'DeleteApp', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'DeleteAppRequest'], 'output' => ['shape' => 'DeleteAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteBackendEnvironment' => ['name' => 'DeleteBackendEnvironment', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/backendenvironments/{environmentName}'], 'input' => ['shape' => 'DeleteBackendEnvironmentRequest'], 'output' => ['shape' => 'DeleteBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteBranch' => ['name' => 'DeleteBranch', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'DeleteBranchRequest'], 'output' => ['shape' => 'DeleteBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteDomainAssociation' => ['name' => 'DeleteDomainAssociation', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'DeleteDomainAssociationRequest'], 'output' => ['shape' => 'DeleteDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteJob' => ['name' => 'DeleteJob', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}'], 'input' => ['shape' => 'DeleteJobRequest'], 'output' => ['shape' => 'DeleteJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'DeleteWebhook' => ['name' => 'DeleteWebhook', 'http' => ['method' => 'DELETE', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'DeleteWebhookRequest'], 'output' => ['shape' => 'DeleteWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GenerateAccessLogs' => ['name' => 'GenerateAccessLogs', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/accesslogs'], 'input' => ['shape' => 'GenerateAccessLogsRequest'], 'output' => ['shape' => 'GenerateAccessLogsResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'GetApp' => ['name' => 'GetApp', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'GetAppRequest'], 'output' => ['shape' => 'GetAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'GetArtifactUrl' => ['name' => 'GetArtifactUrl', 'http' => ['method' => 'GET', 'requestUri' => '/artifacts/{artifactId}'], 'input' => ['shape' => 'GetArtifactUrlRequest'], 'output' => ['shape' => 'GetArtifactUrlResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetBackendEnvironment' => ['name' => 'GetBackendEnvironment', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/backendenvironments/{environmentName}'], 'input' => ['shape' => 'GetBackendEnvironmentRequest'], 'output' => ['shape' => 'GetBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetBranch' => ['name' => 'GetBranch', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'GetBranchRequest'], 'output' => ['shape' => 'GetBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetDomainAssociation' => ['name' => 'GetDomainAssociation', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'GetDomainAssociationRequest'], 'output' => ['shape' => 'GetDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetJob' => ['name' => 'GetJob', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}'], 'input' => ['shape' => 'GetJobRequest'], 'output' => ['shape' => 'GetJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetWebhook' => ['name' => 'GetWebhook', 'http' => ['method' => 'GET', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'GetWebhookRequest'], 'output' => ['shape' => 'GetWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'ListApps' => ['name' => 'ListApps', 'http' => ['method' => 'GET', 'requestUri' => '/apps'], 'input' => ['shape' => 'ListAppsRequest'], 'output' => ['shape' => 'ListAppsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListArtifacts' => ['name' => 'ListArtifacts', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}/artifacts'], 'input' => ['shape' => 'ListArtifactsRequest'], 'output' => ['shape' => 'ListArtifactsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'ListBackendEnvironments' => ['name' => 'ListBackendEnvironments', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/backendenvironments'], 'input' => ['shape' => 'ListBackendEnvironmentsRequest'], 'output' => ['shape' => 'ListBackendEnvironmentsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListBranches' => ['name' => 'ListBranches', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches'], 'input' => ['shape' => 'ListBranchesRequest'], 'output' => ['shape' => 'ListBranchesResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListDomainAssociations' => ['name' => 'ListDomainAssociations', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/domains'], 'input' => ['shape' => 'ListDomainAssociationsRequest'], 'output' => ['shape' => 'ListDomainAssociationsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListJobs' => ['name' => 'ListJobs', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs'], 'input' => ['shape' => 'ListJobsRequest'], 'output' => ['shape' => 'ListJobsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'ListTagsForResource' => ['name' => 'ListTagsForResource', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'ListTagsForResourceRequest'], 'output' => ['shape' => 'ListTagsForResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'ListWebhooks' => ['name' => 'ListWebhooks', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/webhooks'], 'input' => ['shape' => 'ListWebhooksRequest'], 'output' => ['shape' => 'ListWebhooksResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'StartDeployment' => ['name' => 'StartDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/deployments/start'], 'input' => ['shape' => 'StartDeploymentRequest'], 'output' => ['shape' => 'StartDeploymentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'StartJob' => ['name' => 'StartJob', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs'], 'input' => ['shape' => 'StartJobRequest'], 'output' => ['shape' => 'StartJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'StopJob' => ['name' => 'StopJob', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}/stop'], 'input' => ['shape' => 'StopJobRequest'], 'output' => ['shape' => 'StopJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'UpdateApp' => ['name' => 'UpdateApp', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'UpdateAppRequest'], 'output' => ['shape' => 'UpdateAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'UpdateBranch' => ['name' => 'UpdateBranch', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'UpdateBranchRequest'], 'output' => ['shape' => 'UpdateBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'UpdateDomainAssociation' => ['name' => 'UpdateDomainAssociation', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'UpdateDomainAssociationRequest'], 'output' => ['shape' => 'UpdateDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'UpdateWebhook' => ['name' => 'UpdateWebhook', 'http' => ['method' => 'POST', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'UpdateWebhookRequest'], 'output' => ['shape' => 'UpdateWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]]], 'shapes' => ['AccessToken' => ['type' => 'string', 'max' => 255, 'min' => 1], 'ActiveJobId' => ['type' => 'string', 'max' => 1000], 'App' => ['type' => 'structure', 'required' => ['appId', 'appArn', 'name', 'description', 'repository', 'platform', 'createTime', 'updateTime', 'environmentVariables', 'defaultDomain', 'enableBranchAutoBuild', 'enableBasicAuth'], 'members' => ['appId' => ['shape' => 'AppId'], 'appArn' => ['shape' => 'AppArn'], 'name' => ['shape' => 'Name'], 'tags' => ['shape' => 'TagMap'], 'description' => ['shape' => 'Description'], 'repository' => ['shape' => 'Repository'], 'platform' => ['shape' => 'Platform'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'defaultDomain' => ['shape' => 'DefaultDomain'], 'enableBranchAutoBuild' => ['shape' => 'EnableBranchAutoBuild'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'productionBranch' => ['shape' => 'ProductionBranch'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig']]], 'AppArn' => ['type' => 'string', 'max' => 1000], 'AppId' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Apps' => ['type' => 'list', 'member' => ['shape' => 'App']], 'Artifact' => ['type' => 'structure', 'required' => ['artifactFileName', 'artifactId'], 'members' => ['artifactFileName' => ['shape' => 'ArtifactFileName'], 'artifactId' => ['shape' => 'ArtifactId']]], 'ArtifactFileName' => ['type' => 'string', 'max' => 1000], 'ArtifactId' => ['type' => 'string', 'max' => 255], 'ArtifactUrl' => ['type' => 'string', 'max' => 1000], 'Artifacts' => ['type' => 'list', 'member' => ['shape' => 'Artifact']], 'ArtifactsUrl' => ['type' => 'string', 'max' => 1000], 'AssociatedResource' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'AssociatedResources' => ['type' => 'list', 'member' => ['shape' => 'AssociatedResource']], 'AutoBranchCreationConfig' => ['type' => 'structure', 'members' => ['stage' => ['shape' => 'Stage'], 'framework' => ['shape' => 'Framework'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName']]], 'AutoBranchCreationPattern' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'AutoBranchCreationPatterns' => ['type' => 'list', 'member' => ['shape' => 'AutoBranchCreationPattern']], 'BackendEnvironment' => ['type' => 'structure', 'required' => ['backendEnvironmentArn', 'environmentName', 'createTime', 'updateTime'], 'members' => ['backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn'], 'environmentName' => ['shape' => 'EnvironmentName'], 'stackName' => ['shape' => 'StackName'], 'deploymentArtifacts' => ['shape' => 'DeploymentArtifacts'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime']]], 'BackendEnvironmentArn' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'BackendEnvironments' => ['type' => 'list', 'member' => ['shape' => 'BackendEnvironment']], 'BadRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'BasicAuthCredentials' => ['type' => 'string', 'max' => 2000], 'Branch' => ['type' => 'structure', 'required' => ['branchArn', 'branchName', 'description', 'stage', 'displayName', 'enableNotification', 'createTime', 'updateTime', 'environmentVariables', 'enableAutoBuild', 'customDomains', 'framework', 'activeJobId', 'totalNumberOfJobs', 'enableBasicAuth', 'ttl', 'enablePullRequestPreview'], 'members' => ['branchArn' => ['shape' => 'BranchArn'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'tags' => ['shape' => 'TagMap'], 'stage' => ['shape' => 'Stage'], 'displayName' => ['shape' => 'DisplayName'], 'enableNotification' => ['shape' => 'EnableNotification'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'customDomains' => ['shape' => 'CustomDomains'], 'framework' => ['shape' => 'Framework'], 'activeJobId' => ['shape' => 'ActiveJobId'], 'totalNumberOfJobs' => ['shape' => 'TotalNumberOfJobs'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'thumbnailUrl' => ['shape' => 'ThumbnailUrl'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'associatedResources' => ['shape' => 'AssociatedResources'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'destinationBranch' => ['shape' => 'BranchName'], 'sourceBranch' => ['shape' => 'BranchName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'BranchArn' => ['type' => 'string', 'max' => 1000], 'BranchName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Branches' => ['type' => 'list', 'member' => ['shape' => 'Branch'], 'max' => 255], 'BuildSpec' => ['type' => 'string', 'max' => 25000, 'min' => 1], 'CertificateVerificationDNSRecord' => ['type' => 'string', 'max' => 1000], 'Code' => ['type' => 'string'], 'CommitId' => ['type' => 'string', 'max' => 255], 'CommitMessage' => ['type' => 'string', 'max' => 10000], 'CommitTime' => ['type' => 'timestamp'], 'Condition' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'Context' => ['type' => 'string'], 'CreateAppRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'Name'], 'description' => ['shape' => 'Description'], 'repository' => ['shape' => 'Repository'], 'platform' => ['shape' => 'Platform'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'oauthToken' => ['shape' => 'OauthToken'], 'accessToken' => ['shape' => 'AccessToken'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableBranchAutoBuild' => ['shape' => 'EnableBranchAutoBuild'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'tags' => ['shape' => 'TagMap'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig']]], 'CreateAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'CreateBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName'], 'stackName' => ['shape' => 'StackName'], 'deploymentArtifacts' => ['shape' => 'DeploymentArtifacts']]], 'CreateBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'CreateBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'stage' => ['shape' => 'Stage'], 'framework' => ['shape' => 'Framework'], 'enableNotification' => ['shape' => 'EnableNotification'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'tags' => ['shape' => 'TagMap'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'displayName' => ['shape' => 'DisplayName'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'CreateBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'CreateDeploymentRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'fileMap' => ['shape' => 'FileMap']]], 'CreateDeploymentResult' => ['type' => 'structure', 'required' => ['fileUploadUrls', 'zipUploadUrl'], 'members' => ['jobId' => ['shape' => 'JobId'], 'fileUploadUrls' => ['shape' => 'FileUploadUrls'], 'zipUploadUrl' => ['shape' => 'UploadUrl']]], 'CreateDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName', 'subDomainSettings'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'subDomainSettings' => ['shape' => 'SubDomainSettings']]], 'CreateDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'CreateTime' => ['type' => 'timestamp'], 'CreateWebhookRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description']]], 'CreateWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'CustomDomain' => ['type' => 'string', 'max' => 255], 'CustomDomains' => ['type' => 'list', 'member' => ['shape' => 'CustomDomain'], 'max' => 255], 'CustomRule' => ['type' => 'structure', 'required' => ['source', 'target'], 'members' => ['source' => ['shape' => 'Source'], 'target' => ['shape' => 'Target'], 'status' => ['shape' => 'Status'], 'condition' => ['shape' => 'Condition']]], 'CustomRules' => ['type' => 'list', 'member' => ['shape' => 'CustomRule']], 'DNSRecord' => ['type' => 'string', 'max' => 1000], 'DefaultDomain' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'DeleteAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'DeleteAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'DeleteBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName', 'location' => 'uri', 'locationName' => 'environmentName']]], 'DeleteBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'DeleteBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName']]], 'DeleteBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'DeleteDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName']]], 'DeleteDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'DeleteJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'DeleteJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'DeleteWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId']]], 'DeleteWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'DependentServiceFailureException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 503], 'exception' => \true], 'DeploymentArtifacts' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'Description' => ['type' => 'string', 'max' => 1000], 'DisplayName' => ['type' => 'string', 'max' => 255], 'DomainAssociation' => ['type' => 'structure', 'required' => ['domainAssociationArn', 'domainName', 'enableAutoSubDomain', 'domainStatus', 'statusReason', 'subDomains'], 'members' => ['domainAssociationArn' => ['shape' => 'DomainAssociationArn'], 'domainName' => ['shape' => 'DomainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'domainStatus' => ['shape' => 'DomainStatus'], 'statusReason' => ['shape' => 'StatusReason'], 'certificateVerificationDNSRecord' => ['shape' => 'CertificateVerificationDNSRecord'], 'subDomains' => ['shape' => 'SubDomains']]], 'DomainAssociationArn' => ['type' => 'string', 'max' => 1000], 'DomainAssociations' => ['type' => 'list', 'member' => ['shape' => 'DomainAssociation'], 'max' => 255], 'DomainName' => ['type' => 'string', 'max' => 255], 'DomainPrefix' => ['type' => 'string', 'max' => 255], 'DomainStatus' => ['type' => 'string', 'enum' => ['PENDING_VERIFICATION', 'IN_PROGRESS', 'AVAILABLE', 'PENDING_DEPLOYMENT', 'FAILED', 'CREATING', 'REQUESTING_CERTIFICATE', 'UPDATING']], 'EnableAutoBranchCreation' => ['type' => 'boolean'], 'EnableAutoBuild' => ['type' => 'boolean'], 'EnableAutoSubDomain' => ['type' => 'boolean'], 'EnableBasicAuth' => ['type' => 'boolean'], 'EnableBranchAutoBuild' => ['type' => 'boolean'], 'EnableNotification' => ['type' => 'boolean'], 'EnablePullRequestPreview' => ['type' => 'boolean'], 'EndTime' => ['type' => 'timestamp'], 'EnvKey' => ['type' => 'string', 'max' => 255], 'EnvValue' => ['type' => 'string', 'max' => 1000], 'EnvironmentName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'EnvironmentVariables' => ['type' => 'map', 'key' => ['shape' => 'EnvKey'], 'value' => ['shape' => 'EnvValue']], 'ErrorMessage' => ['type' => 'string', 'max' => 255], 'FileMap' => ['type' => 'map', 'key' => ['shape' => 'FileName'], 'value' => ['shape' => 'MD5Hash']], 'FileName' => ['type' => 'string', 'max' => 255], 'FileUploadUrls' => ['type' => 'map', 'key' => ['shape' => 'FileName'], 'value' => ['shape' => 'UploadUrl']], 'Framework' => ['type' => 'string', 'max' => 255], 'GenerateAccessLogsRequest' => ['type' => 'structure', 'required' => ['domainName', 'appId'], 'members' => ['startTime' => ['shape' => 'StartTime'], 'endTime' => ['shape' => 'EndTime'], 'domainName' => ['shape' => 'DomainName'], 'appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'GenerateAccessLogsResult' => ['type' => 'structure', 'members' => ['logUrl' => ['shape' => 'LogUrl']]], 'GetAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'GetAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'GetArtifactUrlRequest' => ['type' => 'structure', 'required' => ['artifactId'], 'members' => ['artifactId' => ['shape' => 'ArtifactId', 'location' => 'uri', 'locationName' => 'artifactId']]], 'GetArtifactUrlResult' => ['type' => 'structure', 'required' => ['artifactId', 'artifactUrl'], 'members' => ['artifactId' => ['shape' => 'ArtifactId'], 'artifactUrl' => ['shape' => 'ArtifactUrl']]], 'GetBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName', 'location' => 'uri', 'locationName' => 'environmentName']]], 'GetBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'GetBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName']]], 'GetBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'GetDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName']]], 'GetDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'GetJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'GetJobResult' => ['type' => 'structure', 'required' => ['job'], 'members' => ['job' => ['shape' => 'Job']]], 'GetWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId']]], 'GetWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'InternalFailureException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 500], 'exception' => \true, 'fault' => \true], 'Job' => ['type' => 'structure', 'required' => ['summary', 'steps'], 'members' => ['summary' => ['shape' => 'JobSummary'], 'steps' => ['shape' => 'Steps']]], 'JobArn' => ['type' => 'string', 'max' => 1000], 'JobId' => ['type' => 'string', 'max' => 255], 'JobReason' => ['type' => 'string', 'max' => 255], 'JobStatus' => ['type' => 'string', 'enum' => ['PENDING', 'PROVISIONING', 'RUNNING', 'FAILED', 'SUCCEED', 'CANCELLING', 'CANCELLED']], 'JobSummaries' => ['type' => 'list', 'member' => ['shape' => 'JobSummary']], 'JobSummary' => ['type' => 'structure', 'required' => ['jobArn', 'jobId', 'commitId', 'commitMessage', 'commitTime', 'startTime', 'status', 'jobType'], 'members' => ['jobArn' => ['shape' => 'JobArn'], 'jobId' => ['shape' => 'JobId'], 'commitId' => ['shape' => 'CommitId'], 'commitMessage' => ['shape' => 'CommitMessage'], 'commitTime' => ['shape' => 'CommitTime'], 'startTime' => ['shape' => 'StartTime'], 'status' => ['shape' => 'JobStatus'], 'endTime' => ['shape' => 'EndTime'], 'jobType' => ['shape' => 'JobType']]], 'JobType' => ['type' => 'string', 'enum' => ['RELEASE', 'RETRY', 'MANUAL', 'WEB_HOOK'], 'max' => 10], 'LastDeployTime' => ['type' => 'timestamp'], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'ListAppsRequest' => ['type' => 'structure', 'members' => ['nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListAppsResult' => ['type' => 'structure', 'required' => ['apps'], 'members' => ['apps' => ['shape' => 'Apps'], 'nextToken' => ['shape' => 'NextToken']]], 'ListArtifactsRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListArtifactsResult' => ['type' => 'structure', 'required' => ['artifacts'], 'members' => ['artifacts' => ['shape' => 'Artifacts'], 'nextToken' => ['shape' => 'NextToken']]], 'ListBackendEnvironmentsRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListBackendEnvironmentsResult' => ['type' => 'structure', 'required' => ['backendEnvironments'], 'members' => ['backendEnvironments' => ['shape' => 'BackendEnvironments'], 'nextToken' => ['shape' => 'NextToken']]], 'ListBranchesRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListBranchesResult' => ['type' => 'structure', 'required' => ['branches'], 'members' => ['branches' => ['shape' => 'Branches'], 'nextToken' => ['shape' => 'NextToken']]], 'ListDomainAssociationsRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListDomainAssociationsResult' => ['type' => 'structure', 'required' => ['domainAssociations'], 'members' => ['domainAssociations' => ['shape' => 'DomainAssociations'], 'nextToken' => ['shape' => 'NextToken']]], 'ListJobsRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListJobsResult' => ['type' => 'structure', 'required' => ['jobSummaries'], 'members' => ['jobSummaries' => ['shape' => 'JobSummaries'], 'nextToken' => ['shape' => 'NextToken']]], 'ListTagsForResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn']]], 'ListTagsForResourceResponse' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'TagMap']]], 'ListWebhooksRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListWebhooksResult' => ['type' => 'structure', 'required' => ['webhooks'], 'members' => ['webhooks' => ['shape' => 'Webhooks'], 'nextToken' => ['shape' => 'NextToken']]], 'LogUrl' => ['type' => 'string', 'max' => 1000], 'MD5Hash' => ['type' => 'string', 'max' => 32], 'MaxResults' => ['type' => 'integer', 'max' => 100, 'min' => 1], 'Name' => ['type' => 'string', 'max' => 255, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 2000], 'NotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'OauthToken' => ['type' => 'string', 'max' => 100], 'Platform' => ['type' => 'string', 'enum' => ['WEB']], 'ProductionBranch' => ['type' => 'structure', 'members' => ['lastDeployTime' => ['shape' => 'LastDeployTime'], 'status' => ['shape' => 'Status'], 'thumbnailUrl' => ['shape' => 'ThumbnailUrl'], 'branchName' => ['shape' => 'BranchName']]], 'PullRequestEnvironmentName' => ['type' => 'string', 'max' => 20], 'Repository' => ['type' => 'string', 'max' => 1000], 'ResourceArn' => ['type' => 'string', 'pattern' => '^arn:aws:amplify:.*'], 'ResourceNotFoundException' => ['type' => 'structure', 'required' => ['code', 'message'], 'members' => ['code' => ['shape' => 'Code'], 'message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'Screenshots' => ['type' => 'map', 'key' => ['shape' => 'ThumbnailName'], 'value' => ['shape' => 'ThumbnailUrl']], 'ServiceRoleArn' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'Source' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'SourceUrl' => ['type' => 'string', 'max' => 1000], 'StackName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Stage' => ['type' => 'string', 'enum' => ['PRODUCTION', 'BETA', 'DEVELOPMENT', 'EXPERIMENTAL', 'PULL_REQUEST']], 'StartDeploymentRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId'], 'sourceUrl' => ['shape' => 'SourceUrl']]], 'StartDeploymentResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'StartJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobType'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId'], 'jobType' => ['shape' => 'JobType'], 'jobReason' => ['shape' => 'JobReason'], 'commitId' => ['shape' => 'CommitId'], 'commitMessage' => ['shape' => 'CommitMessage'], 'commitTime' => ['shape' => 'CommitTime']]], 'StartJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'StartTime' => ['type' => 'timestamp'], 'Status' => ['type' => 'string', 'max' => 7, 'min' => 3], 'StatusReason' => ['type' => 'string', 'max' => 1000], 'Step' => ['type' => 'structure', 'required' => ['stepName', 'startTime', 'status', 'endTime'], 'members' => ['stepName' => ['shape' => 'StepName'], 'startTime' => ['shape' => 'StartTime'], 'status' => ['shape' => 'JobStatus'], 'endTime' => ['shape' => 'EndTime'], 'logUrl' => ['shape' => 'LogUrl'], 'artifactsUrl' => ['shape' => 'ArtifactsUrl'], 'testArtifactsUrl' => ['shape' => 'TestArtifactsUrl'], 'testConfigUrl' => ['shape' => 'TestConfigUrl'], 'screenshots' => ['shape' => 'Screenshots'], 'statusReason' => ['shape' => 'StatusReason'], 'context' => ['shape' => 'Context']]], 'StepName' => ['type' => 'string', 'max' => 255], 'Steps' => ['type' => 'list', 'member' => ['shape' => 'Step']], 'StopJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'StopJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'SubDomain' => ['type' => 'structure', 'required' => ['subDomainSetting', 'verified', 'dnsRecord'], 'members' => ['subDomainSetting' => ['shape' => 'SubDomainSetting'], 'verified' => ['shape' => 'Verified'], 'dnsRecord' => ['shape' => 'DNSRecord']]], 'SubDomainSetting' => ['type' => 'structure', 'required' => ['prefix', 'branchName'], 'members' => ['prefix' => ['shape' => 'DomainPrefix'], 'branchName' => ['shape' => 'BranchName']]], 'SubDomainSettings' => ['type' => 'list', 'member' => ['shape' => 'SubDomainSetting'], 'max' => 255], 'SubDomains' => ['type' => 'list', 'member' => ['shape' => 'SubDomain'], 'max' => 255], 'TTL' => ['type' => 'string'], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^(?!aws:)[a-zA-Z+-=._:/]+$'], 'TagKeyList' => ['type' => 'list', 'member' => ['shape' => 'TagKey'], 'max' => 50, 'min' => 1], 'TagMap' => ['type' => 'map', 'key' => ['shape' => 'TagKey'], 'value' => ['shape' => 'TagValue'], 'max' => 50, 'min' => 1], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tags' => ['shape' => 'TagMap']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagValue' => ['type' => 'string', 'max' => 256], 'Target' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'TestArtifactsUrl' => ['type' => 'string', 'max' => 1000], 'TestConfigUrl' => ['type' => 'string', 'max' => 1000], 'ThumbnailName' => ['type' => 'string', 'max' => 256], 'ThumbnailUrl' => ['type' => 'string', 'max' => 2000, 'min' => 1], 'TotalNumberOfJobs' => ['type' => 'string', 'max' => 1000], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 401], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tagKeys' => ['shape' => 'TagKeyList', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'name' => ['shape' => 'Name'], 'description' => ['shape' => 'Description'], 'platform' => ['shape' => 'Platform'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableBranchAutoBuild' => ['shape' => 'EnableAutoBuild'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig'], 'repository' => ['shape' => 'Repository'], 'oauthToken' => ['shape' => 'OauthToken'], 'accessToken' => ['shape' => 'AccessToken']]], 'UpdateAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'UpdateBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'description' => ['shape' => 'Description'], 'framework' => ['shape' => 'Framework'], 'stage' => ['shape' => 'Stage'], 'enableNotification' => ['shape' => 'EnableNotification'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'displayName' => ['shape' => 'DisplayName'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'UpdateBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'UpdateDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName', 'subDomainSettings'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'subDomainSettings' => ['shape' => 'SubDomainSettings']]], 'UpdateDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'UpdateTime' => ['type' => 'timestamp'], 'UpdateWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description']]], 'UpdateWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'UploadUrl' => ['type' => 'string', 'max' => 1000], 'Verified' => ['type' => 'boolean'], 'Webhook' => ['type' => 'structure', 'required' => ['webhookArn', 'webhookId', 'webhookUrl', 'branchName', 'description', 'createTime', 'updateTime'], 'members' => ['webhookArn' => ['shape' => 'WebhookArn'], 'webhookId' => ['shape' => 'WebhookId'], 'webhookUrl' => ['shape' => 'WebhookUrl'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime']]], 'WebhookArn' => ['type' => 'string', 'max' => 1000], 'WebhookId' => ['type' => 'string', 'max' => 255], 'WebhookUrl' => ['type' => 'string', 'max' => 1000], 'Webhooks' => ['type' => 'list', 'member' => ['shape' => 'Webhook']]]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/amplify/2017-07-25/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2017-07-25', 'endpointPrefix' => 'amplify', 'jsonVersion' => '1.1', 'protocol' => 'rest-json', 'serviceAbbreviation' => 'Amplify', 'serviceFullName' => 'AWS Amplify', 'serviceId' => 'Amplify', 'signatureVersion' => 'v4', 'signingName' => 'amplify', 'uid' => 'amplify-2017-07-25'], 'operations' => ['CreateApp' => ['name' => 'CreateApp', 'http' => ['method' => 'POST', 'requestUri' => '/apps'], 'input' => ['shape' => 'CreateAppRequest'], 'output' => ['shape' => 'CreateAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateBackendEnvironment' => ['name' => 'CreateBackendEnvironment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/backendenvironments'], 'input' => ['shape' => 'CreateBackendEnvironmentRequest'], 'output' => ['shape' => 'CreateBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'CreateBranch' => ['name' => 'CreateBranch', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches'], 'input' => ['shape' => 'CreateBranchRequest'], 'output' => ['shape' => 'CreateBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateDeployment' => ['name' => 'CreateDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/deployments'], 'input' => ['shape' => 'CreateDeploymentRequest'], 'output' => ['shape' => 'CreateDeploymentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'CreateDomainAssociation' => ['name' => 'CreateDomainAssociation', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/domains'], 'input' => ['shape' => 'CreateDomainAssociationRequest'], 'output' => ['shape' => 'CreateDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'CreateWebhook' => ['name' => 'CreateWebhook', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/webhooks'], 'input' => ['shape' => 'CreateWebhookRequest'], 'output' => ['shape' => 'CreateWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteApp' => ['name' => 'DeleteApp', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'DeleteAppRequest'], 'output' => ['shape' => 'DeleteAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteBackendEnvironment' => ['name' => 'DeleteBackendEnvironment', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/backendenvironments/{environmentName}'], 'input' => ['shape' => 'DeleteBackendEnvironmentRequest'], 'output' => ['shape' => 'DeleteBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteBranch' => ['name' => 'DeleteBranch', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'DeleteBranchRequest'], 'output' => ['shape' => 'DeleteBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteDomainAssociation' => ['name' => 'DeleteDomainAssociation', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'DeleteDomainAssociationRequest'], 'output' => ['shape' => 'DeleteDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'DeleteJob' => ['name' => 'DeleteJob', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}'], 'input' => ['shape' => 'DeleteJobRequest'], 'output' => ['shape' => 'DeleteJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'DeleteWebhook' => ['name' => 'DeleteWebhook', 'http' => ['method' => 'DELETE', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'DeleteWebhookRequest'], 'output' => ['shape' => 'DeleteWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GenerateAccessLogs' => ['name' => 'GenerateAccessLogs', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/accesslogs'], 'input' => ['shape' => 'GenerateAccessLogsRequest'], 'output' => ['shape' => 'GenerateAccessLogsResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'GetApp' => ['name' => 'GetApp', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'GetAppRequest'], 'output' => ['shape' => 'GetAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'GetArtifactUrl' => ['name' => 'GetArtifactUrl', 'http' => ['method' => 'GET', 'requestUri' => '/artifacts/{artifactId}'], 'input' => ['shape' => 'GetArtifactUrlRequest'], 'output' => ['shape' => 'GetArtifactUrlResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetBackendEnvironment' => ['name' => 'GetBackendEnvironment', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/backendenvironments/{environmentName}'], 'input' => ['shape' => 'GetBackendEnvironmentRequest'], 'output' => ['shape' => 'GetBackendEnvironmentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetBranch' => ['name' => 'GetBranch', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'GetBranchRequest'], 'output' => ['shape' => 'GetBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetDomainAssociation' => ['name' => 'GetDomainAssociation', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'GetDomainAssociationRequest'], 'output' => ['shape' => 'GetDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException']]], 'GetJob' => ['name' => 'GetJob', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}'], 'input' => ['shape' => 'GetJobRequest'], 'output' => ['shape' => 'GetJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetWebhook' => ['name' => 'GetWebhook', 'http' => ['method' => 'GET', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'GetWebhookRequest'], 'output' => ['shape' => 'GetWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'ListApps' => ['name' => 'ListApps', 'http' => ['method' => 'GET', 'requestUri' => '/apps'], 'input' => ['shape' => 'ListAppsRequest'], 'output' => ['shape' => 'ListAppsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListArtifacts' => ['name' => 'ListArtifacts', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}/artifacts'], 'input' => ['shape' => 'ListArtifactsRequest'], 'output' => ['shape' => 'ListArtifactsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'ListBackendEnvironments' => ['name' => 'ListBackendEnvironments', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/backendenvironments'], 'input' => ['shape' => 'ListBackendEnvironmentsRequest'], 'output' => ['shape' => 'ListBackendEnvironmentsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListBranches' => ['name' => 'ListBranches', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches'], 'input' => ['shape' => 'ListBranchesRequest'], 'output' => ['shape' => 'ListBranchesResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListDomainAssociations' => ['name' => 'ListDomainAssociations', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/domains'], 'input' => ['shape' => 'ListDomainAssociationsRequest'], 'output' => ['shape' => 'ListDomainAssociationsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'ListJobs' => ['name' => 'ListJobs', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs'], 'input' => ['shape' => 'ListJobsRequest'], 'output' => ['shape' => 'ListJobsResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'ListTagsForResource' => ['name' => 'ListTagsForResource', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'ListTagsForResourceRequest'], 'output' => ['shape' => 'ListTagsForResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'ListWebhooks' => ['name' => 'ListWebhooks', 'http' => ['method' => 'GET', 'requestUri' => '/apps/{appId}/webhooks'], 'input' => ['shape' => 'ListWebhooksRequest'], 'output' => ['shape' => 'ListWebhooksResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'LimitExceededException']]], 'StartDeployment' => ['name' => 'StartDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/deployments/start'], 'input' => ['shape' => 'StartDeploymentRequest'], 'output' => ['shape' => 'StartDeploymentResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'StartJob' => ['name' => 'StartJob', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs'], 'input' => ['shape' => 'StartJobRequest'], 'output' => ['shape' => 'StartJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'StopJob' => ['name' => 'StopJob', 'http' => ['method' => 'DELETE', 'requestUri' => '/apps/{appId}/branches/{branchName}/jobs/{jobId}/stop'], 'input' => ['shape' => 'StopJobRequest'], 'output' => ['shape' => 'StopJobResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resourceArn}'], 'input' => ['shape' => 'UntagResourceRequest'], 'output' => ['shape' => 'UntagResourceResponse'], 'errors' => [['shape' => 'InternalFailureException'], ['shape' => 'BadRequestException'], ['shape' => 'ResourceNotFoundException']]], 'UpdateApp' => ['name' => 'UpdateApp', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}'], 'input' => ['shape' => 'UpdateAppRequest'], 'output' => ['shape' => 'UpdateAppResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'UnauthorizedException'], ['shape' => 'InternalFailureException']]], 'UpdateBranch' => ['name' => 'UpdateBranch', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/branches/{branchName}'], 'input' => ['shape' => 'UpdateBranchRequest'], 'output' => ['shape' => 'UpdateBranchResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'UpdateDomainAssociation' => ['name' => 'UpdateDomainAssociation', 'http' => ['method' => 'POST', 'requestUri' => '/apps/{appId}/domains/{domainName}'], 'input' => ['shape' => 'UpdateDomainAssociationRequest'], 'output' => ['shape' => 'UpdateDomainAssociationResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]], 'UpdateWebhook' => ['name' => 'UpdateWebhook', 'http' => ['method' => 'POST', 'requestUri' => '/webhooks/{webhookId}'], 'input' => ['shape' => 'UpdateWebhookRequest'], 'output' => ['shape' => 'UpdateWebhookResult'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'InternalFailureException'], ['shape' => 'DependentServiceFailureException']]]], 'shapes' => ['AccessToken' => ['type' => 'string', 'max' => 255, 'min' => 1, 'sensitive' => \true], 'ActiveJobId' => ['type' => 'string', 'max' => 1000], 'App' => ['type' => 'structure', 'required' => ['appId', 'appArn', 'name', 'description', 'repository', 'platform', 'createTime', 'updateTime', 'environmentVariables', 'defaultDomain', 'enableBranchAutoBuild', 'enableBasicAuth'], 'members' => ['appId' => ['shape' => 'AppId'], 'appArn' => ['shape' => 'AppArn'], 'name' => ['shape' => 'Name'], 'tags' => ['shape' => 'TagMap'], 'description' => ['shape' => 'Description'], 'repository' => ['shape' => 'Repository'], 'platform' => ['shape' => 'Platform'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'defaultDomain' => ['shape' => 'DefaultDomain'], 'enableBranchAutoBuild' => ['shape' => 'EnableBranchAutoBuild'], 'enableBranchAutoDeletion' => ['shape' => 'EnableBranchAutoDeletion'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'productionBranch' => ['shape' => 'ProductionBranch'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig']]], 'AppArn' => ['type' => 'string', 'max' => 1000], 'AppId' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Apps' => ['type' => 'list', 'member' => ['shape' => 'App']], 'Artifact' => ['type' => 'structure', 'required' => ['artifactFileName', 'artifactId'], 'members' => ['artifactFileName' => ['shape' => 'ArtifactFileName'], 'artifactId' => ['shape' => 'ArtifactId']]], 'ArtifactFileName' => ['type' => 'string', 'max' => 1000], 'ArtifactId' => ['type' => 'string', 'max' => 255], 'ArtifactUrl' => ['type' => 'string', 'max' => 1000], 'Artifacts' => ['type' => 'list', 'member' => ['shape' => 'Artifact']], 'ArtifactsUrl' => ['type' => 'string', 'max' => 1000], 'AssociatedResource' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'AssociatedResources' => ['type' => 'list', 'member' => ['shape' => 'AssociatedResource']], 'AutoBranchCreationConfig' => ['type' => 'structure', 'members' => ['stage' => ['shape' => 'Stage'], 'framework' => ['shape' => 'Framework'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName']]], 'AutoBranchCreationPattern' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'AutoBranchCreationPatterns' => ['type' => 'list', 'member' => ['shape' => 'AutoBranchCreationPattern']], 'AutoSubDomainCreationPattern' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'AutoSubDomainCreationPatterns' => ['type' => 'list', 'member' => ['shape' => 'AutoSubDomainCreationPattern']], 'AutoSubDomainIAMRole' => ['type' => 'string', 'max' => 1000, 'pattern' => '^$|^arn:aws:iam::\\d{12}:role.+'], 'BackendEnvironment' => ['type' => 'structure', 'required' => ['backendEnvironmentArn', 'environmentName', 'createTime', 'updateTime'], 'members' => ['backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn'], 'environmentName' => ['shape' => 'EnvironmentName'], 'stackName' => ['shape' => 'StackName'], 'deploymentArtifacts' => ['shape' => 'DeploymentArtifacts'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime']]], 'BackendEnvironmentArn' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'BackendEnvironments' => ['type' => 'list', 'member' => ['shape' => 'BackendEnvironment']], 'BadRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'BasicAuthCredentials' => ['type' => 'string', 'max' => 2000, 'sensitive' => \true], 'Branch' => ['type' => 'structure', 'required' => ['branchArn', 'branchName', 'description', 'stage', 'displayName', 'enableNotification', 'createTime', 'updateTime', 'environmentVariables', 'enableAutoBuild', 'customDomains', 'framework', 'activeJobId', 'totalNumberOfJobs', 'enableBasicAuth', 'ttl', 'enablePullRequestPreview'], 'members' => ['branchArn' => ['shape' => 'BranchArn'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'tags' => ['shape' => 'TagMap'], 'stage' => ['shape' => 'Stage'], 'displayName' => ['shape' => 'DisplayName'], 'enableNotification' => ['shape' => 'EnableNotification'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'customDomains' => ['shape' => 'CustomDomains'], 'framework' => ['shape' => 'Framework'], 'activeJobId' => ['shape' => 'ActiveJobId'], 'totalNumberOfJobs' => ['shape' => 'TotalNumberOfJobs'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'thumbnailUrl' => ['shape' => 'ThumbnailUrl'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'associatedResources' => ['shape' => 'AssociatedResources'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'destinationBranch' => ['shape' => 'BranchName'], 'sourceBranch' => ['shape' => 'BranchName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'BranchArn' => ['type' => 'string', 'max' => 1000], 'BranchName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Branches' => ['type' => 'list', 'member' => ['shape' => 'Branch'], 'max' => 255], 'BuildSpec' => ['type' => 'string', 'max' => 25000, 'min' => 1], 'CertificateVerificationDNSRecord' => ['type' => 'string', 'max' => 1000], 'Code' => ['type' => 'string'], 'CommitId' => ['type' => 'string', 'max' => 255], 'CommitMessage' => ['type' => 'string', 'max' => 10000], 'CommitTime' => ['type' => 'timestamp'], 'Condition' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'Context' => ['type' => 'string'], 'CreateAppRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'Name'], 'description' => ['shape' => 'Description'], 'repository' => ['shape' => 'Repository'], 'platform' => ['shape' => 'Platform'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'oauthToken' => ['shape' => 'OauthToken'], 'accessToken' => ['shape' => 'AccessToken'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableBranchAutoBuild' => ['shape' => 'EnableBranchAutoBuild'], 'enableBranchAutoDeletion' => ['shape' => 'EnableBranchAutoDeletion'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'tags' => ['shape' => 'TagMap'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig']]], 'CreateAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'CreateBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName'], 'stackName' => ['shape' => 'StackName'], 'deploymentArtifacts' => ['shape' => 'DeploymentArtifacts']]], 'CreateBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'CreateBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'stage' => ['shape' => 'Stage'], 'framework' => ['shape' => 'Framework'], 'enableNotification' => ['shape' => 'EnableNotification'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'tags' => ['shape' => 'TagMap'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'displayName' => ['shape' => 'DisplayName'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'CreateBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'CreateDeploymentRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'fileMap' => ['shape' => 'FileMap']]], 'CreateDeploymentResult' => ['type' => 'structure', 'required' => ['fileUploadUrls', 'zipUploadUrl'], 'members' => ['jobId' => ['shape' => 'JobId'], 'fileUploadUrls' => ['shape' => 'FileUploadUrls'], 'zipUploadUrl' => ['shape' => 'UploadUrl']]], 'CreateDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName', 'subDomainSettings'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'subDomainSettings' => ['shape' => 'SubDomainSettings'], 'autoSubDomainCreationPatterns' => ['shape' => 'AutoSubDomainCreationPatterns'], 'autoSubDomainIAMRole' => ['shape' => 'AutoSubDomainIAMRole']]], 'CreateDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'CreateTime' => ['type' => 'timestamp'], 'CreateWebhookRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description']]], 'CreateWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'CustomDomain' => ['type' => 'string', 'max' => 255], 'CustomDomains' => ['type' => 'list', 'member' => ['shape' => 'CustomDomain'], 'max' => 255], 'CustomRule' => ['type' => 'structure', 'required' => ['source', 'target'], 'members' => ['source' => ['shape' => 'Source'], 'target' => ['shape' => 'Target'], 'status' => ['shape' => 'Status'], 'condition' => ['shape' => 'Condition']]], 'CustomRules' => ['type' => 'list', 'member' => ['shape' => 'CustomRule']], 'DNSRecord' => ['type' => 'string', 'max' => 1000], 'DefaultDomain' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'DeleteAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'DeleteAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'DeleteBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName', 'location' => 'uri', 'locationName' => 'environmentName']]], 'DeleteBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'DeleteBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName']]], 'DeleteBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'DeleteDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName']]], 'DeleteDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'DeleteJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'DeleteJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'DeleteWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId']]], 'DeleteWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'DependentServiceFailureException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 503], 'exception' => \true], 'DeploymentArtifacts' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'Description' => ['type' => 'string', 'max' => 1000], 'DisplayName' => ['type' => 'string', 'max' => 255], 'DomainAssociation' => ['type' => 'structure', 'required' => ['domainAssociationArn', 'domainName', 'enableAutoSubDomain', 'domainStatus', 'statusReason', 'subDomains'], 'members' => ['domainAssociationArn' => ['shape' => 'DomainAssociationArn'], 'domainName' => ['shape' => 'DomainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'autoSubDomainCreationPatterns' => ['shape' => 'AutoSubDomainCreationPatterns'], 'autoSubDomainIAMRole' => ['shape' => 'AutoSubDomainIAMRole'], 'domainStatus' => ['shape' => 'DomainStatus'], 'statusReason' => ['shape' => 'StatusReason'], 'certificateVerificationDNSRecord' => ['shape' => 'CertificateVerificationDNSRecord'], 'subDomains' => ['shape' => 'SubDomains']]], 'DomainAssociationArn' => ['type' => 'string', 'max' => 1000], 'DomainAssociations' => ['type' => 'list', 'member' => ['shape' => 'DomainAssociation'], 'max' => 255], 'DomainName' => ['type' => 'string', 'max' => 255], 'DomainPrefix' => ['type' => 'string', 'max' => 255], 'DomainStatus' => ['type' => 'string', 'enum' => ['PENDING_VERIFICATION', 'IN_PROGRESS', 'AVAILABLE', 'PENDING_DEPLOYMENT', 'FAILED', 'CREATING', 'REQUESTING_CERTIFICATE', 'UPDATING']], 'EnableAutoBranchCreation' => ['type' => 'boolean'], 'EnableAutoBuild' => ['type' => 'boolean'], 'EnableAutoSubDomain' => ['type' => 'boolean'], 'EnableBasicAuth' => ['type' => 'boolean'], 'EnableBranchAutoBuild' => ['type' => 'boolean'], 'EnableBranchAutoDeletion' => ['type' => 'boolean'], 'EnableNotification' => ['type' => 'boolean'], 'EnablePullRequestPreview' => ['type' => 'boolean'], 'EndTime' => ['type' => 'timestamp'], 'EnvKey' => ['type' => 'string', 'max' => 255], 'EnvValue' => ['type' => 'string', 'max' => 1000], 'EnvironmentName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'EnvironmentVariables' => ['type' => 'map', 'key' => ['shape' => 'EnvKey'], 'value' => ['shape' => 'EnvValue']], 'ErrorMessage' => ['type' => 'string', 'max' => 255], 'FileMap' => ['type' => 'map', 'key' => ['shape' => 'FileName'], 'value' => ['shape' => 'MD5Hash']], 'FileName' => ['type' => 'string', 'max' => 255], 'FileUploadUrls' => ['type' => 'map', 'key' => ['shape' => 'FileName'], 'value' => ['shape' => 'UploadUrl']], 'Framework' => ['type' => 'string', 'max' => 255], 'GenerateAccessLogsRequest' => ['type' => 'structure', 'required' => ['domainName', 'appId'], 'members' => ['startTime' => ['shape' => 'StartTime'], 'endTime' => ['shape' => 'EndTime'], 'domainName' => ['shape' => 'DomainName'], 'appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'GenerateAccessLogsResult' => ['type' => 'structure', 'members' => ['logUrl' => ['shape' => 'LogUrl']]], 'GetAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId']]], 'GetAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'GetArtifactUrlRequest' => ['type' => 'structure', 'required' => ['artifactId'], 'members' => ['artifactId' => ['shape' => 'ArtifactId', 'location' => 'uri', 'locationName' => 'artifactId']]], 'GetArtifactUrlResult' => ['type' => 'structure', 'required' => ['artifactId', 'artifactUrl'], 'members' => ['artifactId' => ['shape' => 'ArtifactId'], 'artifactUrl' => ['shape' => 'ArtifactUrl']]], 'GetBackendEnvironmentRequest' => ['type' => 'structure', 'required' => ['appId', 'environmentName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName', 'location' => 'uri', 'locationName' => 'environmentName']]], 'GetBackendEnvironmentResult' => ['type' => 'structure', 'required' => ['backendEnvironment'], 'members' => ['backendEnvironment' => ['shape' => 'BackendEnvironment']]], 'GetBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName']]], 'GetBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'GetDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName']]], 'GetDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'GetJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'GetJobResult' => ['type' => 'structure', 'required' => ['job'], 'members' => ['job' => ['shape' => 'Job']]], 'GetWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId']]], 'GetWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'InternalFailureException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 500], 'exception' => \true, 'fault' => \true], 'Job' => ['type' => 'structure', 'required' => ['summary', 'steps'], 'members' => ['summary' => ['shape' => 'JobSummary'], 'steps' => ['shape' => 'Steps']]], 'JobArn' => ['type' => 'string', 'max' => 1000], 'JobId' => ['type' => 'string', 'max' => 255], 'JobReason' => ['type' => 'string', 'max' => 255], 'JobStatus' => ['type' => 'string', 'enum' => ['PENDING', 'PROVISIONING', 'RUNNING', 'FAILED', 'SUCCEED', 'CANCELLING', 'CANCELLED']], 'JobSummaries' => ['type' => 'list', 'member' => ['shape' => 'JobSummary']], 'JobSummary' => ['type' => 'structure', 'required' => ['jobArn', 'jobId', 'commitId', 'commitMessage', 'commitTime', 'startTime', 'status', 'jobType'], 'members' => ['jobArn' => ['shape' => 'JobArn'], 'jobId' => ['shape' => 'JobId'], 'commitId' => ['shape' => 'CommitId'], 'commitMessage' => ['shape' => 'CommitMessage'], 'commitTime' => ['shape' => 'CommitTime'], 'startTime' => ['shape' => 'StartTime'], 'status' => ['shape' => 'JobStatus'], 'endTime' => ['shape' => 'EndTime'], 'jobType' => ['shape' => 'JobType']]], 'JobType' => ['type' => 'string', 'enum' => ['RELEASE', 'RETRY', 'MANUAL', 'WEB_HOOK'], 'max' => 10], 'LastDeployTime' => ['type' => 'timestamp'], 'LimitExceededException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'ListAppsRequest' => ['type' => 'structure', 'members' => ['nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListAppsResult' => ['type' => 'structure', 'required' => ['apps'], 'members' => ['apps' => ['shape' => 'Apps'], 'nextToken' => ['shape' => 'NextToken']]], 'ListArtifactsRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListArtifactsResult' => ['type' => 'structure', 'required' => ['artifacts'], 'members' => ['artifacts' => ['shape' => 'Artifacts'], 'nextToken' => ['shape' => 'NextToken']]], 'ListBackendEnvironmentsRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'environmentName' => ['shape' => 'EnvironmentName', 'location' => 'querystring', 'locationName' => 'environmentName'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListBackendEnvironmentsResult' => ['type' => 'structure', 'required' => ['backendEnvironments'], 'members' => ['backendEnvironments' => ['shape' => 'BackendEnvironments'], 'nextToken' => ['shape' => 'NextToken']]], 'ListBranchesRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListBranchesResult' => ['type' => 'structure', 'required' => ['branches'], 'members' => ['branches' => ['shape' => 'Branches'], 'nextToken' => ['shape' => 'NextToken']]], 'ListDomainAssociationsRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListDomainAssociationsResult' => ['type' => 'structure', 'required' => ['domainAssociations'], 'members' => ['domainAssociations' => ['shape' => 'DomainAssociations'], 'nextToken' => ['shape' => 'NextToken']]], 'ListJobsRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListJobsResult' => ['type' => 'structure', 'required' => ['jobSummaries'], 'members' => ['jobSummaries' => ['shape' => 'JobSummaries'], 'nextToken' => ['shape' => 'NextToken']]], 'ListTagsForResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn']]], 'ListTagsForResourceResponse' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'TagMap']]], 'ListWebhooksRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'nextToken' => ['shape' => 'NextToken', 'location' => 'querystring', 'locationName' => 'nextToken'], 'maxResults' => ['shape' => 'MaxResults', 'location' => 'querystring', 'locationName' => 'maxResults']]], 'ListWebhooksResult' => ['type' => 'structure', 'required' => ['webhooks'], 'members' => ['webhooks' => ['shape' => 'Webhooks'], 'nextToken' => ['shape' => 'NextToken']]], 'LogUrl' => ['type' => 'string', 'max' => 1000], 'MD5Hash' => ['type' => 'string', 'max' => 32], 'MaxResults' => ['type' => 'integer', 'max' => 100, 'min' => 1], 'Name' => ['type' => 'string', 'max' => 255, 'min' => 1], 'NextToken' => ['type' => 'string', 'max' => 2000], 'NotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'OauthToken' => ['type' => 'string', 'max' => 100, 'sensitive' => \true], 'Platform' => ['type' => 'string', 'enum' => ['WEB']], 'ProductionBranch' => ['type' => 'structure', 'members' => ['lastDeployTime' => ['shape' => 'LastDeployTime'], 'status' => ['shape' => 'Status'], 'thumbnailUrl' => ['shape' => 'ThumbnailUrl'], 'branchName' => ['shape' => 'BranchName']]], 'PullRequestEnvironmentName' => ['type' => 'string', 'max' => 20], 'Repository' => ['type' => 'string', 'max' => 1000], 'ResourceArn' => ['type' => 'string', 'pattern' => '^arn:aws:amplify:.*'], 'ResourceNotFoundException' => ['type' => 'structure', 'required' => ['code', 'message'], 'members' => ['code' => ['shape' => 'Code'], 'message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'Screenshots' => ['type' => 'map', 'key' => ['shape' => 'ThumbnailName'], 'value' => ['shape' => 'ThumbnailUrl']], 'ServiceRoleArn' => ['type' => 'string', 'max' => 1000, 'min' => 1], 'Source' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'SourceUrl' => ['type' => 'string', 'max' => 1000], 'StackName' => ['type' => 'string', 'max' => 255, 'min' => 1], 'Stage' => ['type' => 'string', 'enum' => ['PRODUCTION', 'BETA', 'DEVELOPMENT', 'EXPERIMENTAL', 'PULL_REQUEST']], 'StartDeploymentRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId'], 'sourceUrl' => ['shape' => 'SourceUrl']]], 'StartDeploymentResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'StartJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobType'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId'], 'jobType' => ['shape' => 'JobType'], 'jobReason' => ['shape' => 'JobReason'], 'commitId' => ['shape' => 'CommitId'], 'commitMessage' => ['shape' => 'CommitMessage'], 'commitTime' => ['shape' => 'CommitTime']]], 'StartJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'StartTime' => ['type' => 'timestamp'], 'Status' => ['type' => 'string', 'max' => 7, 'min' => 3], 'StatusReason' => ['type' => 'string', 'max' => 1000], 'Step' => ['type' => 'structure', 'required' => ['stepName', 'startTime', 'status', 'endTime'], 'members' => ['stepName' => ['shape' => 'StepName'], 'startTime' => ['shape' => 'StartTime'], 'status' => ['shape' => 'JobStatus'], 'endTime' => ['shape' => 'EndTime'], 'logUrl' => ['shape' => 'LogUrl'], 'artifactsUrl' => ['shape' => 'ArtifactsUrl'], 'testArtifactsUrl' => ['shape' => 'TestArtifactsUrl'], 'testConfigUrl' => ['shape' => 'TestConfigUrl'], 'screenshots' => ['shape' => 'Screenshots'], 'statusReason' => ['shape' => 'StatusReason'], 'context' => ['shape' => 'Context']]], 'StepName' => ['type' => 'string', 'max' => 255], 'Steps' => ['type' => 'list', 'member' => ['shape' => 'Step']], 'StopJobRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName', 'jobId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'jobId' => ['shape' => 'JobId', 'location' => 'uri', 'locationName' => 'jobId']]], 'StopJobResult' => ['type' => 'structure', 'required' => ['jobSummary'], 'members' => ['jobSummary' => ['shape' => 'JobSummary']]], 'SubDomain' => ['type' => 'structure', 'required' => ['subDomainSetting', 'verified', 'dnsRecord'], 'members' => ['subDomainSetting' => ['shape' => 'SubDomainSetting'], 'verified' => ['shape' => 'Verified'], 'dnsRecord' => ['shape' => 'DNSRecord']]], 'SubDomainSetting' => ['type' => 'structure', 'required' => ['prefix', 'branchName'], 'members' => ['prefix' => ['shape' => 'DomainPrefix'], 'branchName' => ['shape' => 'BranchName']]], 'SubDomainSettings' => ['type' => 'list', 'member' => ['shape' => 'SubDomainSetting'], 'max' => 255], 'SubDomains' => ['type' => 'list', 'member' => ['shape' => 'SubDomain'], 'max' => 255], 'TTL' => ['type' => 'string'], 'TagKey' => ['type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^(?!aws:)[a-zA-Z+-=._:/]+$'], 'TagKeyList' => ['type' => 'list', 'member' => ['shape' => 'TagKey'], 'max' => 50, 'min' => 1], 'TagMap' => ['type' => 'map', 'key' => ['shape' => 'TagKey'], 'value' => ['shape' => 'TagValue'], 'max' => 50, 'min' => 1], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tags' => ['shape' => 'TagMap']]], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'TagValue' => ['type' => 'string', 'max' => 256], 'Target' => ['type' => 'string', 'max' => 2048, 'min' => 1], 'TestArtifactsUrl' => ['type' => 'string', 'max' => 1000], 'TestConfigUrl' => ['type' => 'string', 'max' => 1000], 'ThumbnailName' => ['type' => 'string', 'max' => 256], 'ThumbnailUrl' => ['type' => 'string', 'max' => 2000, 'min' => 1], 'TotalNumberOfJobs' => ['type' => 'string', 'max' => 1000], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'ErrorMessage']], 'error' => ['httpStatusCode' => 401], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'ResourceArn', 'location' => 'uri', 'locationName' => 'resourceArn'], 'tagKeys' => ['shape' => 'TagKeyList', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UntagResourceResponse' => ['type' => 'structure', 'members' => []], 'UpdateAppRequest' => ['type' => 'structure', 'required' => ['appId'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'name' => ['shape' => 'Name'], 'description' => ['shape' => 'Description'], 'platform' => ['shape' => 'Platform'], 'iamServiceRoleArn' => ['shape' => 'ServiceRoleArn'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'enableBranchAutoBuild' => ['shape' => 'EnableAutoBuild'], 'enableBranchAutoDeletion' => ['shape' => 'EnableBranchAutoDeletion'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'customRules' => ['shape' => 'CustomRules'], 'buildSpec' => ['shape' => 'BuildSpec'], 'enableAutoBranchCreation' => ['shape' => 'EnableAutoBranchCreation'], 'autoBranchCreationPatterns' => ['shape' => 'AutoBranchCreationPatterns'], 'autoBranchCreationConfig' => ['shape' => 'AutoBranchCreationConfig'], 'repository' => ['shape' => 'Repository'], 'oauthToken' => ['shape' => 'OauthToken'], 'accessToken' => ['shape' => 'AccessToken']]], 'UpdateAppResult' => ['type' => 'structure', 'required' => ['app'], 'members' => ['app' => ['shape' => 'App']]], 'UpdateBranchRequest' => ['type' => 'structure', 'required' => ['appId', 'branchName'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'branchName' => ['shape' => 'BranchName', 'location' => 'uri', 'locationName' => 'branchName'], 'description' => ['shape' => 'Description'], 'framework' => ['shape' => 'Framework'], 'stage' => ['shape' => 'Stage'], 'enableNotification' => ['shape' => 'EnableNotification'], 'enableAutoBuild' => ['shape' => 'EnableAutoBuild'], 'environmentVariables' => ['shape' => 'EnvironmentVariables'], 'basicAuthCredentials' => ['shape' => 'BasicAuthCredentials'], 'enableBasicAuth' => ['shape' => 'EnableBasicAuth'], 'buildSpec' => ['shape' => 'BuildSpec'], 'ttl' => ['shape' => 'TTL'], 'displayName' => ['shape' => 'DisplayName'], 'enablePullRequestPreview' => ['shape' => 'EnablePullRequestPreview'], 'pullRequestEnvironmentName' => ['shape' => 'PullRequestEnvironmentName'], 'backendEnvironmentArn' => ['shape' => 'BackendEnvironmentArn']]], 'UpdateBranchResult' => ['type' => 'structure', 'required' => ['branch'], 'members' => ['branch' => ['shape' => 'Branch']]], 'UpdateDomainAssociationRequest' => ['type' => 'structure', 'required' => ['appId', 'domainName', 'subDomainSettings'], 'members' => ['appId' => ['shape' => 'AppId', 'location' => 'uri', 'locationName' => 'appId'], 'domainName' => ['shape' => 'DomainName', 'location' => 'uri', 'locationName' => 'domainName'], 'enableAutoSubDomain' => ['shape' => 'EnableAutoSubDomain'], 'subDomainSettings' => ['shape' => 'SubDomainSettings'], 'autoSubDomainCreationPatterns' => ['shape' => 'AutoSubDomainCreationPatterns'], 'autoSubDomainIAMRole' => ['shape' => 'AutoSubDomainIAMRole']]], 'UpdateDomainAssociationResult' => ['type' => 'structure', 'required' => ['domainAssociation'], 'members' => ['domainAssociation' => ['shape' => 'DomainAssociation']]], 'UpdateTime' => ['type' => 'timestamp'], 'UpdateWebhookRequest' => ['type' => 'structure', 'required' => ['webhookId'], 'members' => ['webhookId' => ['shape' => 'WebhookId', 'location' => 'uri', 'locationName' => 'webhookId'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description']]], 'UpdateWebhookResult' => ['type' => 'structure', 'required' => ['webhook'], 'members' => ['webhook' => ['shape' => 'Webhook']]], 'UploadUrl' => ['type' => 'string', 'max' => 1000], 'Verified' => ['type' => 'boolean'], 'Webhook' => ['type' => 'structure', 'required' => ['webhookArn', 'webhookId', 'webhookUrl', 'branchName', 'description', 'createTime', 'updateTime'], 'members' => ['webhookArn' => ['shape' => 'WebhookArn'], 'webhookId' => ['shape' => 'WebhookId'], 'webhookUrl' => ['shape' => 'WebhookUrl'], 'branchName' => ['shape' => 'BranchName'], 'description' => ['shape' => 'Description'], 'createTime' => ['shape' => 'CreateTime'], 'updateTime' => ['shape' => 'UpdateTime']]], 'WebhookArn' => ['type' => 'string', 'max' => 1000], 'WebhookId' => ['type' => 'string', 'max' => 255], 'WebhookUrl' => ['type' => 'string', 'max' => 1000], 'Webhooks' => ['type' => 'list', 'member' => ['shape' => 'Webhook']]]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/apigateway/2015-07-09/api-2.json
|
4 |
-
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2015-07-09', 'endpointPrefix' => 'apigateway', 'protocol' => 'rest-json', 'serviceFullName' => 'Amazon API Gateway', 'serviceId' => 'API Gateway', 'signatureVersion' => 'v4', 'uid' => 'apigateway-2015-07-09'], 'operations' => ['CreateApiKey' => ['name' => 'CreateApiKey', 'http' => ['method' => 'POST', 'requestUri' => '/apikeys', 'responseCode' => 201], 'input' => ['shape' => 'CreateApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateAuthorizer' => ['name' => 'CreateAuthorizer', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/authorizers', 'responseCode' => 201], 'input' => ['shape' => 'CreateAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateBasePathMapping' => ['name' => 'CreateBasePathMapping', 'http' => ['method' => 'POST', 'requestUri' => '/domainnames/{domain_name}/basepathmappings', 'responseCode' => 201], 'input' => ['shape' => 'CreateBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'CreateDeployment' => ['name' => 'CreateDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/deployments', 'responseCode' => 201], 'input' => ['shape' => 'CreateDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'CreateDocumentationPart' => ['name' => 'CreateDocumentationPart', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/documentation/parts', 'responseCode' => 201], 'input' => ['shape' => 'CreateDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateDocumentationVersion' => ['name' => 'CreateDocumentationVersion', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/documentation/versions', 'responseCode' => 201], 'input' => ['shape' => 'CreateDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateDomainName' => ['name' => 'CreateDomainName', 'http' => ['method' => 'POST', 'requestUri' => '/domainnames', 'responseCode' => 201], 'input' => ['shape' => 'CreateDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'CreateModel' => ['name' => 'CreateModel', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/models', 'responseCode' => 201], 'input' => ['shape' => 'CreateModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateRequestValidator' => ['name' => 'CreateRequestValidator', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/requestvalidators', 'responseCode' => 201], 'input' => ['shape' => 'CreateRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateResource' => ['name' => 'CreateResource', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/resources/{parent_id}', 'responseCode' => 201], 'input' => ['shape' => 'CreateResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'CreateRestApi' => ['name' => 'CreateRestApi', 'http' => ['method' => 'POST', 'requestUri' => '/restapis', 'responseCode' => 201], 'input' => ['shape' => 'CreateRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'CreateStage' => ['name' => 'CreateStage', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/stages', 'responseCode' => 201], 'input' => ['shape' => 'CreateStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateUsagePlan' => ['name' => 'CreateUsagePlan', 'http' => ['method' => 'POST', 'requestUri' => '/usageplans', 'responseCode' => 201], 'input' => ['shape' => 'CreateUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException']]], 'CreateUsagePlanKey' => ['name' => 'CreateUsagePlanKey', 'http' => ['method' => 'POST', 'requestUri' => '/usageplans/{usageplanId}/keys', 'responseCode' => 201], 'input' => ['shape' => 'CreateUsagePlanKeyRequest'], 'output' => ['shape' => 'UsagePlanKey'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'CreateVpcLink' => ['name' => 'CreateVpcLink', 'http' => ['method' => 'POST', 'requestUri' => '/vpclinks', 'responseCode' => 202], 'input' => ['shape' => 'CreateVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteApiKey' => ['name' => 'DeleteApiKey', 'http' => ['method' => 'DELETE', 'requestUri' => '/apikeys/{api_Key}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteApiKeyRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteAuthorizer' => ['name' => 'DeleteAuthorizer', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteAuthorizerRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteBasePathMapping' => ['name' => 'DeleteBasePathMapping', 'http' => ['method' => 'DELETE', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteBasePathMappingRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteClientCertificate' => ['name' => 'DeleteClientCertificate', 'http' => ['method' => 'DELETE', 'requestUri' => '/clientcertificates/{clientcertificate_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteClientCertificateRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'DeleteDeployment' => ['name' => 'DeleteDeployment', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDeploymentRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDocumentationPart' => ['name' => 'DeleteDocumentationPart', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDocumentationPartRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException']]], 'DeleteDocumentationVersion' => ['name' => 'DeleteDocumentationVersion', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDocumentationVersionRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDomainName' => ['name' => 'DeleteDomainName', 'http' => ['method' => 'DELETE', 'requestUri' => '/domainnames/{domain_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDomainNameRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteGatewayResponse' => ['name' => 'DeleteGatewayResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteGatewayResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteIntegration' => ['name' => 'DeleteIntegration', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'DeleteIntegrationResponse' => ['name' => 'DeleteIntegrationResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteMethod' => ['name' => 'DeleteMethod', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteMethodRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'DeleteMethodResponse' => ['name' => 'DeleteMethodResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteMethodResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteModel' => ['name' => 'DeleteModel', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteModelRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteRequestValidator' => ['name' => 'DeleteRequestValidator', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteRequestValidatorRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteResource' => ['name' => 'DeleteResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteResourceRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRestApi' => ['name' => 'DeleteRestApi', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteRestApiRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteStage' => ['name' => 'DeleteStage', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteStageRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteUsagePlan' => ['name' => 'DeleteUsagePlan', 'http' => ['method' => 'DELETE', 'requestUri' => '/usageplans/{usageplanId}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteUsagePlanRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'DeleteUsagePlanKey' => ['name' => 'DeleteUsagePlanKey', 'http' => ['method' => 'DELETE', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteUsagePlanKeyRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteVpcLink' => ['name' => 'DeleteVpcLink', 'http' => ['method' => 'DELETE', 'requestUri' => '/vpclinks/{vpclink_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteVpcLinkRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'FlushStageAuthorizersCache' => ['name' => 'FlushStageAuthorizersCache', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers', 'responseCode' => 202], 'input' => ['shape' => 'FlushStageAuthorizersCacheRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'FlushStageCache' => ['name' => 'FlushStageCache', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/cache/data', 'responseCode' => 202], 'input' => ['shape' => 'FlushStageCacheRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'GenerateClientCertificate' => ['name' => 'GenerateClientCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/clientcertificates', 'responseCode' => 201], 'input' => ['shape' => 'GenerateClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException']]], 'GetAccount' => ['name' => 'GetAccount', 'http' => ['method' => 'GET', 'requestUri' => '/account'], 'input' => ['shape' => 'GetAccountRequest'], 'output' => ['shape' => 'Account'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApiKey' => ['name' => 'GetApiKey', 'http' => ['method' => 'GET', 'requestUri' => '/apikeys/{api_Key}'], 'input' => ['shape' => 'GetApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApiKeys' => ['name' => 'GetApiKeys', 'http' => ['method' => 'GET', 'requestUri' => '/apikeys'], 'input' => ['shape' => 'GetApiKeysRequest'], 'output' => ['shape' => 'ApiKeys'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetAuthorizer' => ['name' => 'GetAuthorizer', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'GetAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetAuthorizers' => ['name' => 'GetAuthorizers', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/authorizers'], 'input' => ['shape' => 'GetAuthorizersRequest'], 'output' => ['shape' => 'Authorizers'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetBasePathMapping' => ['name' => 'GetBasePathMapping', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}'], 'input' => ['shape' => 'GetBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetBasePathMappings' => ['name' => 'GetBasePathMappings', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}/basepathmappings'], 'input' => ['shape' => 'GetBasePathMappingsRequest'], 'output' => ['shape' => 'BasePathMappings'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetClientCertificate' => ['name' => 'GetClientCertificate', 'http' => ['method' => 'GET', 'requestUri' => '/clientcertificates/{clientcertificate_id}'], 'input' => ['shape' => 'GetClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetClientCertificates' => ['name' => 'GetClientCertificates', 'http' => ['method' => 'GET', 'requestUri' => '/clientcertificates'], 'input' => ['shape' => 'GetClientCertificatesRequest'], 'output' => ['shape' => 'ClientCertificates'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetDeployment' => ['name' => 'GetDeployment', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}'], 'input' => ['shape' => 'GetDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'GetDeployments' => ['name' => 'GetDeployments', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/deployments'], 'input' => ['shape' => 'GetDeploymentsRequest'], 'output' => ['shape' => 'Deployments'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'GetDocumentationPart' => ['name' => 'GetDocumentationPart', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}'], 'input' => ['shape' => 'GetDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationParts' => ['name' => 'GetDocumentationParts', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/parts'], 'input' => ['shape' => 'GetDocumentationPartsRequest'], 'output' => ['shape' => 'DocumentationParts'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationVersion' => ['name' => 'GetDocumentationVersion', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}'], 'input' => ['shape' => 'GetDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationVersions' => ['name' => 'GetDocumentationVersions', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/versions'], 'input' => ['shape' => 'GetDocumentationVersionsRequest'], 'output' => ['shape' => 'DocumentationVersions'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDomainName' => ['name' => 'GetDomainName', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}'], 'input' => ['shape' => 'GetDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ServiceUnavailableException'], ['shape' => 'TooManyRequestsException']]], 'GetDomainNames' => ['name' => 'GetDomainNames', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames'], 'input' => ['shape' => 'GetDomainNamesRequest'], 'output' => ['shape' => 'DomainNames'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetExport' => ['name' => 'GetExport', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}', 'responseCode' => 200], 'input' => ['shape' => 'GetExportRequest'], 'output' => ['shape' => 'ExportResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'GetGatewayResponse' => ['name' => 'GetGatewayResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}'], 'input' => ['shape' => 'GetGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetGatewayResponses' => ['name' => 'GetGatewayResponses', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses'], 'input' => ['shape' => 'GetGatewayResponsesRequest'], 'output' => ['shape' => 'GatewayResponses'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegration' => ['name' => 'GetIntegration', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration'], 'input' => ['shape' => 'GetIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegrationResponse' => ['name' => 'GetIntegrationResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}'], 'input' => ['shape' => 'GetIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetMethod' => ['name' => 'GetMethod', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'GetMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetMethodResponse' => ['name' => 'GetMethodResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}'], 'input' => ['shape' => 'GetMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModel' => ['name' => 'GetModel', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}'], 'input' => ['shape' => 'GetModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModelTemplate' => ['name' => 'GetModelTemplate', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}/default_template'], 'input' => ['shape' => 'GetModelTemplateRequest'], 'output' => ['shape' => 'Template'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'GetModels' => ['name' => 'GetModels', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models'], 'input' => ['shape' => 'GetModelsRequest'], 'output' => ['shape' => 'Models'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRequestValidator' => ['name' => 'GetRequestValidator', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}'], 'input' => ['shape' => 'GetRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRequestValidators' => ['name' => 'GetRequestValidators', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/requestvalidators'], 'input' => ['shape' => 'GetRequestValidatorsRequest'], 'output' => ['shape' => 'RequestValidators'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetResource' => ['name' => 'GetResource', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}'], 'input' => ['shape' => 'GetResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetResources' => ['name' => 'GetResources', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources'], 'input' => ['shape' => 'GetResourcesRequest'], 'output' => ['shape' => 'Resources'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRestApi' => ['name' => 'GetRestApi', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'GetRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRestApis' => ['name' => 'GetRestApis', 'http' => ['method' => 'GET', 'requestUri' => '/restapis'], 'input' => ['shape' => 'GetRestApisRequest'], 'output' => ['shape' => 'RestApis'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetSdk' => ['name' => 'GetSdk', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}', 'responseCode' => 200], 'input' => ['shape' => 'GetSdkRequest'], 'output' => ['shape' => 'SdkResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'GetSdkType' => ['name' => 'GetSdkType', 'http' => ['method' => 'GET', 'requestUri' => '/sdktypes/{sdktype_id}'], 'input' => ['shape' => 'GetSdkTypeRequest'], 'output' => ['shape' => 'SdkType'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetSdkTypes' => ['name' => 'GetSdkTypes', 'http' => ['method' => 'GET', 'requestUri' => '/sdktypes'], 'input' => ['shape' => 'GetSdkTypesRequest'], 'output' => ['shape' => 'SdkTypes'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetStage' => ['name' => 'GetStage', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}'], 'input' => ['shape' => 'GetStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetStages' => ['name' => 'GetStages', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages'], 'input' => ['shape' => 'GetStagesRequest'], 'output' => ['shape' => 'Stages'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetTags' => ['name' => 'GetTags', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resource_arn}'], 'input' => ['shape' => 'GetTagsRequest'], 'output' => ['shape' => 'Tags'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetUsage' => ['name' => 'GetUsage', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/usage'], 'input' => ['shape' => 'GetUsageRequest'], 'output' => ['shape' => 'Usage'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlan' => ['name' => 'GetUsagePlan', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}'], 'input' => ['shape' => 'GetUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlanKey' => ['name' => 'GetUsagePlanKey', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}', 'responseCode' => 200], 'input' => ['shape' => 'GetUsagePlanKeyRequest'], 'output' => ['shape' => 'UsagePlanKey'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlanKeys' => ['name' => 'GetUsagePlanKeys', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/keys'], 'input' => ['shape' => 'GetUsagePlanKeysRequest'], 'output' => ['shape' => 'UsagePlanKeys'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlans' => ['name' => 'GetUsagePlans', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans'], 'input' => ['shape' => 'GetUsagePlansRequest'], 'output' => ['shape' => 'UsagePlans'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException']]], 'GetVpcLink' => ['name' => 'GetVpcLink', 'http' => ['method' => 'GET', 'requestUri' => '/vpclinks/{vpclink_id}'], 'input' => ['shape' => 'GetVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetVpcLinks' => ['name' => 'GetVpcLinks', 'http' => ['method' => 'GET', 'requestUri' => '/vpclinks'], 'input' => ['shape' => 'GetVpcLinksRequest'], 'output' => ['shape' => 'VpcLinks'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'ImportApiKeys' => ['name' => 'ImportApiKeys', 'http' => ['method' => 'POST', 'requestUri' => '/apikeys?mode=import', 'responseCode' => 201], 'input' => ['shape' => 'ImportApiKeysRequest'], 'output' => ['shape' => 'ApiKeyIds'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'ImportDocumentationParts' => ['name' => 'ImportDocumentationParts', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/documentation/parts'], 'input' => ['shape' => 'ImportDocumentationPartsRequest'], 'output' => ['shape' => 'DocumentationPartIds'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'ImportRestApi' => ['name' => 'ImportRestApi', 'http' => ['method' => 'POST', 'requestUri' => '/restapis?mode=import', 'responseCode' => 201], 'input' => ['shape' => 'ImportRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'PutGatewayResponse' => ['name' => 'PutGatewayResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}', 'responseCode' => 201], 'input' => ['shape' => 'PutGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'PutIntegration' => ['name' => 'PutIntegration', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration', 'responseCode' => 201], 'input' => ['shape' => 'PutIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'PutIntegrationResponse' => ['name' => 'PutIntegrationResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'PutIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'PutMethod' => ['name' => 'PutMethod', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}', 'responseCode' => 201], 'input' => ['shape' => 'PutMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'PutMethodResponse' => ['name' => 'PutMethodResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'PutMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'PutRestApi' => ['name' => 'PutRestApi', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'PutRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'PUT', 'requestUri' => '/tags/{resource_arn}', 'responseCode' => 204], 'input' => ['shape' => 'TagResourceRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConflictException']]], 'TestInvokeAuthorizer' => ['name' => 'TestInvokeAuthorizer', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'TestInvokeAuthorizerRequest'], 'output' => ['shape' => 'TestInvokeAuthorizerResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'TestInvokeMethod' => ['name' => 'TestInvokeMethod', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'TestInvokeMethodRequest'], 'output' => ['shape' => 'TestInvokeMethodResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resource_arn}', 'responseCode' => 204], 'input' => ['shape' => 'UntagResourceRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException']]], 'UpdateAccount' => ['name' => 'UpdateAccount', 'http' => ['method' => 'PATCH', 'requestUri' => '/account'], 'input' => ['shape' => 'UpdateAccountRequest'], 'output' => ['shape' => 'Account'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'UpdateApiKey' => ['name' => 'UpdateApiKey', 'http' => ['method' => 'PATCH', 'requestUri' => '/apikeys/{api_Key}'], 'input' => ['shape' => 'UpdateApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'UpdateAuthorizer' => ['name' => 'UpdateAuthorizer', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'UpdateAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateBasePathMapping' => ['name' => 'UpdateBasePathMapping', 'http' => ['method' => 'PATCH', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}'], 'input' => ['shape' => 'UpdateBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateClientCertificate' => ['name' => 'UpdateClientCertificate', 'http' => ['method' => 'PATCH', 'requestUri' => '/clientcertificates/{clientcertificate_id}'], 'input' => ['shape' => 'UpdateClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'UpdateDeployment' => ['name' => 'UpdateDeployment', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}'], 'input' => ['shape' => 'UpdateDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'UpdateDocumentationPart' => ['name' => 'UpdateDocumentationPart', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}'], 'input' => ['shape' => 'UpdateDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'UpdateDocumentationVersion' => ['name' => 'UpdateDocumentationVersion', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}'], 'input' => ['shape' => 'UpdateDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateDomainName' => ['name' => 'UpdateDomainName', 'http' => ['method' => 'PATCH', 'requestUri' => '/domainnames/{domain_name}'], 'input' => ['shape' => 'UpdateDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateGatewayResponse' => ['name' => 'UpdateGatewayResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}'], 'input' => ['shape' => 'UpdateGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateIntegration' => ['name' => 'UpdateIntegration', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration'], 'input' => ['shape' => 'UpdateIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'UpdateIntegrationResponse' => ['name' => 'UpdateIntegrationResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}'], 'input' => ['shape' => 'UpdateIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateMethod' => ['name' => 'UpdateMethod', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'UpdateMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateMethodResponse' => ['name' => 'UpdateMethodResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'UpdateMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateModel' => ['name' => 'UpdateModel', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}'], 'input' => ['shape' => 'UpdateModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateRequestValidator' => ['name' => 'UpdateRequestValidator', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}'], 'input' => ['shape' => 'UpdateRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateResource' => ['name' => 'UpdateResource', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}'], 'input' => ['shape' => 'UpdateResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateRestApi' => ['name' => 'UpdateRestApi', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'UpdateRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateStage' => ['name' => 'UpdateStage', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}'], 'input' => ['shape' => 'UpdateStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateUsage' => ['name' => 'UpdateUsage', 'http' => ['method' => 'PATCH', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}/usage'], 'input' => ['shape' => 'UpdateUsageRequest'], 'output' => ['shape' => 'Usage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'UpdateUsagePlan' => ['name' => 'UpdateUsagePlan', 'http' => ['method' => 'PATCH', 'requestUri' => '/usageplans/{usageplanId}'], 'input' => ['shape' => 'UpdateUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException']]], 'UpdateVpcLink' => ['name' => 'UpdateVpcLink', 'http' => ['method' => 'PATCH', 'requestUri' => '/vpclinks/{vpclink_id}'], 'input' => ['shape' => 'UpdateVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]]], 'shapes' => ['AccessLogSettings' => ['type' => 'structure', 'members' => ['format' => ['shape' => 'String'], 'destinationArn' => ['shape' => 'String']]], 'Account' => ['type' => 'structure', 'members' => ['cloudwatchRoleArn' => ['shape' => 'String'], 'throttleSettings' => ['shape' => 'ThrottleSettings'], 'features' => ['shape' => 'ListOfString'], 'apiKeyVersion' => ['shape' => 'String']]], 'ApiKey' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'customerId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'enabled' => ['shape' => 'Boolean'], 'createdDate' => ['shape' => 'Timestamp'], 'lastUpdatedDate' => ['shape' => 'Timestamp'], 'stageKeys' => ['shape' => 'ListOfString'], 'tags' => ['shape' => 'MapOfStringToString']]], 'ApiKeyIds' => ['type' => 'structure', 'members' => ['ids' => ['shape' => 'ListOfString'], 'warnings' => ['shape' => 'ListOfString']]], 'ApiKeySourceType' => ['type' => 'string', 'enum' => ['HEADER', 'AUTHORIZER']], 'ApiKeys' => ['type' => 'structure', 'members' => ['warnings' => ['shape' => 'ListOfString'], 'position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfApiKey', 'locationName' => 'item']]], 'ApiKeysFormat' => ['type' => 'string', 'enum' => ['csv']], 'ApiStage' => ['type' => 'structure', 'members' => ['apiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String'], 'throttle' => ['shape' => 'MapOfApiStageThrottleSettings']]], 'Authorizer' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'type' => ['shape' => 'AuthorizerType'], 'providerARNs' => ['shape' => 'ListOfARNs'], 'authType' => ['shape' => 'String'], 'authorizerUri' => ['shape' => 'String'], 'authorizerCredentials' => ['shape' => 'String'], 'identitySource' => ['shape' => 'String'], 'identityValidationExpression' => ['shape' => 'String'], 'authorizerResultTtlInSeconds' => ['shape' => 'NullableInteger']]], 'AuthorizerType' => ['type' => 'string', 'enum' => ['TOKEN', 'REQUEST', 'COGNITO_USER_POOLS']], 'Authorizers' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfAuthorizer', 'locationName' => 'item']]], 'BadRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'BasePathMapping' => ['type' => 'structure', 'members' => ['basePath' => ['shape' => 'String'], 'restApiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String']]], 'BasePathMappings' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfBasePathMapping', 'locationName' => 'item']]], 'Blob' => ['type' => 'blob'], 'Boolean' => ['type' => 'boolean'], 'CacheClusterSize' => ['type' => 'string', 'enum' => ['0.5', '1.6', '6.1', '13.5', '28.4', '58.2', '118', '237']], 'CacheClusterStatus' => ['type' => 'string', 'enum' => ['CREATE_IN_PROGRESS', 'AVAILABLE', 'DELETE_IN_PROGRESS', 'NOT_AVAILABLE', 'FLUSH_IN_PROGRESS']], 'CanarySettings' => ['type' => 'structure', 'members' => ['percentTraffic' => ['shape' => 'Double'], 'deploymentId' => ['shape' => 'String'], 'stageVariableOverrides' => ['shape' => 'MapOfStringToString'], 'useStageCache' => ['shape' => 'Boolean']]], 'ClientCertificate' => ['type' => 'structure', 'members' => ['clientCertificateId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'pemEncodedCertificate' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'expirationDate' => ['shape' => 'Timestamp'], 'tags' => ['shape' => 'MapOfStringToString']]], 'ClientCertificates' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfClientCertificate', 'locationName' => 'item']]], 'ConflictException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 409], 'exception' => \true], 'ConnectionType' => ['type' => 'string', 'enum' => ['INTERNET', 'VPC_LINK']], 'ContentHandlingStrategy' => ['type' => 'string', 'enum' => ['CONVERT_TO_BINARY', 'CONVERT_TO_TEXT']], 'CreateApiKeyRequest' => ['type' => 'structure', 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'enabled' => ['shape' => 'Boolean'], 'generateDistinctId' => ['shape' => 'Boolean'], 'value' => ['shape' => 'String'], 'stageKeys' => ['shape' => 'ListOfStageKeys'], 'customerId' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'name', 'type'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'type' => ['shape' => 'AuthorizerType'], 'providerARNs' => ['shape' => 'ListOfARNs'], 'authType' => ['shape' => 'String'], 'authorizerUri' => ['shape' => 'String'], 'authorizerCredentials' => ['shape' => 'String'], 'identitySource' => ['shape' => 'String'], 'identityValidationExpression' => ['shape' => 'String'], 'authorizerResultTtlInSeconds' => ['shape' => 'NullableInteger']]], 'CreateBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'restApiId'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String'], 'restApiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String']]], 'CreateDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String'], 'stageDescription' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'NullableBoolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'variables' => ['shape' => 'MapOfStringToString'], 'canarySettings' => ['shape' => 'DeploymentCanarySettings'], 'tracingEnabled' => ['shape' => 'NullableBoolean']]], 'CreateDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'location', 'properties'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'location' => ['shape' => 'DocumentationPartLocation'], 'properties' => ['shape' => 'String']]], 'CreateDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String'], 'stageName' => ['shape' => 'String'], 'description' => ['shape' => 'String']]], 'CreateDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String'], 'certificateName' => ['shape' => 'String'], 'certificateBody' => ['shape' => 'String'], 'certificatePrivateKey' => ['shape' => 'String'], 'certificateChain' => ['shape' => 'String'], 'certificateArn' => ['shape' => 'String'], 'regionalCertificateName' => ['shape' => 'String'], 'regionalCertificateArn' => ['shape' => 'String'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'tags' => ['shape' => 'MapOfStringToString'], 'securityPolicy' => ['shape' => 'SecurityPolicy']]], 'CreateModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'name', 'contentType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'schema' => ['shape' => 'String'], 'contentType' => ['shape' => 'String']]], 'CreateRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'validateRequestBody' => ['shape' => 'Boolean'], 'validateRequestParameters' => ['shape' => 'Boolean']]], 'CreateResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'parentId', 'pathPart'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'parentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'parent_id'], 'pathPart' => ['shape' => 'String']]], 'CreateRestApiRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'version' => ['shape' => 'String'], 'cloneFrom' => ['shape' => 'String'], 'binaryMediaTypes' => ['shape' => 'ListOfString'], 'minimumCompressionSize' => ['shape' => 'NullableInteger'], 'apiKeySource' => ['shape' => 'ApiKeySourceType'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'policy' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String'], 'deploymentId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'Boolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'variables' => ['shape' => 'MapOfStringToString'], 'documentationVersion' => ['shape' => 'String'], 'canarySettings' => ['shape' => 'CanarySettings'], 'tracingEnabled' => ['shape' => 'Boolean'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId', 'keyType'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String'], 'keyType' => ['shape' => 'String']]], 'CreateUsagePlanRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'apiStages' => ['shape' => 'ListOfApiStage'], 'throttle' => ['shape' => 'ThrottleSettings'], 'quota' => ['shape' => 'QuotaSettings'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateVpcLinkRequest' => ['type' => 'structure', 'required' => ['name', 'targetArns'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'targetArns' => ['shape' => 'ListOfString'], 'tags' => ['shape' => 'MapOfStringToString']]], 'DeleteApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key']]], 'DeleteAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id']]], 'DeleteBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path']]], 'DeleteClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id']]], 'DeleteDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id']]], 'DeleteDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id']]], 'DeleteDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version']]], 'DeleteDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name']]], 'DeleteGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type']]], 'DeleteIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'DeleteIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'DeleteMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'DeleteMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'DeleteModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name']]], 'DeleteRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id']]], 'DeleteResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id']]], 'DeleteRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id']]], 'DeleteStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'DeleteUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId']]], 'DeleteUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId']]], 'DeleteVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id']]], 'Deployment' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'apiSummary' => ['shape' => 'PathToMapOfMethodSnapshot']]], 'DeploymentCanarySettings' => ['type' => 'structure', 'members' => ['percentTraffic' => ['shape' => 'Double'], 'stageVariableOverrides' => ['shape' => 'MapOfStringToString'], 'useStageCache' => ['shape' => 'Boolean']]], 'Deployments' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDeployment', 'locationName' => 'item']]], 'DocumentationPart' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'location' => ['shape' => 'DocumentationPartLocation'], 'properties' => ['shape' => 'String']]], 'DocumentationPartIds' => ['type' => 'structure', 'members' => ['ids' => ['shape' => 'ListOfString'], 'warnings' => ['shape' => 'ListOfString']]], 'DocumentationPartLocation' => ['type' => 'structure', 'required' => ['type'], 'members' => ['type' => ['shape' => 'DocumentationPartType'], 'path' => ['shape' => 'String'], 'method' => ['shape' => 'String'], 'statusCode' => ['shape' => 'DocumentationPartLocationStatusCode'], 'name' => ['shape' => 'String']]], 'DocumentationPartLocationStatusCode' => ['type' => 'string', 'pattern' => '^([1-5]\\d\\d|\\*|\\s*)$'], 'DocumentationPartType' => ['type' => 'string', 'enum' => ['API', 'AUTHORIZER', 'MODEL', 'RESOURCE', 'METHOD', 'PATH_PARAMETER', 'QUERY_PARAMETER', 'REQUEST_HEADER', 'REQUEST_BODY', 'RESPONSE', 'RESPONSE_HEADER', 'RESPONSE_BODY']], 'DocumentationParts' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDocumentationPart', 'locationName' => 'item']]], 'DocumentationVersion' => ['type' => 'structure', 'members' => ['version' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'description' => ['shape' => 'String']]], 'DocumentationVersions' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDocumentationVersion', 'locationName' => 'item']]], 'DomainName' => ['type' => 'structure', 'members' => ['domainName' => ['shape' => 'String'], 'certificateName' => ['shape' => 'String'], 'certificateArn' => ['shape' => 'String'], 'certificateUploadDate' => ['shape' => 'Timestamp'], 'regionalDomainName' => ['shape' => 'String'], 'regionalHostedZoneId' => ['shape' => 'String'], 'regionalCertificateName' => ['shape' => 'String'], 'regionalCertificateArn' => ['shape' => 'String'], 'distributionDomainName' => ['shape' => 'String'], 'distributionHostedZoneId' => ['shape' => 'String'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'domainNameStatus' => ['shape' => 'DomainNameStatus'], 'domainNameStatusMessage' => ['shape' => 'String'], 'securityPolicy' => ['shape' => 'SecurityPolicy'], 'tags' => ['shape' => 'MapOfStringToString']]], 'DomainNameStatus' => ['type' => 'string', 'enum' => ['AVAILABLE', 'UPDATING', 'PENDING']], 'DomainNames' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDomainName', 'locationName' => 'item']]], 'Double' => ['type' => 'double'], 'EndpointConfiguration' => ['type' => 'structure', 'members' => ['types' => ['shape' => 'ListOfEndpointType'], 'vpcEndpointIds' => ['shape' => 'ListOfString']]], 'EndpointType' => ['type' => 'string', 'enum' => ['REGIONAL', 'EDGE', 'PRIVATE']], 'ExportResponse' => ['type' => 'structure', 'members' => ['contentType' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Type'], 'contentDisposition' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Disposition'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'FlushStageAuthorizersCacheRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'FlushStageCacheRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'GatewayResponse' => ['type' => 'structure', 'members' => ['responseType' => ['shape' => 'GatewayResponseType'], 'statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'defaultResponse' => ['shape' => 'Boolean']]], 'GatewayResponseType' => ['type' => 'string', 'enum' => ['DEFAULT_4XX', 'DEFAULT_5XX', 'RESOURCE_NOT_FOUND', 'UNAUTHORIZED', 'INVALID_API_KEY', 'ACCESS_DENIED', 'AUTHORIZER_FAILURE', 'AUTHORIZER_CONFIGURATION_ERROR', 'INVALID_SIGNATURE', 'EXPIRED_TOKEN', 'MISSING_AUTHENTICATION_TOKEN', 'INTEGRATION_FAILURE', 'INTEGRATION_TIMEOUT', 'API_CONFIGURATION_ERROR', 'UNSUPPORTED_MEDIA_TYPE', 'BAD_REQUEST_PARAMETERS', 'BAD_REQUEST_BODY', 'REQUEST_TOO_LARGE', 'THROTTLED', 'QUOTA_EXCEEDED']], 'GatewayResponses' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfGatewayResponse', 'locationName' => 'item']]], 'GenerateClientCertificateRequest' => ['type' => 'structure', 'members' => ['description' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'GetAccountRequest' => ['type' => 'structure', 'members' => []], 'GetApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key'], 'includeValue' => ['shape' => 'NullableBoolean', 'location' => 'querystring', 'locationName' => 'includeValue']]], 'GetApiKeysRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name'], 'customerId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'customerId'], 'includeValues' => ['shape' => 'NullableBoolean', 'location' => 'querystring', 'locationName' => 'includeValues']]], 'GetAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id']]], 'GetAuthorizersRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path']]], 'GetBasePathMappingsRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id']]], 'GetClientCertificatesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetDeploymentsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id']]], 'GetDocumentationPartsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'type' => ['shape' => 'DocumentationPartType', 'location' => 'querystring', 'locationName' => 'type'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name'], 'path' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'path'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'locationStatus' => ['shape' => 'LocationStatusType', 'location' => 'querystring', 'locationName' => 'locationStatus']]], 'GetDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version']]], 'GetDocumentationVersionsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name']]], 'GetDomainNamesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetExportRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'exportType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'exportType' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'export_type'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'accepts' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Accept']]], 'GetGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type']]], 'GetGatewayResponsesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'GetIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'GetMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'GetMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'GetModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name'], 'flatten' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'flatten']]], 'GetModelTemplateRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name']]], 'GetModelsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id']]], 'GetRequestValidatorsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetResourcesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id']]], 'GetRestApisRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetSdkRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'sdkType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'sdkType' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'sdk_type'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring']]], 'GetSdkTypeRequest' => ['type' => 'structure', 'required' => ['id'], 'members' => ['id' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'sdktype_id']]], 'GetSdkTypesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'GetStagesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'deploymentId']]], 'GetTagsRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId']]], 'GetUsagePlanKeysRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name']]], 'GetUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId']]], 'GetUsagePlansRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'keyId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'keyId'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetUsageRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'startDate', 'endDate'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'keyId'], 'startDate' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'startDate'], 'endDate' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'endDate'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id']]], 'GetVpcLinksRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'ImportApiKeysRequest' => ['type' => 'structure', 'required' => ['body', 'format'], 'members' => ['body' => ['shape' => 'Blob'], 'format' => ['shape' => 'ApiKeysFormat', 'location' => 'querystring', 'locationName' => 'format'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings']], 'payload' => 'body'], 'ImportDocumentationPartsRequest' => ['type' => 'structure', 'required' => ['restApiId', 'body'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'mode' => ['shape' => 'PutMode', 'location' => 'querystring', 'locationName' => 'mode'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'ImportRestApiRequest' => ['type' => 'structure', 'required' => ['body'], 'members' => ['failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'Integer' => ['type' => 'integer'], 'Integration' => ['type' => 'structure', 'members' => ['type' => ['shape' => 'IntegrationType'], 'httpMethod' => ['shape' => 'String'], 'uri' => ['shape' => 'String'], 'connectionType' => ['shape' => 'ConnectionType'], 'connectionId' => ['shape' => 'String'], 'credentials' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToString'], 'requestTemplates' => ['shape' => 'MapOfStringToString'], 'passthroughBehavior' => ['shape' => 'String'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy'], 'timeoutInMillis' => ['shape' => 'Integer'], 'cacheNamespace' => ['shape' => 'String'], 'cacheKeyParameters' => ['shape' => 'ListOfString'], 'integrationResponses' => ['shape' => 'MapOfIntegrationResponse']]], 'IntegrationResponse' => ['type' => 'structure', 'members' => ['statusCode' => ['shape' => 'StatusCode'], 'selectionPattern' => ['shape' => 'String'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy']]], 'IntegrationType' => ['type' => 'string', 'enum' => ['HTTP', 'AWS', 'MOCK', 'HTTP_PROXY', 'AWS_PROXY']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'ListOfARNs' => ['type' => 'list', 'member' => ['shape' => 'ProviderARN']], 'ListOfApiKey' => ['type' => 'list', 'member' => ['shape' => 'ApiKey']], 'ListOfApiStage' => ['type' => 'list', 'member' => ['shape' => 'ApiStage']], 'ListOfAuthorizer' => ['type' => 'list', 'member' => ['shape' => 'Authorizer']], 'ListOfBasePathMapping' => ['type' => 'list', 'member' => ['shape' => 'BasePathMapping']], 'ListOfClientCertificate' => ['type' => 'list', 'member' => ['shape' => 'ClientCertificate']], 'ListOfDeployment' => ['type' => 'list', 'member' => ['shape' => 'Deployment']], 'ListOfDocumentationPart' => ['type' => 'list', 'member' => ['shape' => 'DocumentationPart']], 'ListOfDocumentationVersion' => ['type' => 'list', 'member' => ['shape' => 'DocumentationVersion']], 'ListOfDomainName' => ['type' => 'list', 'member' => ['shape' => 'DomainName']], 'ListOfEndpointType' => ['type' => 'list', 'member' => ['shape' => 'EndpointType']], 'ListOfGatewayResponse' => ['type' => 'list', 'member' => ['shape' => 'GatewayResponse']], 'ListOfLong' => ['type' => 'list', 'member' => ['shape' => 'Long']], 'ListOfModel' => ['type' => 'list', 'member' => ['shape' => 'Model']], 'ListOfPatchOperation' => ['type' => 'list', 'member' => ['shape' => 'PatchOperation']], 'ListOfRequestValidator' => ['type' => 'list', 'member' => ['shape' => 'RequestValidator']], 'ListOfResource' => ['type' => 'list', 'member' => ['shape' => 'Resource']], 'ListOfRestApi' => ['type' => 'list', 'member' => ['shape' => 'RestApi']], 'ListOfSdkConfigurationProperty' => ['type' => 'list', 'member' => ['shape' => 'SdkConfigurationProperty']], 'ListOfSdkType' => ['type' => 'list', 'member' => ['shape' => 'SdkType']], 'ListOfStage' => ['type' => 'list', 'member' => ['shape' => 'Stage']], 'ListOfStageKeys' => ['type' => 'list', 'member' => ['shape' => 'StageKey']], 'ListOfString' => ['type' => 'list', 'member' => ['shape' => 'String']], 'ListOfUsage' => ['type' => 'list', 'member' => ['shape' => 'ListOfLong']], 'ListOfUsagePlan' => ['type' => 'list', 'member' => ['shape' => 'UsagePlan']], 'ListOfUsagePlanKey' => ['type' => 'list', 'member' => ['shape' => 'UsagePlanKey']], 'ListOfVpcLink' => ['type' => 'list', 'member' => ['shape' => 'VpcLink']], 'LocationStatusType' => ['type' => 'string', 'enum' => ['DOCUMENTED', 'UNDOCUMENTED']], 'Long' => ['type' => 'long'], 'MapOfApiStageThrottleSettings' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ThrottleSettings']], 'MapOfIntegrationResponse' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'IntegrationResponse']], 'MapOfKeyUsages' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ListOfUsage']], 'MapOfMethod' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'Method']], 'MapOfMethodResponse' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodResponse']], 'MapOfMethodSettings' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodSetting']], 'MapOfMethodSnapshot' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodSnapshot']], 'MapOfStringToBoolean' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'NullableBoolean']], 'MapOfStringToList' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ListOfString']], 'MapOfStringToString' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'Method' => ['type' => 'structure', 'members' => ['httpMethod' => ['shape' => 'String'], 'authorizationType' => ['shape' => 'String'], 'authorizerId' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'NullableBoolean'], 'requestValidatorId' => ['shape' => 'String'], 'operationName' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToBoolean'], 'requestModels' => ['shape' => 'MapOfStringToString'], 'methodResponses' => ['shape' => 'MapOfMethodResponse'], 'methodIntegration' => ['shape' => 'Integration'], 'authorizationScopes' => ['shape' => 'ListOfString']]], 'MethodResponse' => ['type' => 'structure', 'members' => ['statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToBoolean'], 'responseModels' => ['shape' => 'MapOfStringToString']]], 'MethodSetting' => ['type' => 'structure', 'members' => ['metricsEnabled' => ['shape' => 'Boolean'], 'loggingLevel' => ['shape' => 'String'], 'dataTraceEnabled' => ['shape' => 'Boolean'], 'throttlingBurstLimit' => ['shape' => 'Integer'], 'throttlingRateLimit' => ['shape' => 'Double'], 'cachingEnabled' => ['shape' => 'Boolean'], 'cacheTtlInSeconds' => ['shape' => 'Integer'], 'cacheDataEncrypted' => ['shape' => 'Boolean'], 'requireAuthorizationForCacheControl' => ['shape' => 'Boolean'], 'unauthorizedCacheControlHeaderStrategy' => ['shape' => 'UnauthorizedCacheControlHeaderStrategy']]], 'MethodSnapshot' => ['type' => 'structure', 'members' => ['authorizationType' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'Boolean']]], 'Model' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'schema' => ['shape' => 'String'], 'contentType' => ['shape' => 'String']]], 'Models' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfModel', 'locationName' => 'item']]], 'NotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'NullableBoolean' => ['type' => 'boolean'], 'NullableInteger' => ['type' => 'integer'], 'Op' => ['type' => 'string', 'enum' => ['add', 'remove', 'replace', 'move', 'copy', 'test']], 'PatchOperation' => ['type' => 'structure', 'members' => ['op' => ['shape' => 'Op'], 'path' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'from' => ['shape' => 'String']]], 'PathToMapOfMethodSnapshot' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MapOfMethodSnapshot']], 'ProviderARN' => ['type' => 'string'], 'PutGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type'], 'statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString']]], 'PutIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'type'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'type' => ['shape' => 'IntegrationType'], 'integrationHttpMethod' => ['shape' => 'String', 'locationName' => 'httpMethod'], 'uri' => ['shape' => 'String'], 'connectionType' => ['shape' => 'ConnectionType'], 'connectionId' => ['shape' => 'String'], 'credentials' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToString'], 'requestTemplates' => ['shape' => 'MapOfStringToString'], 'passthroughBehavior' => ['shape' => 'String'], 'cacheNamespace' => ['shape' => 'String'], 'cacheKeyParameters' => ['shape' => 'ListOfString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy'], 'timeoutInMillis' => ['shape' => 'NullableInteger']]], 'PutIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'selectionPattern' => ['shape' => 'String'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy']]], 'PutMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'authorizationType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'authorizationType' => ['shape' => 'String'], 'authorizerId' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'Boolean'], 'operationName' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToBoolean'], 'requestModels' => ['shape' => 'MapOfStringToString'], 'requestValidatorId' => ['shape' => 'String'], 'authorizationScopes' => ['shape' => 'ListOfString']]], 'PutMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'responseParameters' => ['shape' => 'MapOfStringToBoolean'], 'responseModels' => ['shape' => 'MapOfStringToString']]], 'PutMode' => ['type' => 'string', 'enum' => ['merge', 'overwrite']], 'PutRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId', 'body'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'mode' => ['shape' => 'PutMode', 'location' => 'querystring', 'locationName' => 'mode'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'QuotaPeriodType' => ['type' => 'string', 'enum' => ['DAY', 'WEEK', 'MONTH']], 'QuotaSettings' => ['type' => 'structure', 'members' => ['limit' => ['shape' => 'Integer'], 'offset' => ['shape' => 'Integer'], 'period' => ['shape' => 'QuotaPeriodType']]], 'RequestValidator' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'validateRequestBody' => ['shape' => 'Boolean'], 'validateRequestParameters' => ['shape' => 'Boolean']]], 'RequestValidators' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfRequestValidator', 'locationName' => 'item']]], 'Resource' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'parentId' => ['shape' => 'String'], 'pathPart' => ['shape' => 'String'], 'path' => ['shape' => 'String'], 'resourceMethods' => ['shape' => 'MapOfMethod']]], 'Resources' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfResource', 'locationName' => 'item']]], 'RestApi' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'version' => ['shape' => 'String'], 'warnings' => ['shape' => 'ListOfString'], 'binaryMediaTypes' => ['shape' => 'ListOfString'], 'minimumCompressionSize' => ['shape' => 'NullableInteger'], 'apiKeySource' => ['shape' => 'ApiKeySourceType'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'policy' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'RestApis' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfRestApi', 'locationName' => 'item']]], 'SdkConfigurationProperty' => ['type' => 'structure', 'members' => ['name' => ['shape' => 'String'], 'friendlyName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'required' => ['shape' => 'Boolean'], 'defaultValue' => ['shape' => 'String']]], 'SdkResponse' => ['type' => 'structure', 'members' => ['contentType' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Type'], 'contentDisposition' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Disposition'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'SdkType' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'friendlyName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'configurationProperties' => ['shape' => 'ListOfSdkConfigurationProperty']]], 'SdkTypes' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfSdkType', 'locationName' => 'item']]], 'SecurityPolicy' => ['type' => 'string', 'enum' => ['TLS_1_0', 'TLS_1_2']], 'ServiceUnavailableException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 503], 'exception' => \true, 'fault' => \true], 'Stage' => ['type' => 'structure', 'members' => ['deploymentId' => ['shape' => 'String'], 'clientCertificateId' => ['shape' => 'String'], 'stageName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'Boolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'cacheClusterStatus' => ['shape' => 'CacheClusterStatus'], 'methodSettings' => ['shape' => 'MapOfMethodSettings'], 'variables' => ['shape' => 'MapOfStringToString'], 'documentationVersion' => ['shape' => 'String'], 'accessLogSettings' => ['shape' => 'AccessLogSettings'], 'canarySettings' => ['shape' => 'CanarySettings'], 'tracingEnabled' => ['shape' => 'Boolean'], 'webAclArn' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString'], 'createdDate' => ['shape' => 'Timestamp'], 'lastUpdatedDate' => ['shape' => 'Timestamp']]], 'StageKey' => ['type' => 'structure', 'members' => ['restApiId' => ['shape' => 'String'], 'stageName' => ['shape' => 'String']]], 'Stages' => ['type' => 'structure', 'members' => ['item' => ['shape' => 'ListOfStage']]], 'StatusCode' => ['type' => 'string', 'pattern' => '[1-5]\\d\\d'], 'String' => ['type' => 'string'], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'tags' => ['shape' => 'MapOfStringToString']]], 'Tags' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'MapOfStringToString']]], 'Template' => ['type' => 'structure', 'members' => ['value' => ['shape' => 'String']]], 'TestInvokeAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'pathWithQueryString' => ['shape' => 'String'], 'body' => ['shape' => 'String'], 'stageVariables' => ['shape' => 'MapOfStringToString'], 'additionalContext' => ['shape' => 'MapOfStringToString']]], 'TestInvokeAuthorizerResponse' => ['type' => 'structure', 'members' => ['clientStatus' => ['shape' => 'Integer'], 'log' => ['shape' => 'String'], 'latency' => ['shape' => 'Long'], 'principalId' => ['shape' => 'String'], 'policy' => ['shape' => 'String'], 'authorization' => ['shape' => 'MapOfStringToList'], 'claims' => ['shape' => 'MapOfStringToString']]], 'TestInvokeMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'pathWithQueryString' => ['shape' => 'String'], 'body' => ['shape' => 'String'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'clientCertificateId' => ['shape' => 'String'], 'stageVariables' => ['shape' => 'MapOfStringToString']]], 'TestInvokeMethodResponse' => ['type' => 'structure', 'members' => ['status' => ['shape' => 'Integer'], 'body' => ['shape' => 'String'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'log' => ['shape' => 'String'], 'latency' => ['shape' => 'Long']]], 'ThrottleSettings' => ['type' => 'structure', 'members' => ['burstLimit' => ['shape' => 'Integer'], 'rateLimit' => ['shape' => 'Double']]], 'Timestamp' => ['type' => 'timestamp'], 'TooManyRequestsException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'UnauthorizedCacheControlHeaderStrategy' => ['type' => 'string', 'enum' => ['FAIL_WITH_403', 'SUCCEED_WITH_RESPONSE_HEADER', 'SUCCEED_WITHOUT_RESPONSE_HEADER']], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 401], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'tagKeys' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UpdateAccountRequest' => ['type' => 'structure', 'members' => ['patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateUsageRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'Usage' => ['type' => 'structure', 'members' => ['usagePlanId' => ['shape' => 'String'], 'startDate' => ['shape' => 'String'], 'endDate' => ['shape' => 'String'], 'position' => ['shape' => 'String'], 'items' => ['shape' => 'MapOfKeyUsages', 'locationName' => 'values']]], 'UsagePlan' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'apiStages' => ['shape' => 'ListOfApiStage'], 'throttle' => ['shape' => 'ThrottleSettings'], 'quota' => ['shape' => 'QuotaSettings'], 'productCode' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'UsagePlanKey' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'type' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'name' => ['shape' => 'String']]], 'UsagePlanKeys' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfUsagePlanKey', 'locationName' => 'item']]], 'UsagePlans' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfUsagePlan', 'locationName' => 'item']]], 'VpcLink' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'targetArns' => ['shape' => 'ListOfString'], 'status' => ['shape' => 'VpcLinkStatus'], 'statusMessage' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'VpcLinkStatus' => ['type' => 'string', 'enum' => ['AVAILABLE', 'PENDING', 'DELETING', 'FAILED']], 'VpcLinks' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfVpcLink', 'locationName' => 'item']]]]];
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/apigateway/2015-07-09/api-2.json
|
4 |
+
return ['version' => '2.0', 'metadata' => ['apiVersion' => '2015-07-09', 'endpointPrefix' => 'apigateway', 'protocol' => 'rest-json', 'serviceFullName' => 'Amazon API Gateway', 'serviceId' => 'API Gateway', 'signatureVersion' => 'v4', 'uid' => 'apigateway-2015-07-09'], 'operations' => ['CreateApiKey' => ['name' => 'CreateApiKey', 'http' => ['method' => 'POST', 'requestUri' => '/apikeys', 'responseCode' => 201], 'input' => ['shape' => 'CreateApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateAuthorizer' => ['name' => 'CreateAuthorizer', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/authorizers', 'responseCode' => 201], 'input' => ['shape' => 'CreateAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateBasePathMapping' => ['name' => 'CreateBasePathMapping', 'http' => ['method' => 'POST', 'requestUri' => '/domainnames/{domain_name}/basepathmappings', 'responseCode' => 201], 'input' => ['shape' => 'CreateBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'CreateDeployment' => ['name' => 'CreateDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/deployments', 'responseCode' => 201], 'input' => ['shape' => 'CreateDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'CreateDocumentationPart' => ['name' => 'CreateDocumentationPart', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/documentation/parts', 'responseCode' => 201], 'input' => ['shape' => 'CreateDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateDocumentationVersion' => ['name' => 'CreateDocumentationVersion', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/documentation/versions', 'responseCode' => 201], 'input' => ['shape' => 'CreateDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateDomainName' => ['name' => 'CreateDomainName', 'http' => ['method' => 'POST', 'requestUri' => '/domainnames', 'responseCode' => 201], 'input' => ['shape' => 'CreateDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'CreateModel' => ['name' => 'CreateModel', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/models', 'responseCode' => 201], 'input' => ['shape' => 'CreateModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateRequestValidator' => ['name' => 'CreateRequestValidator', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/requestvalidators', 'responseCode' => 201], 'input' => ['shape' => 'CreateRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateResource' => ['name' => 'CreateResource', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/resources/{parent_id}', 'responseCode' => 201], 'input' => ['shape' => 'CreateResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'CreateRestApi' => ['name' => 'CreateRestApi', 'http' => ['method' => 'POST', 'requestUri' => '/restapis', 'responseCode' => 201], 'input' => ['shape' => 'CreateRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'CreateStage' => ['name' => 'CreateStage', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/stages', 'responseCode' => 201], 'input' => ['shape' => 'CreateStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'CreateUsagePlan' => ['name' => 'CreateUsagePlan', 'http' => ['method' => 'POST', 'requestUri' => '/usageplans', 'responseCode' => 201], 'input' => ['shape' => 'CreateUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException']]], 'CreateUsagePlanKey' => ['name' => 'CreateUsagePlanKey', 'http' => ['method' => 'POST', 'requestUri' => '/usageplans/{usageplanId}/keys', 'responseCode' => 201], 'input' => ['shape' => 'CreateUsagePlanKeyRequest'], 'output' => ['shape' => 'UsagePlanKey'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'CreateVpcLink' => ['name' => 'CreateVpcLink', 'http' => ['method' => 'POST', 'requestUri' => '/vpclinks', 'responseCode' => 202], 'input' => ['shape' => 'CreateVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteApiKey' => ['name' => 'DeleteApiKey', 'http' => ['method' => 'DELETE', 'requestUri' => '/apikeys/{api_Key}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteApiKeyRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteAuthorizer' => ['name' => 'DeleteAuthorizer', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteAuthorizerRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteBasePathMapping' => ['name' => 'DeleteBasePathMapping', 'http' => ['method' => 'DELETE', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteBasePathMappingRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteClientCertificate' => ['name' => 'DeleteClientCertificate', 'http' => ['method' => 'DELETE', 'requestUri' => '/clientcertificates/{clientcertificate_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteClientCertificateRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'DeleteDeployment' => ['name' => 'DeleteDeployment', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDeploymentRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDocumentationPart' => ['name' => 'DeleteDocumentationPart', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDocumentationPartRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException']]], 'DeleteDocumentationVersion' => ['name' => 'DeleteDocumentationVersion', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDocumentationVersionRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDomainName' => ['name' => 'DeleteDomainName', 'http' => ['method' => 'DELETE', 'requestUri' => '/domainnames/{domain_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteDomainNameRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteGatewayResponse' => ['name' => 'DeleteGatewayResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteGatewayResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteIntegration' => ['name' => 'DeleteIntegration', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'DeleteIntegrationResponse' => ['name' => 'DeleteIntegrationResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteMethod' => ['name' => 'DeleteMethod', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteMethodRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'DeleteMethodResponse' => ['name' => 'DeleteMethodResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteMethodResponseRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteModel' => ['name' => 'DeleteModel', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteModelRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteRequestValidator' => ['name' => 'DeleteRequestValidator', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteRequestValidatorRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'DeleteResource' => ['name' => 'DeleteResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteResourceRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRestApi' => ['name' => 'DeleteRestApi', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteRestApiRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteStage' => ['name' => 'DeleteStage', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteStageRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteUsagePlan' => ['name' => 'DeleteUsagePlan', 'http' => ['method' => 'DELETE', 'requestUri' => '/usageplans/{usageplanId}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteUsagePlanRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'DeleteUsagePlanKey' => ['name' => 'DeleteUsagePlanKey', 'http' => ['method' => 'DELETE', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteUsagePlanKeyRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteVpcLink' => ['name' => 'DeleteVpcLink', 'http' => ['method' => 'DELETE', 'requestUri' => '/vpclinks/{vpclink_id}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteVpcLinkRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'FlushStageAuthorizersCache' => ['name' => 'FlushStageAuthorizersCache', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers', 'responseCode' => 202], 'input' => ['shape' => 'FlushStageAuthorizersCacheRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'FlushStageCache' => ['name' => 'FlushStageCache', 'http' => ['method' => 'DELETE', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/cache/data', 'responseCode' => 202], 'input' => ['shape' => 'FlushStageCacheRequest'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'GenerateClientCertificate' => ['name' => 'GenerateClientCertificate', 'http' => ['method' => 'POST', 'requestUri' => '/clientcertificates', 'responseCode' => 201], 'input' => ['shape' => 'GenerateClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException']]], 'GetAccount' => ['name' => 'GetAccount', 'http' => ['method' => 'GET', 'requestUri' => '/account'], 'input' => ['shape' => 'GetAccountRequest'], 'output' => ['shape' => 'Account'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApiKey' => ['name' => 'GetApiKey', 'http' => ['method' => 'GET', 'requestUri' => '/apikeys/{api_Key}'], 'input' => ['shape' => 'GetApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApiKeys' => ['name' => 'GetApiKeys', 'http' => ['method' => 'GET', 'requestUri' => '/apikeys'], 'input' => ['shape' => 'GetApiKeysRequest'], 'output' => ['shape' => 'ApiKeys'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetAuthorizer' => ['name' => 'GetAuthorizer', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'GetAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetAuthorizers' => ['name' => 'GetAuthorizers', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/authorizers'], 'input' => ['shape' => 'GetAuthorizersRequest'], 'output' => ['shape' => 'Authorizers'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetBasePathMapping' => ['name' => 'GetBasePathMapping', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}'], 'input' => ['shape' => 'GetBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetBasePathMappings' => ['name' => 'GetBasePathMappings', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}/basepathmappings'], 'input' => ['shape' => 'GetBasePathMappingsRequest'], 'output' => ['shape' => 'BasePathMappings'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetClientCertificate' => ['name' => 'GetClientCertificate', 'http' => ['method' => 'GET', 'requestUri' => '/clientcertificates/{clientcertificate_id}'], 'input' => ['shape' => 'GetClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetClientCertificates' => ['name' => 'GetClientCertificates', 'http' => ['method' => 'GET', 'requestUri' => '/clientcertificates'], 'input' => ['shape' => 'GetClientCertificatesRequest'], 'output' => ['shape' => 'ClientCertificates'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetDeployment' => ['name' => 'GetDeployment', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}'], 'input' => ['shape' => 'GetDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'GetDeployments' => ['name' => 'GetDeployments', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/deployments'], 'input' => ['shape' => 'GetDeploymentsRequest'], 'output' => ['shape' => 'Deployments'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'GetDocumentationPart' => ['name' => 'GetDocumentationPart', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}'], 'input' => ['shape' => 'GetDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationParts' => ['name' => 'GetDocumentationParts', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/parts'], 'input' => ['shape' => 'GetDocumentationPartsRequest'], 'output' => ['shape' => 'DocumentationParts'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationVersion' => ['name' => 'GetDocumentationVersion', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}'], 'input' => ['shape' => 'GetDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDocumentationVersions' => ['name' => 'GetDocumentationVersions', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/documentation/versions'], 'input' => ['shape' => 'GetDocumentationVersionsRequest'], 'output' => ['shape' => 'DocumentationVersions'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDomainName' => ['name' => 'GetDomainName', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames/{domain_name}'], 'input' => ['shape' => 'GetDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ServiceUnavailableException'], ['shape' => 'TooManyRequestsException']]], 'GetDomainNames' => ['name' => 'GetDomainNames', 'http' => ['method' => 'GET', 'requestUri' => '/domainnames'], 'input' => ['shape' => 'GetDomainNamesRequest'], 'output' => ['shape' => 'DomainNames'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetExport' => ['name' => 'GetExport', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}', 'responseCode' => 200], 'input' => ['shape' => 'GetExportRequest'], 'output' => ['shape' => 'ExportResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'GetGatewayResponse' => ['name' => 'GetGatewayResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}'], 'input' => ['shape' => 'GetGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetGatewayResponses' => ['name' => 'GetGatewayResponses', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses'], 'input' => ['shape' => 'GetGatewayResponsesRequest'], 'output' => ['shape' => 'GatewayResponses'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegration' => ['name' => 'GetIntegration', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration'], 'input' => ['shape' => 'GetIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegrationResponse' => ['name' => 'GetIntegrationResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}'], 'input' => ['shape' => 'GetIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetMethod' => ['name' => 'GetMethod', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'GetMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetMethodResponse' => ['name' => 'GetMethodResponse', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}'], 'input' => ['shape' => 'GetMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModel' => ['name' => 'GetModel', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}'], 'input' => ['shape' => 'GetModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModelTemplate' => ['name' => 'GetModelTemplate', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}/default_template'], 'input' => ['shape' => 'GetModelTemplateRequest'], 'output' => ['shape' => 'Template'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'GetModels' => ['name' => 'GetModels', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/models'], 'input' => ['shape' => 'GetModelsRequest'], 'output' => ['shape' => 'Models'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRequestValidator' => ['name' => 'GetRequestValidator', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}'], 'input' => ['shape' => 'GetRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRequestValidators' => ['name' => 'GetRequestValidators', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/requestvalidators'], 'input' => ['shape' => 'GetRequestValidatorsRequest'], 'output' => ['shape' => 'RequestValidators'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetResource' => ['name' => 'GetResource', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}'], 'input' => ['shape' => 'GetResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetResources' => ['name' => 'GetResources', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/resources'], 'input' => ['shape' => 'GetResourcesRequest'], 'output' => ['shape' => 'Resources'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRestApi' => ['name' => 'GetRestApi', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'GetRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRestApis' => ['name' => 'GetRestApis', 'http' => ['method' => 'GET', 'requestUri' => '/restapis'], 'input' => ['shape' => 'GetRestApisRequest'], 'output' => ['shape' => 'RestApis'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetSdk' => ['name' => 'GetSdk', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}', 'responseCode' => 200], 'input' => ['shape' => 'GetSdkRequest'], 'output' => ['shape' => 'SdkResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'GetSdkType' => ['name' => 'GetSdkType', 'http' => ['method' => 'GET', 'requestUri' => '/sdktypes/{sdktype_id}'], 'input' => ['shape' => 'GetSdkTypeRequest'], 'output' => ['shape' => 'SdkType'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetSdkTypes' => ['name' => 'GetSdkTypes', 'http' => ['method' => 'GET', 'requestUri' => '/sdktypes'], 'input' => ['shape' => 'GetSdkTypesRequest'], 'output' => ['shape' => 'SdkTypes'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'GetStage' => ['name' => 'GetStage', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}'], 'input' => ['shape' => 'GetStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetStages' => ['name' => 'GetStages', 'http' => ['method' => 'GET', 'requestUri' => '/restapis/{restapi_id}/stages'], 'input' => ['shape' => 'GetStagesRequest'], 'output' => ['shape' => 'Stages'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetTags' => ['name' => 'GetTags', 'http' => ['method' => 'GET', 'requestUri' => '/tags/{resource_arn}'], 'input' => ['shape' => 'GetTagsRequest'], 'output' => ['shape' => 'Tags'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException']]], 'GetUsage' => ['name' => 'GetUsage', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/usage'], 'input' => ['shape' => 'GetUsageRequest'], 'output' => ['shape' => 'Usage'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlan' => ['name' => 'GetUsagePlan', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}'], 'input' => ['shape' => 'GetUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlanKey' => ['name' => 'GetUsagePlanKey', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}', 'responseCode' => 200], 'input' => ['shape' => 'GetUsagePlanKeyRequest'], 'output' => ['shape' => 'UsagePlanKey'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlanKeys' => ['name' => 'GetUsagePlanKeys', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans/{usageplanId}/keys'], 'input' => ['shape' => 'GetUsagePlanKeysRequest'], 'output' => ['shape' => 'UsagePlanKeys'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetUsagePlans' => ['name' => 'GetUsagePlans', 'http' => ['method' => 'GET', 'requestUri' => '/usageplans'], 'input' => ['shape' => 'GetUsagePlansRequest'], 'output' => ['shape' => 'UsagePlans'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException']]], 'GetVpcLink' => ['name' => 'GetVpcLink', 'http' => ['method' => 'GET', 'requestUri' => '/vpclinks/{vpclink_id}'], 'input' => ['shape' => 'GetVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetVpcLinks' => ['name' => 'GetVpcLinks', 'http' => ['method' => 'GET', 'requestUri' => '/vpclinks'], 'input' => ['shape' => 'GetVpcLinksRequest'], 'output' => ['shape' => 'VpcLinks'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException']]], 'ImportApiKeys' => ['name' => 'ImportApiKeys', 'http' => ['method' => 'POST', 'requestUri' => '/apikeys?mode=import', 'responseCode' => 201], 'input' => ['shape' => 'ImportApiKeysRequest'], 'output' => ['shape' => 'ApiKeyIds'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'ImportDocumentationParts' => ['name' => 'ImportDocumentationParts', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/documentation/parts'], 'input' => ['shape' => 'ImportDocumentationPartsRequest'], 'output' => ['shape' => 'DocumentationPartIds'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'ImportRestApi' => ['name' => 'ImportRestApi', 'http' => ['method' => 'POST', 'requestUri' => '/restapis?mode=import', 'responseCode' => 201], 'input' => ['shape' => 'ImportRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'PutGatewayResponse' => ['name' => 'PutGatewayResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}', 'responseCode' => 201], 'input' => ['shape' => 'PutGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'PutIntegration' => ['name' => 'PutIntegration', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration', 'responseCode' => 201], 'input' => ['shape' => 'PutIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'PutIntegrationResponse' => ['name' => 'PutIntegrationResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'PutIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'PutMethod' => ['name' => 'PutMethod', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}', 'responseCode' => 201], 'input' => ['shape' => 'PutMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'PutMethodResponse' => ['name' => 'PutMethodResponse', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'PutMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'PutRestApi' => ['name' => 'PutRestApi', 'http' => ['method' => 'PUT', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'PutRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'LimitExceededException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'PUT', 'requestUri' => '/tags/{resource_arn}', 'responseCode' => 204], 'input' => ['shape' => 'TagResourceRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'LimitExceededException'], ['shape' => 'ConflictException']]], 'TestInvokeAuthorizer' => ['name' => 'TestInvokeAuthorizer', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'TestInvokeAuthorizerRequest'], 'output' => ['shape' => 'TestInvokeAuthorizerResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'TestInvokeMethod' => ['name' => 'TestInvokeMethod', 'http' => ['method' => 'POST', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'TestInvokeMethodRequest'], 'output' => ['shape' => 'TestInvokeMethodResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/tags/{resource_arn}', 'responseCode' => 204], 'input' => ['shape' => 'UntagResourceRequest'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException']]], 'UpdateAccount' => ['name' => 'UpdateAccount', 'http' => ['method' => 'PATCH', 'requestUri' => '/account'], 'input' => ['shape' => 'UpdateAccountRequest'], 'output' => ['shape' => 'Account'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'UpdateApiKey' => ['name' => 'UpdateApiKey', 'http' => ['method' => 'PATCH', 'requestUri' => '/apikeys/{api_Key}'], 'input' => ['shape' => 'UpdateApiKeyRequest'], 'output' => ['shape' => 'ApiKey'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'UpdateAuthorizer' => ['name' => 'UpdateAuthorizer', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/authorizers/{authorizer_id}'], 'input' => ['shape' => 'UpdateAuthorizerRequest'], 'output' => ['shape' => 'Authorizer'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateBasePathMapping' => ['name' => 'UpdateBasePathMapping', 'http' => ['method' => 'PATCH', 'requestUri' => '/domainnames/{domain_name}/basepathmappings/{base_path}'], 'input' => ['shape' => 'UpdateBasePathMappingRequest'], 'output' => ['shape' => 'BasePathMapping'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateClientCertificate' => ['name' => 'UpdateClientCertificate', 'http' => ['method' => 'PATCH', 'requestUri' => '/clientcertificates/{clientcertificate_id}'], 'input' => ['shape' => 'UpdateClientCertificateRequest'], 'output' => ['shape' => 'ClientCertificate'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'UpdateDeployment' => ['name' => 'UpdateDeployment', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/deployments/{deployment_id}'], 'input' => ['shape' => 'UpdateDeploymentRequest'], 'output' => ['shape' => 'Deployment'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ServiceUnavailableException']]], 'UpdateDocumentationPart' => ['name' => 'UpdateDocumentationPart', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/documentation/parts/{part_id}'], 'input' => ['shape' => 'UpdateDocumentationPartRequest'], 'output' => ['shape' => 'DocumentationPart'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'TooManyRequestsException']]], 'UpdateDocumentationVersion' => ['name' => 'UpdateDocumentationVersion', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/documentation/versions/{doc_version}'], 'input' => ['shape' => 'UpdateDocumentationVersionRequest'], 'output' => ['shape' => 'DocumentationVersion'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateDomainName' => ['name' => 'UpdateDomainName', 'http' => ['method' => 'PATCH', 'requestUri' => '/domainnames/{domain_name}'], 'input' => ['shape' => 'UpdateDomainNameRequest'], 'output' => ['shape' => 'DomainName'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateGatewayResponse' => ['name' => 'UpdateGatewayResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/gatewayresponses/{response_type}'], 'input' => ['shape' => 'UpdateGatewayResponseRequest'], 'output' => ['shape' => 'GatewayResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateIntegration' => ['name' => 'UpdateIntegration', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration'], 'input' => ['shape' => 'UpdateIntegrationRequest'], 'output' => ['shape' => 'Integration'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'ConflictException']]], 'UpdateIntegrationResponse' => ['name' => 'UpdateIntegrationResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}'], 'input' => ['shape' => 'UpdateIntegrationResponseRequest'], 'output' => ['shape' => 'IntegrationResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateMethod' => ['name' => 'UpdateMethod', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}'], 'input' => ['shape' => 'UpdateMethodRequest'], 'output' => ['shape' => 'Method'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateMethodResponse' => ['name' => 'UpdateMethodResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}', 'responseCode' => 201], 'input' => ['shape' => 'UpdateMethodResponseRequest'], 'output' => ['shape' => 'MethodResponse'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'LimitExceededException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateModel' => ['name' => 'UpdateModel', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/models/{model_name}'], 'input' => ['shape' => 'UpdateModelRequest'], 'output' => ['shape' => 'Model'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]], 'UpdateRequestValidator' => ['name' => 'UpdateRequestValidator', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/requestvalidators/{requestvalidator_id}'], 'input' => ['shape' => 'UpdateRequestValidatorRequest'], 'output' => ['shape' => 'RequestValidator'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateResource' => ['name' => 'UpdateResource', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/resources/{resource_id}'], 'input' => ['shape' => 'UpdateResourceRequest'], 'output' => ['shape' => 'Resource'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateRestApi' => ['name' => 'UpdateRestApi', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}'], 'input' => ['shape' => 'UpdateRestApiRequest'], 'output' => ['shape' => 'RestApi'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateStage' => ['name' => 'UpdateStage', 'http' => ['method' => 'PATCH', 'requestUri' => '/restapis/{restapi_id}/stages/{stage_name}'], 'input' => ['shape' => 'UpdateStageRequest'], 'output' => ['shape' => 'Stage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException'], ['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'UpdateUsage' => ['name' => 'UpdateUsage', 'http' => ['method' => 'PATCH', 'requestUri' => '/usageplans/{usageplanId}/keys/{keyId}/usage'], 'input' => ['shape' => 'UpdateUsageRequest'], 'output' => ['shape' => 'Usage'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException']]], 'UpdateUsagePlan' => ['name' => 'UpdateUsagePlan', 'http' => ['method' => 'PATCH', 'requestUri' => '/usageplans/{usageplanId}'], 'input' => ['shape' => 'UpdateUsagePlanRequest'], 'output' => ['shape' => 'UsagePlan'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'NotFoundException'], ['shape' => 'ConflictException']]], 'UpdateVpcLink' => ['name' => 'UpdateVpcLink', 'http' => ['method' => 'PATCH', 'requestUri' => '/vpclinks/{vpclink_id}'], 'input' => ['shape' => 'UpdateVpcLinkRequest'], 'output' => ['shape' => 'VpcLink'], 'errors' => [['shape' => 'UnauthorizedException'], ['shape' => 'NotFoundException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'TooManyRequestsException']]]], 'shapes' => ['AccessLogSettings' => ['type' => 'structure', 'members' => ['format' => ['shape' => 'String'], 'destinationArn' => ['shape' => 'String']]], 'Account' => ['type' => 'structure', 'members' => ['cloudwatchRoleArn' => ['shape' => 'String'], 'throttleSettings' => ['shape' => 'ThrottleSettings'], 'features' => ['shape' => 'ListOfString'], 'apiKeyVersion' => ['shape' => 'String']]], 'ApiKey' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'customerId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'enabled' => ['shape' => 'Boolean'], 'createdDate' => ['shape' => 'Timestamp'], 'lastUpdatedDate' => ['shape' => 'Timestamp'], 'stageKeys' => ['shape' => 'ListOfString'], 'tags' => ['shape' => 'MapOfStringToString']]], 'ApiKeyIds' => ['type' => 'structure', 'members' => ['ids' => ['shape' => 'ListOfString'], 'warnings' => ['shape' => 'ListOfString']]], 'ApiKeySourceType' => ['type' => 'string', 'enum' => ['HEADER', 'AUTHORIZER']], 'ApiKeys' => ['type' => 'structure', 'members' => ['warnings' => ['shape' => 'ListOfString'], 'position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfApiKey', 'locationName' => 'item']]], 'ApiKeysFormat' => ['type' => 'string', 'enum' => ['csv']], 'ApiStage' => ['type' => 'structure', 'members' => ['apiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String'], 'throttle' => ['shape' => 'MapOfApiStageThrottleSettings']]], 'Authorizer' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'type' => ['shape' => 'AuthorizerType'], 'providerARNs' => ['shape' => 'ListOfARNs'], 'authType' => ['shape' => 'String'], 'authorizerUri' => ['shape' => 'String'], 'authorizerCredentials' => ['shape' => 'String'], 'identitySource' => ['shape' => 'String'], 'identityValidationExpression' => ['shape' => 'String'], 'authorizerResultTtlInSeconds' => ['shape' => 'NullableInteger']]], 'AuthorizerType' => ['type' => 'string', 'enum' => ['TOKEN', 'REQUEST', 'COGNITO_USER_POOLS']], 'Authorizers' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfAuthorizer', 'locationName' => 'item']]], 'BadRequestException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 400], 'exception' => \true], 'BasePathMapping' => ['type' => 'structure', 'members' => ['basePath' => ['shape' => 'String'], 'restApiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String']]], 'BasePathMappings' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfBasePathMapping', 'locationName' => 'item']]], 'Blob' => ['type' => 'blob'], 'Boolean' => ['type' => 'boolean'], 'CacheClusterSize' => ['type' => 'string', 'enum' => ['0.5', '1.6', '6.1', '13.5', '28.4', '58.2', '118', '237']], 'CacheClusterStatus' => ['type' => 'string', 'enum' => ['CREATE_IN_PROGRESS', 'AVAILABLE', 'DELETE_IN_PROGRESS', 'NOT_AVAILABLE', 'FLUSH_IN_PROGRESS']], 'CanarySettings' => ['type' => 'structure', 'members' => ['percentTraffic' => ['shape' => 'Double'], 'deploymentId' => ['shape' => 'String'], 'stageVariableOverrides' => ['shape' => 'MapOfStringToString'], 'useStageCache' => ['shape' => 'Boolean']]], 'ClientCertificate' => ['type' => 'structure', 'members' => ['clientCertificateId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'pemEncodedCertificate' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'expirationDate' => ['shape' => 'Timestamp'], 'tags' => ['shape' => 'MapOfStringToString']]], 'ClientCertificates' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfClientCertificate', 'locationName' => 'item']]], 'ConflictException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 409], 'exception' => \true], 'ConnectionType' => ['type' => 'string', 'enum' => ['INTERNET', 'VPC_LINK']], 'ContentHandlingStrategy' => ['type' => 'string', 'enum' => ['CONVERT_TO_BINARY', 'CONVERT_TO_TEXT']], 'CreateApiKeyRequest' => ['type' => 'structure', 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'enabled' => ['shape' => 'Boolean'], 'generateDistinctId' => ['shape' => 'Boolean'], 'value' => ['shape' => 'String'], 'stageKeys' => ['shape' => 'ListOfStageKeys'], 'customerId' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'name', 'type'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'type' => ['shape' => 'AuthorizerType'], 'providerARNs' => ['shape' => 'ListOfARNs'], 'authType' => ['shape' => 'String'], 'authorizerUri' => ['shape' => 'String'], 'authorizerCredentials' => ['shape' => 'String'], 'identitySource' => ['shape' => 'String'], 'identityValidationExpression' => ['shape' => 'String'], 'authorizerResultTtlInSeconds' => ['shape' => 'NullableInteger']]], 'CreateBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'restApiId'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String'], 'restApiId' => ['shape' => 'String'], 'stage' => ['shape' => 'String']]], 'CreateDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String'], 'stageDescription' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'NullableBoolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'variables' => ['shape' => 'MapOfStringToString'], 'canarySettings' => ['shape' => 'DeploymentCanarySettings'], 'tracingEnabled' => ['shape' => 'NullableBoolean']]], 'CreateDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'location', 'properties'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'location' => ['shape' => 'DocumentationPartLocation'], 'properties' => ['shape' => 'String']]], 'CreateDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String'], 'stageName' => ['shape' => 'String'], 'description' => ['shape' => 'String']]], 'CreateDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String'], 'certificateName' => ['shape' => 'String'], 'certificateBody' => ['shape' => 'String'], 'certificatePrivateKey' => ['shape' => 'String'], 'certificateChain' => ['shape' => 'String'], 'certificateArn' => ['shape' => 'String'], 'regionalCertificateName' => ['shape' => 'String'], 'regionalCertificateArn' => ['shape' => 'String'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'tags' => ['shape' => 'MapOfStringToString'], 'securityPolicy' => ['shape' => 'SecurityPolicy']]], 'CreateModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'name', 'contentType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'schema' => ['shape' => 'String'], 'contentType' => ['shape' => 'String']]], 'CreateRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'name' => ['shape' => 'String'], 'validateRequestBody' => ['shape' => 'Boolean'], 'validateRequestParameters' => ['shape' => 'Boolean']]], 'CreateResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'parentId', 'pathPart'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'parentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'parent_id'], 'pathPart' => ['shape' => 'String']]], 'CreateRestApiRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'version' => ['shape' => 'String'], 'cloneFrom' => ['shape' => 'String'], 'binaryMediaTypes' => ['shape' => 'ListOfString'], 'minimumCompressionSize' => ['shape' => 'NullableInteger'], 'apiKeySource' => ['shape' => 'ApiKeySourceType'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'policy' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String'], 'deploymentId' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'Boolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'variables' => ['shape' => 'MapOfStringToString'], 'documentationVersion' => ['shape' => 'String'], 'canarySettings' => ['shape' => 'CanarySettings'], 'tracingEnabled' => ['shape' => 'Boolean'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId', 'keyType'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String'], 'keyType' => ['shape' => 'String']]], 'CreateUsagePlanRequest' => ['type' => 'structure', 'required' => ['name'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'apiStages' => ['shape' => 'ListOfApiStage'], 'throttle' => ['shape' => 'ThrottleSettings'], 'quota' => ['shape' => 'QuotaSettings'], 'tags' => ['shape' => 'MapOfStringToString']]], 'CreateVpcLinkRequest' => ['type' => 'structure', 'required' => ['name', 'targetArns'], 'members' => ['name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'targetArns' => ['shape' => 'ListOfString'], 'tags' => ['shape' => 'MapOfStringToString']]], 'DeleteApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key']]], 'DeleteAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id']]], 'DeleteBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path']]], 'DeleteClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id']]], 'DeleteDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id']]], 'DeleteDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id']]], 'DeleteDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version']]], 'DeleteDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name']]], 'DeleteGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type']]], 'DeleteIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'DeleteIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'DeleteMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'DeleteMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'DeleteModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name']]], 'DeleteRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id']]], 'DeleteResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id']]], 'DeleteRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id']]], 'DeleteStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'DeleteUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId']]], 'DeleteUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId']]], 'DeleteVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id']]], 'Deployment' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'apiSummary' => ['shape' => 'PathToMapOfMethodSnapshot']]], 'DeploymentCanarySettings' => ['type' => 'structure', 'members' => ['percentTraffic' => ['shape' => 'Double'], 'stageVariableOverrides' => ['shape' => 'MapOfStringToString'], 'useStageCache' => ['shape' => 'Boolean']]], 'Deployments' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDeployment', 'locationName' => 'item']]], 'DocumentationPart' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'location' => ['shape' => 'DocumentationPartLocation'], 'properties' => ['shape' => 'String']]], 'DocumentationPartIds' => ['type' => 'structure', 'members' => ['ids' => ['shape' => 'ListOfString'], 'warnings' => ['shape' => 'ListOfString']]], 'DocumentationPartLocation' => ['type' => 'structure', 'required' => ['type'], 'members' => ['type' => ['shape' => 'DocumentationPartType'], 'path' => ['shape' => 'String'], 'method' => ['shape' => 'String'], 'statusCode' => ['shape' => 'DocumentationPartLocationStatusCode'], 'name' => ['shape' => 'String']]], 'DocumentationPartLocationStatusCode' => ['type' => 'string', 'pattern' => '^([1-5]\\d\\d|\\*|\\s*)$'], 'DocumentationPartType' => ['type' => 'string', 'enum' => ['API', 'AUTHORIZER', 'MODEL', 'RESOURCE', 'METHOD', 'PATH_PARAMETER', 'QUERY_PARAMETER', 'REQUEST_HEADER', 'REQUEST_BODY', 'RESPONSE', 'RESPONSE_HEADER', 'RESPONSE_BODY']], 'DocumentationParts' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDocumentationPart', 'locationName' => 'item']]], 'DocumentationVersion' => ['type' => 'structure', 'members' => ['version' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'description' => ['shape' => 'String']]], 'DocumentationVersions' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDocumentationVersion', 'locationName' => 'item']]], 'DomainName' => ['type' => 'structure', 'members' => ['domainName' => ['shape' => 'String'], 'certificateName' => ['shape' => 'String'], 'certificateArn' => ['shape' => 'String'], 'certificateUploadDate' => ['shape' => 'Timestamp'], 'regionalDomainName' => ['shape' => 'String'], 'regionalHostedZoneId' => ['shape' => 'String'], 'regionalCertificateName' => ['shape' => 'String'], 'regionalCertificateArn' => ['shape' => 'String'], 'distributionDomainName' => ['shape' => 'String'], 'distributionHostedZoneId' => ['shape' => 'String'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'domainNameStatus' => ['shape' => 'DomainNameStatus'], 'domainNameStatusMessage' => ['shape' => 'String'], 'securityPolicy' => ['shape' => 'SecurityPolicy'], 'tags' => ['shape' => 'MapOfStringToString']]], 'DomainNameStatus' => ['type' => 'string', 'enum' => ['AVAILABLE', 'UPDATING', 'PENDING']], 'DomainNames' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfDomainName', 'locationName' => 'item']]], 'Double' => ['type' => 'double'], 'EndpointConfiguration' => ['type' => 'structure', 'members' => ['types' => ['shape' => 'ListOfEndpointType'], 'vpcEndpointIds' => ['shape' => 'ListOfString']]], 'EndpointType' => ['type' => 'string', 'enum' => ['REGIONAL', 'EDGE', 'PRIVATE']], 'ExportResponse' => ['type' => 'structure', 'members' => ['contentType' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Type'], 'contentDisposition' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Disposition'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'FlushStageAuthorizersCacheRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'FlushStageCacheRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'GatewayResponse' => ['type' => 'structure', 'members' => ['responseType' => ['shape' => 'GatewayResponseType'], 'statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'defaultResponse' => ['shape' => 'Boolean']]], 'GatewayResponseType' => ['type' => 'string', 'enum' => ['DEFAULT_4XX', 'DEFAULT_5XX', 'RESOURCE_NOT_FOUND', 'UNAUTHORIZED', 'INVALID_API_KEY', 'ACCESS_DENIED', 'AUTHORIZER_FAILURE', 'AUTHORIZER_CONFIGURATION_ERROR', 'INVALID_SIGNATURE', 'EXPIRED_TOKEN', 'MISSING_AUTHENTICATION_TOKEN', 'INTEGRATION_FAILURE', 'INTEGRATION_TIMEOUT', 'API_CONFIGURATION_ERROR', 'UNSUPPORTED_MEDIA_TYPE', 'BAD_REQUEST_PARAMETERS', 'BAD_REQUEST_BODY', 'REQUEST_TOO_LARGE', 'THROTTLED', 'QUOTA_EXCEEDED']], 'GatewayResponses' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfGatewayResponse', 'locationName' => 'item']]], 'GenerateClientCertificateRequest' => ['type' => 'structure', 'members' => ['description' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'GetAccountRequest' => ['type' => 'structure', 'members' => []], 'GetApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key'], 'includeValue' => ['shape' => 'NullableBoolean', 'location' => 'querystring', 'locationName' => 'includeValue']]], 'GetApiKeysRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name'], 'customerId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'customerId'], 'includeValues' => ['shape' => 'NullableBoolean', 'location' => 'querystring', 'locationName' => 'includeValues']]], 'GetAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id']]], 'GetAuthorizersRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path']]], 'GetBasePathMappingsRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id']]], 'GetClientCertificatesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetDeploymentsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id']]], 'GetDocumentationPartsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'type' => ['shape' => 'DocumentationPartType', 'location' => 'querystring', 'locationName' => 'type'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name'], 'path' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'path'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'locationStatus' => ['shape' => 'LocationStatusType', 'location' => 'querystring', 'locationName' => 'locationStatus']]], 'GetDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version']]], 'GetDocumentationVersionsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name']]], 'GetDomainNamesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetExportRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'exportType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'exportType' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'export_type'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'accepts' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Accept']]], 'GetGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type']]], 'GetGatewayResponsesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'GetIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'GetMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method']]], 'GetMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code']]], 'GetModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name'], 'flatten' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'flatten']]], 'GetModelTemplateRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name']]], 'GetModelsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id']]], 'GetRequestValidatorsRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetResourcesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'embed' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'embed']]], 'GetRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id']]], 'GetRestApisRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetSdkRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName', 'sdkType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'sdkType' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'sdk_type'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring']]], 'GetSdkTypeRequest' => ['type' => 'structure', 'required' => ['id'], 'members' => ['id' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'sdktype_id']]], 'GetSdkTypesRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name']]], 'GetStagesRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'deploymentId']]], 'GetTagsRequest' => ['type' => 'structure', 'required' => ['resourceArn'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetUsagePlanKeyRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId']]], 'GetUsagePlanKeysRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit'], 'nameQuery' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'name']]], 'GetUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId']]], 'GetUsagePlansRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'keyId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'keyId'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetUsageRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'startDate', 'endDate'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'keyId'], 'startDate' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'startDate'], 'endDate' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'endDate'], 'position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'GetVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id']]], 'GetVpcLinksRequest' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String', 'location' => 'querystring', 'locationName' => 'position'], 'limit' => ['shape' => 'NullableInteger', 'location' => 'querystring', 'locationName' => 'limit']]], 'ImportApiKeysRequest' => ['type' => 'structure', 'required' => ['body', 'format'], 'members' => ['body' => ['shape' => 'Blob'], 'format' => ['shape' => 'ApiKeysFormat', 'location' => 'querystring', 'locationName' => 'format'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings']], 'payload' => 'body'], 'ImportDocumentationPartsRequest' => ['type' => 'structure', 'required' => ['restApiId', 'body'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'mode' => ['shape' => 'PutMode', 'location' => 'querystring', 'locationName' => 'mode'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'ImportRestApiRequest' => ['type' => 'structure', 'required' => ['body'], 'members' => ['failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'Integer' => ['type' => 'integer'], 'Integration' => ['type' => 'structure', 'members' => ['type' => ['shape' => 'IntegrationType'], 'httpMethod' => ['shape' => 'String'], 'uri' => ['shape' => 'String'], 'connectionType' => ['shape' => 'ConnectionType'], 'connectionId' => ['shape' => 'String'], 'credentials' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToString'], 'requestTemplates' => ['shape' => 'MapOfStringToString'], 'passthroughBehavior' => ['shape' => 'String'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy'], 'timeoutInMillis' => ['shape' => 'Integer'], 'cacheNamespace' => ['shape' => 'String'], 'cacheKeyParameters' => ['shape' => 'ListOfString'], 'integrationResponses' => ['shape' => 'MapOfIntegrationResponse'], 'tlsConfig' => ['shape' => 'TlsConfig']]], 'IntegrationResponse' => ['type' => 'structure', 'members' => ['statusCode' => ['shape' => 'StatusCode'], 'selectionPattern' => ['shape' => 'String'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy']]], 'IntegrationType' => ['type' => 'string', 'enum' => ['HTTP', 'AWS', 'MOCK', 'HTTP_PROXY', 'AWS_PROXY']], 'LimitExceededException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'ListOfARNs' => ['type' => 'list', 'member' => ['shape' => 'ProviderARN']], 'ListOfApiKey' => ['type' => 'list', 'member' => ['shape' => 'ApiKey']], 'ListOfApiStage' => ['type' => 'list', 'member' => ['shape' => 'ApiStage']], 'ListOfAuthorizer' => ['type' => 'list', 'member' => ['shape' => 'Authorizer']], 'ListOfBasePathMapping' => ['type' => 'list', 'member' => ['shape' => 'BasePathMapping']], 'ListOfClientCertificate' => ['type' => 'list', 'member' => ['shape' => 'ClientCertificate']], 'ListOfDeployment' => ['type' => 'list', 'member' => ['shape' => 'Deployment']], 'ListOfDocumentationPart' => ['type' => 'list', 'member' => ['shape' => 'DocumentationPart']], 'ListOfDocumentationVersion' => ['type' => 'list', 'member' => ['shape' => 'DocumentationVersion']], 'ListOfDomainName' => ['type' => 'list', 'member' => ['shape' => 'DomainName']], 'ListOfEndpointType' => ['type' => 'list', 'member' => ['shape' => 'EndpointType']], 'ListOfGatewayResponse' => ['type' => 'list', 'member' => ['shape' => 'GatewayResponse']], 'ListOfLong' => ['type' => 'list', 'member' => ['shape' => 'Long']], 'ListOfModel' => ['type' => 'list', 'member' => ['shape' => 'Model']], 'ListOfPatchOperation' => ['type' => 'list', 'member' => ['shape' => 'PatchOperation']], 'ListOfRequestValidator' => ['type' => 'list', 'member' => ['shape' => 'RequestValidator']], 'ListOfResource' => ['type' => 'list', 'member' => ['shape' => 'Resource']], 'ListOfRestApi' => ['type' => 'list', 'member' => ['shape' => 'RestApi']], 'ListOfSdkConfigurationProperty' => ['type' => 'list', 'member' => ['shape' => 'SdkConfigurationProperty']], 'ListOfSdkType' => ['type' => 'list', 'member' => ['shape' => 'SdkType']], 'ListOfStage' => ['type' => 'list', 'member' => ['shape' => 'Stage']], 'ListOfStageKeys' => ['type' => 'list', 'member' => ['shape' => 'StageKey']], 'ListOfString' => ['type' => 'list', 'member' => ['shape' => 'String']], 'ListOfUsage' => ['type' => 'list', 'member' => ['shape' => 'ListOfLong']], 'ListOfUsagePlan' => ['type' => 'list', 'member' => ['shape' => 'UsagePlan']], 'ListOfUsagePlanKey' => ['type' => 'list', 'member' => ['shape' => 'UsagePlanKey']], 'ListOfVpcLink' => ['type' => 'list', 'member' => ['shape' => 'VpcLink']], 'LocationStatusType' => ['type' => 'string', 'enum' => ['DOCUMENTED', 'UNDOCUMENTED']], 'Long' => ['type' => 'long'], 'MapOfApiStageThrottleSettings' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ThrottleSettings']], 'MapOfIntegrationResponse' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'IntegrationResponse']], 'MapOfKeyUsages' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ListOfUsage']], 'MapOfMethod' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'Method']], 'MapOfMethodResponse' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodResponse']], 'MapOfMethodSettings' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodSetting']], 'MapOfMethodSnapshot' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MethodSnapshot']], 'MapOfStringToBoolean' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'NullableBoolean']], 'MapOfStringToList' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'ListOfString']], 'MapOfStringToString' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'String']], 'Method' => ['type' => 'structure', 'members' => ['httpMethod' => ['shape' => 'String'], 'authorizationType' => ['shape' => 'String'], 'authorizerId' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'NullableBoolean'], 'requestValidatorId' => ['shape' => 'String'], 'operationName' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToBoolean'], 'requestModels' => ['shape' => 'MapOfStringToString'], 'methodResponses' => ['shape' => 'MapOfMethodResponse'], 'methodIntegration' => ['shape' => 'Integration'], 'authorizationScopes' => ['shape' => 'ListOfString']]], 'MethodResponse' => ['type' => 'structure', 'members' => ['statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToBoolean'], 'responseModels' => ['shape' => 'MapOfStringToString']]], 'MethodSetting' => ['type' => 'structure', 'members' => ['metricsEnabled' => ['shape' => 'Boolean'], 'loggingLevel' => ['shape' => 'String'], 'dataTraceEnabled' => ['shape' => 'Boolean'], 'throttlingBurstLimit' => ['shape' => 'Integer'], 'throttlingRateLimit' => ['shape' => 'Double'], 'cachingEnabled' => ['shape' => 'Boolean'], 'cacheTtlInSeconds' => ['shape' => 'Integer'], 'cacheDataEncrypted' => ['shape' => 'Boolean'], 'requireAuthorizationForCacheControl' => ['shape' => 'Boolean'], 'unauthorizedCacheControlHeaderStrategy' => ['shape' => 'UnauthorizedCacheControlHeaderStrategy']]], 'MethodSnapshot' => ['type' => 'structure', 'members' => ['authorizationType' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'Boolean']]], 'Model' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'schema' => ['shape' => 'String'], 'contentType' => ['shape' => 'String']]], 'Models' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfModel', 'locationName' => 'item']]], 'NotFoundException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 404], 'exception' => \true], 'NullableBoolean' => ['type' => 'boolean'], 'NullableInteger' => ['type' => 'integer'], 'Op' => ['type' => 'string', 'enum' => ['add', 'remove', 'replace', 'move', 'copy', 'test']], 'PatchOperation' => ['type' => 'structure', 'members' => ['op' => ['shape' => 'Op'], 'path' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'from' => ['shape' => 'String']]], 'PathToMapOfMethodSnapshot' => ['type' => 'map', 'key' => ['shape' => 'String'], 'value' => ['shape' => 'MapOfMethodSnapshot']], 'ProviderARN' => ['type' => 'string'], 'PutGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type'], 'statusCode' => ['shape' => 'StatusCode'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString']]], 'PutIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'type'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'type' => ['shape' => 'IntegrationType'], 'integrationHttpMethod' => ['shape' => 'String', 'locationName' => 'httpMethod'], 'uri' => ['shape' => 'String'], 'connectionType' => ['shape' => 'ConnectionType'], 'connectionId' => ['shape' => 'String'], 'credentials' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToString'], 'requestTemplates' => ['shape' => 'MapOfStringToString'], 'passthroughBehavior' => ['shape' => 'String'], 'cacheNamespace' => ['shape' => 'String'], 'cacheKeyParameters' => ['shape' => 'ListOfString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy'], 'timeoutInMillis' => ['shape' => 'NullableInteger'], 'tlsConfig' => ['shape' => 'TlsConfig']]], 'PutIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'selectionPattern' => ['shape' => 'String'], 'responseParameters' => ['shape' => 'MapOfStringToString'], 'responseTemplates' => ['shape' => 'MapOfStringToString'], 'contentHandling' => ['shape' => 'ContentHandlingStrategy']]], 'PutMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'authorizationType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'authorizationType' => ['shape' => 'String'], 'authorizerId' => ['shape' => 'String'], 'apiKeyRequired' => ['shape' => 'Boolean'], 'operationName' => ['shape' => 'String'], 'requestParameters' => ['shape' => 'MapOfStringToBoolean'], 'requestModels' => ['shape' => 'MapOfStringToString'], 'requestValidatorId' => ['shape' => 'String'], 'authorizationScopes' => ['shape' => 'ListOfString']]], 'PutMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'responseParameters' => ['shape' => 'MapOfStringToBoolean'], 'responseModels' => ['shape' => 'MapOfStringToString']]], 'PutMode' => ['type' => 'string', 'enum' => ['merge', 'overwrite']], 'PutRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId', 'body'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'mode' => ['shape' => 'PutMode', 'location' => 'querystring', 'locationName' => 'mode'], 'failOnWarnings' => ['shape' => 'Boolean', 'location' => 'querystring', 'locationName' => 'failonwarnings'], 'parameters' => ['shape' => 'MapOfStringToString', 'location' => 'querystring'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'QuotaPeriodType' => ['type' => 'string', 'enum' => ['DAY', 'WEEK', 'MONTH']], 'QuotaSettings' => ['type' => 'structure', 'members' => ['limit' => ['shape' => 'Integer'], 'offset' => ['shape' => 'Integer'], 'period' => ['shape' => 'QuotaPeriodType']]], 'RequestValidator' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'validateRequestBody' => ['shape' => 'Boolean'], 'validateRequestParameters' => ['shape' => 'Boolean']]], 'RequestValidators' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfRequestValidator', 'locationName' => 'item']]], 'Resource' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'parentId' => ['shape' => 'String'], 'pathPart' => ['shape' => 'String'], 'path' => ['shape' => 'String'], 'resourceMethods' => ['shape' => 'MapOfMethod']]], 'Resources' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfResource', 'locationName' => 'item']]], 'RestApi' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'createdDate' => ['shape' => 'Timestamp'], 'version' => ['shape' => 'String'], 'warnings' => ['shape' => 'ListOfString'], 'binaryMediaTypes' => ['shape' => 'ListOfString'], 'minimumCompressionSize' => ['shape' => 'NullableInteger'], 'apiKeySource' => ['shape' => 'ApiKeySourceType'], 'endpointConfiguration' => ['shape' => 'EndpointConfiguration'], 'policy' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'RestApis' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfRestApi', 'locationName' => 'item']]], 'SdkConfigurationProperty' => ['type' => 'structure', 'members' => ['name' => ['shape' => 'String'], 'friendlyName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'required' => ['shape' => 'Boolean'], 'defaultValue' => ['shape' => 'String']]], 'SdkResponse' => ['type' => 'structure', 'members' => ['contentType' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Type'], 'contentDisposition' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Content-Disposition'], 'body' => ['shape' => 'Blob']], 'payload' => 'body'], 'SdkType' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'friendlyName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'configurationProperties' => ['shape' => 'ListOfSdkConfigurationProperty']]], 'SdkTypes' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfSdkType', 'locationName' => 'item']]], 'SecurityPolicy' => ['type' => 'string', 'enum' => ['TLS_1_0', 'TLS_1_2']], 'ServiceUnavailableException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 503], 'exception' => \true, 'fault' => \true], 'Stage' => ['type' => 'structure', 'members' => ['deploymentId' => ['shape' => 'String'], 'clientCertificateId' => ['shape' => 'String'], 'stageName' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'cacheClusterEnabled' => ['shape' => 'Boolean'], 'cacheClusterSize' => ['shape' => 'CacheClusterSize'], 'cacheClusterStatus' => ['shape' => 'CacheClusterStatus'], 'methodSettings' => ['shape' => 'MapOfMethodSettings'], 'variables' => ['shape' => 'MapOfStringToString'], 'documentationVersion' => ['shape' => 'String'], 'accessLogSettings' => ['shape' => 'AccessLogSettings'], 'canarySettings' => ['shape' => 'CanarySettings'], 'tracingEnabled' => ['shape' => 'Boolean'], 'webAclArn' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString'], 'createdDate' => ['shape' => 'Timestamp'], 'lastUpdatedDate' => ['shape' => 'Timestamp']]], 'StageKey' => ['type' => 'structure', 'members' => ['restApiId' => ['shape' => 'String'], 'stageName' => ['shape' => 'String']]], 'Stages' => ['type' => 'structure', 'members' => ['item' => ['shape' => 'ListOfStage']]], 'StatusCode' => ['type' => 'string', 'pattern' => '[1-5]\\d\\d'], 'String' => ['type' => 'string'], 'TagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tags'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'tags' => ['shape' => 'MapOfStringToString']]], 'Tags' => ['type' => 'structure', 'members' => ['tags' => ['shape' => 'MapOfStringToString']]], 'Template' => ['type' => 'structure', 'members' => ['value' => ['shape' => 'String']]], 'TestInvokeAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'pathWithQueryString' => ['shape' => 'String'], 'body' => ['shape' => 'String'], 'stageVariables' => ['shape' => 'MapOfStringToString'], 'additionalContext' => ['shape' => 'MapOfStringToString']]], 'TestInvokeAuthorizerResponse' => ['type' => 'structure', 'members' => ['clientStatus' => ['shape' => 'Integer'], 'log' => ['shape' => 'String'], 'latency' => ['shape' => 'Long'], 'principalId' => ['shape' => 'String'], 'policy' => ['shape' => 'String'], 'authorization' => ['shape' => 'MapOfStringToList'], 'claims' => ['shape' => 'MapOfStringToString']]], 'TestInvokeMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'pathWithQueryString' => ['shape' => 'String'], 'body' => ['shape' => 'String'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'clientCertificateId' => ['shape' => 'String'], 'stageVariables' => ['shape' => 'MapOfStringToString']]], 'TestInvokeMethodResponse' => ['type' => 'structure', 'members' => ['status' => ['shape' => 'Integer'], 'body' => ['shape' => 'String'], 'headers' => ['shape' => 'MapOfStringToString'], 'multiValueHeaders' => ['shape' => 'MapOfStringToList'], 'log' => ['shape' => 'String'], 'latency' => ['shape' => 'Long']]], 'ThrottleSettings' => ['type' => 'structure', 'members' => ['burstLimit' => ['shape' => 'Integer'], 'rateLimit' => ['shape' => 'Double']]], 'Timestamp' => ['type' => 'timestamp'], 'TlsConfig' => ['type' => 'structure', 'members' => ['insecureSkipVerification' => ['shape' => 'Boolean']]], 'TooManyRequestsException' => ['type' => 'structure', 'members' => ['retryAfterSeconds' => ['shape' => 'String', 'location' => 'header', 'locationName' => 'Retry-After'], 'message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 429], 'exception' => \true], 'UnauthorizedCacheControlHeaderStrategy' => ['type' => 'string', 'enum' => ['FAIL_WITH_403', 'SUCCEED_WITH_RESPONSE_HEADER', 'SUCCEED_WITHOUT_RESPONSE_HEADER']], 'UnauthorizedException' => ['type' => 'structure', 'members' => ['message' => ['shape' => 'String']], 'error' => ['httpStatusCode' => 401], 'exception' => \true], 'UntagResourceRequest' => ['type' => 'structure', 'required' => ['resourceArn', 'tagKeys'], 'members' => ['resourceArn' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_arn'], 'tagKeys' => ['shape' => 'ListOfString', 'location' => 'querystring', 'locationName' => 'tagKeys']]], 'UpdateAccountRequest' => ['type' => 'structure', 'members' => ['patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateApiKeyRequest' => ['type' => 'structure', 'required' => ['apiKey'], 'members' => ['apiKey' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'api_Key'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateAuthorizerRequest' => ['type' => 'structure', 'required' => ['restApiId', 'authorizerId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'authorizerId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'authorizer_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateBasePathMappingRequest' => ['type' => 'structure', 'required' => ['domainName', 'basePath'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'basePath' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'base_path'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateClientCertificateRequest' => ['type' => 'structure', 'required' => ['clientCertificateId'], 'members' => ['clientCertificateId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'clientcertificate_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDeploymentRequest' => ['type' => 'structure', 'required' => ['restApiId', 'deploymentId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'deploymentId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'deployment_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDocumentationPartRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationPartId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationPartId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'part_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDocumentationVersionRequest' => ['type' => 'structure', 'required' => ['restApiId', 'documentationVersion'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'documentationVersion' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'doc_version'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateDomainNameRequest' => ['type' => 'structure', 'required' => ['domainName'], 'members' => ['domainName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'domain_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateGatewayResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'responseType'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'responseType' => ['shape' => 'GatewayResponseType', 'location' => 'uri', 'locationName' => 'response_type'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateIntegrationRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateIntegrationResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateMethodRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateMethodResponseRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId', 'httpMethod', 'statusCode'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'httpMethod' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'http_method'], 'statusCode' => ['shape' => 'StatusCode', 'location' => 'uri', 'locationName' => 'status_code'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateModelRequest' => ['type' => 'structure', 'required' => ['restApiId', 'modelName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'modelName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'model_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateRequestValidatorRequest' => ['type' => 'structure', 'required' => ['restApiId', 'requestValidatorId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'requestValidatorId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'requestvalidator_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateResourceRequest' => ['type' => 'structure', 'required' => ['restApiId', 'resourceId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'resourceId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'resource_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateRestApiRequest' => ['type' => 'structure', 'required' => ['restApiId'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateStageRequest' => ['type' => 'structure', 'required' => ['restApiId', 'stageName'], 'members' => ['restApiId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'restapi_id'], 'stageName' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'stage_name'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateUsagePlanRequest' => ['type' => 'structure', 'required' => ['usagePlanId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateUsageRequest' => ['type' => 'structure', 'required' => ['usagePlanId', 'keyId'], 'members' => ['usagePlanId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'usageplanId'], 'keyId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'keyId'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'UpdateVpcLinkRequest' => ['type' => 'structure', 'required' => ['vpcLinkId'], 'members' => ['vpcLinkId' => ['shape' => 'String', 'location' => 'uri', 'locationName' => 'vpclink_id'], 'patchOperations' => ['shape' => 'ListOfPatchOperation']]], 'Usage' => ['type' => 'structure', 'members' => ['usagePlanId' => ['shape' => 'String'], 'startDate' => ['shape' => 'String'], 'endDate' => ['shape' => 'String'], 'position' => ['shape' => 'String'], 'items' => ['shape' => 'MapOfKeyUsages', 'locationName' => 'values']]], 'UsagePlan' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'apiStages' => ['shape' => 'ListOfApiStage'], 'throttle' => ['shape' => 'ThrottleSettings'], 'quota' => ['shape' => 'QuotaSettings'], 'productCode' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'UsagePlanKey' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'type' => ['shape' => 'String'], 'value' => ['shape' => 'String'], 'name' => ['shape' => 'String']]], 'UsagePlanKeys' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfUsagePlanKey', 'locationName' => 'item']]], 'UsagePlans' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfUsagePlan', 'locationName' => 'item']]], 'VpcLink' => ['type' => 'structure', 'members' => ['id' => ['shape' => 'String'], 'name' => ['shape' => 'String'], 'description' => ['shape' => 'String'], 'targetArns' => ['shape' => 'ListOfString'], 'status' => ['shape' => 'VpcLinkStatus'], 'statusMessage' => ['shape' => 'String'], 'tags' => ['shape' => 'MapOfStringToString']]], 'VpcLinkStatus' => ['type' => 'string', 'enum' => ['AVAILABLE', 'PENDING', 'DELETING', 'FAILED']], 'VpcLinks' => ['type' => 'structure', 'members' => ['position' => ['shape' => 'String'], 'items' => ['shape' => 'ListOfVpcLink', 'locationName' => 'item']]]]];
|
@@ -1,4 +1,4 @@
|
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/apigatewayv2/2018-11-29/api-2.json
|
4 |
-
return ['metadata' => ['apiVersion' => '2018-11-29', 'endpointPrefix' => 'apigateway', 'signingName' => 'apigateway', 'serviceFullName' => 'AmazonApiGatewayV2', 'serviceId' => 'ApiGatewayV2', 'protocol' => 'rest-json', 'jsonVersion' => '1.1', 'uid' => 'apigatewayv2-2018-11-29', 'signatureVersion' => 'v4'], 'operations' => ['CreateApi' => ['name' => 'CreateApi', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis', 'responseCode' => 201], 'input' => ['shape' => 'CreateApiRequest'], 'output' => ['shape' => 'CreateApiResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateApiMapping' => ['name' => 'CreateApiMapping', 'http' => ['method' => 'POST', 'requestUri' => '/v2/domainnames/{domainName}/apimappings', 'responseCode' => 201], 'input' => ['shape' => 'CreateApiMappingRequest'], 'output' => ['shape' => 'CreateApiMappingResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateAuthorizer' => ['name' => 'CreateAuthorizer', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/authorizers', 'responseCode' => 201], 'input' => ['shape' => 'CreateAuthorizerRequest'], 'output' => ['shape' => 'CreateAuthorizerResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateDeployment' => ['name' => 'CreateDeployment', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/deployments', 'responseCode' => 201], 'input' => ['shape' => 'CreateDeploymentRequest'], 'output' => ['shape' => 'CreateDeploymentResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateDomainName' => ['name' => 'CreateDomainName', 'http' => ['method' => 'POST', 'requestUri' => '/v2/domainnames', 'responseCode' => 201], 'input' => ['shape' => 'CreateDomainNameRequest'], 'output' => ['shape' => 'CreateDomainNameResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException'], ['shape' => 'AccessDeniedException']]], 'CreateIntegration' => ['name' => 'CreateIntegration', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/integrations', 'responseCode' => 201], 'input' => ['shape' => 'CreateIntegrationRequest'], 'output' => ['shape' => 'CreateIntegrationResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateIntegrationResponse' => ['name' => 'CreateIntegrationResponse', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses', 'responseCode' => 201], 'input' => ['shape' => 'CreateIntegrationResponseRequest'], 'output' => ['shape' => 'CreateIntegrationResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateModel' => ['name' => 'CreateModel', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/models', 'responseCode' => 201], 'input' => ['shape' => 'CreateModelRequest'], 'output' => ['shape' => 'CreateModelResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateRoute' => ['name' => 'CreateRoute', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/routes', 'responseCode' => 201], 'input' => ['shape' => 'CreateRouteRequest'], 'output' => ['shape' => 'CreateRouteResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateRouteResponse' => ['name' => 'CreateRouteResponse', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/routeresponses', 'responseCode' => 201], 'input' => ['shape' => 'CreateRouteResponseRequest'], 'output' => ['shape' => 'CreateRouteResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateStage' => ['name' => 'CreateStage', 'http' => ['method' => 'POST', 'requestUri' => '/v2/apis/{apiId}/stages', 'responseCode' => 201], 'input' => ['shape' => 'CreateStageRequest'], 'output' => ['shape' => 'CreateStageResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'CreateVpcLink' => ['name' => 'CreateVpcLink', 'http' => ['method' => 'POST', 'requestUri' => '/v2/vpclinks', 'responseCode' => 201], 'input' => ['shape' => 'CreateVpcLinkRequest'], 'output' => ['shape' => 'CreateVpcLinkResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'DeleteAccessLogSettings' => ['name' => 'DeleteAccessLogSettings', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/stages/{stageName}/accesslogsettings', 'responseCode' => 204], 'input' => ['shape' => 'DeleteAccessLogSettingsRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteApi' => ['name' => 'DeleteApi', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteApiRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteApiMapping' => ['name' => 'DeleteApiMapping', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/domainnames/{domainName}/apimappings/{apiMappingId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteApiMappingRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'DeleteAuthorizer' => ['name' => 'DeleteAuthorizer', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/authorizers/{authorizerId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteAuthorizerRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteCorsConfiguration' => ['name' => 'DeleteCorsConfiguration', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/cors', 'responseCode' => 204], 'input' => ['shape' => 'DeleteCorsConfigurationRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDeployment' => ['name' => 'DeleteDeployment', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/deployments/{deploymentId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteDeploymentRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteDomainName' => ['name' => 'DeleteDomainName', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/domainnames/{domainName}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteDomainNameRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteIntegration' => ['name' => 'DeleteIntegration', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteIntegrationResponse' => ['name' => 'DeleteIntegrationResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteIntegrationResponseRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteModel' => ['name' => 'DeleteModel', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/models/{modelId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteModelRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRoute' => ['name' => 'DeleteRoute', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteRouteRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRouteRequestParameter' => ['name' => 'DeleteRouteRequestParameter', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/requestparameters/{requestParameterKey}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteRouteRequestParameterRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRouteResponse' => ['name' => 'DeleteRouteResponse', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteRouteResponseRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteRouteSettings' => ['name' => 'DeleteRouteSettings', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/stages/{stageName}/routesettings/{routeKey}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteRouteSettingsRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteStage' => ['name' => 'DeleteStage', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/apis/{apiId}/stages/{stageName}', 'responseCode' => 204], 'input' => ['shape' => 'DeleteStageRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'DeleteVpcLink' => ['name' => 'DeleteVpcLink', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/vpclinks/{vpcLinkId}', 'responseCode' => 202], 'input' => ['shape' => 'DeleteVpcLinkRequest'], 'output' => ['shape' => 'DeleteVpcLinkResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApi' => ['name' => 'GetApi', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}', 'responseCode' => 200], 'input' => ['shape' => 'GetApiRequest'], 'output' => ['shape' => 'GetApiResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetApiMapping' => ['name' => 'GetApiMapping', 'http' => ['method' => 'GET', 'requestUri' => '/v2/domainnames/{domainName}/apimappings/{apiMappingId}', 'responseCode' => 200], 'input' => ['shape' => 'GetApiMappingRequest'], 'output' => ['shape' => 'GetApiMappingResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetApiMappings' => ['name' => 'GetApiMappings', 'http' => ['method' => 'GET', 'requestUri' => '/v2/domainnames/{domainName}/apimappings', 'responseCode' => 200], 'input' => ['shape' => 'GetApiMappingsRequest'], 'output' => ['shape' => 'GetApiMappingsResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetApis' => ['name' => 'GetApis', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis', 'responseCode' => 200], 'input' => ['shape' => 'GetApisRequest'], 'output' => ['shape' => 'GetApisResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetAuthorizer' => ['name' => 'GetAuthorizer', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/authorizers/{authorizerId}', 'responseCode' => 200], 'input' => ['shape' => 'GetAuthorizerRequest'], 'output' => ['shape' => 'GetAuthorizerResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetAuthorizers' => ['name' => 'GetAuthorizers', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/authorizers', 'responseCode' => 200], 'input' => ['shape' => 'GetAuthorizersRequest'], 'output' => ['shape' => 'GetAuthorizersResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetDeployment' => ['name' => 'GetDeployment', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/deployments/{deploymentId}', 'responseCode' => 200], 'input' => ['shape' => 'GetDeploymentRequest'], 'output' => ['shape' => 'GetDeploymentResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDeployments' => ['name' => 'GetDeployments', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/deployments', 'responseCode' => 200], 'input' => ['shape' => 'GetDeploymentsRequest'], 'output' => ['shape' => 'GetDeploymentsResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetDomainName' => ['name' => 'GetDomainName', 'http' => ['method' => 'GET', 'requestUri' => '/v2/domainnames/{domainName}', 'responseCode' => 200], 'input' => ['shape' => 'GetDomainNameRequest'], 'output' => ['shape' => 'GetDomainNameResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetDomainNames' => ['name' => 'GetDomainNames', 'http' => ['method' => 'GET', 'requestUri' => '/v2/domainnames', 'responseCode' => 200], 'input' => ['shape' => 'GetDomainNamesRequest'], 'output' => ['shape' => 'GetDomainNamesResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetIntegration' => ['name' => 'GetIntegration', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}', 'responseCode' => 200], 'input' => ['shape' => 'GetIntegrationRequest'], 'output' => ['shape' => 'GetIntegrationResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegrationResponse' => ['name' => 'GetIntegrationResponse', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}', 'responseCode' => 200], 'input' => ['shape' => 'GetIntegrationResponseRequest'], 'output' => ['shape' => 'GetIntegrationResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetIntegrationResponses' => ['name' => 'GetIntegrationResponses', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses', 'responseCode' => 200], 'input' => ['shape' => 'GetIntegrationResponsesRequest'], 'output' => ['shape' => 'GetIntegrationResponsesResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetIntegrations' => ['name' => 'GetIntegrations', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/integrations', 'responseCode' => 200], 'input' => ['shape' => 'GetIntegrationsRequest'], 'output' => ['shape' => 'GetIntegrationsResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetModel' => ['name' => 'GetModel', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/models/{modelId}', 'responseCode' => 200], 'input' => ['shape' => 'GetModelRequest'], 'output' => ['shape' => 'GetModelResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModelTemplate' => ['name' => 'GetModelTemplate', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/models/{modelId}/template', 'responseCode' => 200], 'input' => ['shape' => 'GetModelTemplateRequest'], 'output' => ['shape' => 'GetModelTemplateResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetModels' => ['name' => 'GetModels', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/models', 'responseCode' => 200], 'input' => ['shape' => 'GetModelsRequest'], 'output' => ['shape' => 'GetModelsResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetRoute' => ['name' => 'GetRoute', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}', 'responseCode' => 200], 'input' => ['shape' => 'GetRouteRequest'], 'output' => ['shape' => 'GetRouteResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRouteResponse' => ['name' => 'GetRouteResponse', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}', 'responseCode' => 200], 'input' => ['shape' => 'GetRouteResponseRequest'], 'output' => ['shape' => 'GetRouteResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetRouteResponses' => ['name' => 'GetRouteResponses', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/routeresponses', 'responseCode' => 200], 'input' => ['shape' => 'GetRouteResponsesRequest'], 'output' => ['shape' => 'GetRouteResponsesResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetRoutes' => ['name' => 'GetRoutes', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/routes', 'responseCode' => 200], 'input' => ['shape' => 'GetRoutesRequest'], 'output' => ['shape' => 'GetRoutesResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetStage' => ['name' => 'GetStage', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/stages/{stageName}', 'responseCode' => 200], 'input' => ['shape' => 'GetStageRequest'], 'output' => ['shape' => 'GetStageResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetStages' => ['name' => 'GetStages', 'http' => ['method' => 'GET', 'requestUri' => '/v2/apis/{apiId}/stages', 'responseCode' => 200], 'input' => ['shape' => 'GetStagesRequest'], 'output' => ['shape' => 'GetStagesResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]], 'GetTags' => ['name' => 'GetTags', 'http' => ['method' => 'GET', 'requestUri' => '/v2/tags/{resource-arn}', 'responseCode' => 200], 'input' => ['shape' => 'GetTagsRequest'], 'output' => ['shape' => 'GetTagsResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'GetVpcLink' => ['name' => 'GetVpcLink', 'http' => ['method' => 'GET', 'requestUri' => '/v2/vpclinks/{vpcLinkId}', 'responseCode' => 200], 'input' => ['shape' => 'GetVpcLinkRequest'], 'output' => ['shape' => 'GetVpcLinkResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException']]], 'GetVpcLinks' => ['name' => 'GetVpcLinks', 'http' => ['method' => 'GET', 'requestUri' => '/v2/vpclinks', 'responseCode' => 200], 'input' => ['shape' => 'GetVpcLinksRequest'], 'output' => ['shape' => 'GetVpcLinksResponse'], 'errors' => [['shape' => 'BadRequestException'], ['shape' => 'TooManyRequestsException']]], 'ImportApi' => ['name' => 'ImportApi', 'http' => ['method' => 'PUT', 'requestUri' => '/v2/apis', 'responseCode' => 201], 'input' => ['shape' => 'ImportApiRequest'], 'output' => ['shape' => 'ImportApiResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'ReimportApi' => ['name' => 'ReimportApi', 'http' => ['method' => 'PUT', 'requestUri' => '/v2/apis/{apiId}', 'responseCode' => 201], 'input' => ['shape' => 'ReimportApiRequest'], 'output' => ['shape' => 'ReimportApiResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'TagResource' => ['name' => 'TagResource', 'http' => ['method' => 'POST', 'requestUri' => '/v2/tags/{resource-arn}', 'responseCode' => 201], 'input' => ['shape' => 'TagResourceRequest'], 'output' => ['shape' => 'TagResourceResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UntagResource' => ['name' => 'UntagResource', 'http' => ['method' => 'DELETE', 'requestUri' => '/v2/tags/{resource-arn}', 'responseCode' => 204], 'input' => ['shape' => 'UntagResourceRequest'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateApi' => ['name' => 'UpdateApi', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateApiRequest'], 'output' => ['shape' => 'UpdateApiResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateApiMapping' => ['name' => 'UpdateApiMapping', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/domainnames/{domainName}/apimappings/{apiMappingId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateApiMappingRequest'], 'output' => ['shape' => 'UpdateApiMappingResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateAuthorizer' => ['name' => 'UpdateAuthorizer', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/authorizers/{authorizerId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateAuthorizerRequest'], 'output' => ['shape' => 'UpdateAuthorizerResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateDeployment' => ['name' => 'UpdateDeployment', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/deployments/{deploymentId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateDeploymentRequest'], 'output' => ['shape' => 'UpdateDeploymentResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateDomainName' => ['name' => 'UpdateDomainName', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/domainnames/{domainName}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateDomainNameRequest'], 'output' => ['shape' => 'UpdateDomainNameResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateIntegration' => ['name' => 'UpdateIntegration', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateIntegrationRequest'], 'output' => ['shape' => 'UpdateIntegrationResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateIntegrationResponse' => ['name' => 'UpdateIntegrationResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateIntegrationResponseRequest'], 'output' => ['shape' => 'UpdateIntegrationResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateModel' => ['name' => 'UpdateModel', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/models/{modelId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateModelRequest'], 'output' => ['shape' => 'UpdateModelResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateRoute' => ['name' => 'UpdateRoute', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateRouteRequest'], 'output' => ['shape' => 'UpdateRouteResult'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateRouteResponse' => ['name' => 'UpdateRouteResponse', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateRouteResponseRequest'], 'output' => ['shape' => 'UpdateRouteResponseResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateStage' => ['name' => 'UpdateStage', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/apis/{apiId}/stages/{stageName}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateStageRequest'], 'output' => ['shape' => 'UpdateStageResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException'], ['shape' => 'ConflictException']]], 'UpdateVpcLink' => ['name' => 'UpdateVpcLink', 'http' => ['method' => 'PATCH', 'requestUri' => '/v2/vpclinks/{vpcLinkId}', 'responseCode' => 200], 'input' => ['shape' => 'UpdateVpcLinkRequest'], 'output' => ['shape' => 'UpdateVpcLinkResponse'], 'errors' => [['shape' => 'NotFoundException'], ['shape' => 'TooManyRequestsException'], ['shape' => 'BadRequestException']]]], 'shapes' => ['AccessDeniedException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => '__string', 'locationName' => 'message']], 'exception' => \true, 'error' => ['httpStatusCode' => 403]], 'AccessLogSettings' => ['type' => 'structure', 'members' => ['DestinationArn' => ['shape' => 'Arn', 'locationName' => 'destinationArn'], 'Format' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'format']]], 'Api' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']], 'required' => ['RouteSelectionExpression', 'Name', 'ProtocolType']], 'ApiMapping' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingId' => ['shape' => 'Id', 'locationName' => 'apiMappingId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']], 'required' => ['Stage', 'ApiId']], 'ApiMappings' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfApiMapping', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'Apis' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfApi', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'Arn' => ['type' => 'string'], 'AuthorizationScopes' => ['type' => 'list', 'member' => ['shape' => 'StringWithLengthBetween1And64']], 'AuthorizationType' => ['type' => 'string', 'enum' => ['NONE', 'AWS_IAM', 'CUSTOM', 'JWT']], 'Authorizer' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']], 'required' => ['Name']], 'AuthorizerType' => ['type' => 'string', 'enum' => ['REQUEST', 'JWT']], 'Authorizers' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfAuthorizer', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'BadRequestException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => '__string', 'locationName' => 'message']], 'exception' => \true, 'error' => ['httpStatusCode' => 400]], 'ConflictException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => '__string', 'locationName' => 'message']], 'exception' => \true, 'error' => ['httpStatusCode' => 409]], 'ConnectionType' => ['type' => 'string', 'enum' => ['INTERNET', 'VPC_LINK']], 'ContentHandlingStrategy' => ['type' => 'string', 'enum' => ['CONVERT_TO_BINARY', 'CONVERT_TO_TEXT']], 'Cors' => ['type' => 'structure', 'members' => ['AllowCredentials' => ['shape' => '__boolean', 'locationName' => 'allowCredentials'], 'AllowHeaders' => ['shape' => 'CorsHeaderList', 'locationName' => 'allowHeaders'], 'AllowMethods' => ['shape' => 'CorsMethodList', 'locationName' => 'allowMethods'], 'AllowOrigins' => ['shape' => 'CorsOriginList', 'locationName' => 'allowOrigins'], 'ExposeHeaders' => ['shape' => 'CorsHeaderList', 'locationName' => 'exposeHeaders'], 'MaxAge' => ['shape' => 'IntegerWithLengthBetweenMinus1And86400', 'locationName' => 'maxAge']]], 'CorsHeaderList' => ['type' => 'list', 'member' => ['shape' => '__string']], 'CorsMethodList' => ['type' => 'list', 'member' => ['shape' => 'StringWithLengthBetween1And64']], 'CorsOriginList' => ['type' => 'list', 'member' => ['shape' => '__string']], 'CreateApiInput' => ['type' => 'structure', 'members' => ['ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Target' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'target'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version']], 'required' => ['ProtocolType', 'Name']], 'CreateApiMappingInput' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']], 'required' => ['Stage', 'ApiId']], 'CreateApiMappingRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']], 'required' => ['DomainName', 'Stage', 'ApiId']], 'CreateApiMappingResponse' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingId' => ['shape' => 'Id', 'locationName' => 'apiMappingId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']]], 'CreateApiRequest' => ['type' => 'structure', 'members' => ['ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Target' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'target'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version']], 'required' => ['ProtocolType', 'Name']], 'CreateApiResponse' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']]], 'CreateAuthorizerInput' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']], 'required' => ['AuthorizerType', 'IdentitySource', 'Name']], 'CreateAuthorizerRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']], 'required' => ['ApiId', 'AuthorizerType', 'IdentitySource', 'Name']], 'CreateAuthorizerResponse' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']]], 'CreateDeploymentInput' => ['type' => 'structure', 'members' => ['Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName']]], 'CreateDeploymentRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName']], 'required' => ['ApiId']], 'CreateDeploymentResponse' => ['type' => 'structure', 'members' => ['AutoDeployed' => ['shape' => '__boolean', 'locationName' => 'autoDeployed'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'DeploymentStatus' => ['shape' => 'DeploymentStatus', 'locationName' => 'deploymentStatus'], 'DeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'deploymentStatusMessage'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']]], 'CreateDomainNameInput' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['DomainName']], 'CreateDomainNameRequest' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['DomainName']], 'CreateDomainNameResponse' => ['type' => 'structure', 'members' => ['ApiMappingSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiMappingSelectionExpression'], 'DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'CreateIntegrationInput' => ['type' => 'structure', 'members' => ['ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfigInput', 'locationName' => 'tlsConfig']], 'required' => ['IntegrationType']], 'CreateIntegrationRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfigInput', 'locationName' => 'tlsConfig']], 'required' => ['ApiId', 'IntegrationType']], 'CreateIntegrationResult' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationId' => ['shape' => 'Id', 'locationName' => 'integrationId'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'integrationResponseSelectionExpression'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfig', 'locationName' => 'tlsConfig']]], 'CreateIntegrationResponseInput' => ['type' => 'structure', 'members' => ['ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']], 'required' => ['IntegrationResponseKey']], 'CreateIntegrationResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']], 'required' => ['ApiId', 'IntegrationId', 'IntegrationResponseKey']], 'CreateIntegrationResponseResponse' => ['type' => 'structure', 'members' => ['ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationResponseId' => ['shape' => 'Id', 'locationName' => 'integrationResponseId'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']]], 'CreateModelInput' => ['type' => 'structure', 'members' => ['ContentType' => ['shape' => 'StringWithLengthBetween1And256', 'locationName' => 'contentType'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'Schema' => ['shape' => 'StringWithLengthBetween0And32K', 'locationName' => 'schema']], 'required' => ['Schema', 'Name']], 'CreateModelRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ContentType' => ['shape' => 'StringWithLengthBetween1And256', 'locationName' => 'contentType'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'Schema' => ['shape' => 'StringWithLengthBetween0And32K', 'locationName' => 'schema']], 'required' => ['ApiId', 'Schema', 'Name']], 'CreateModelResponse' => ['type' => 'structure', 'members' => ['ContentType' => ['shape' => 'StringWithLengthBetween1And256', 'locationName' => 'contentType'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'ModelId' => ['shape' => 'Id', 'locationName' => 'modelId'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'Schema' => ['shape' => 'StringWithLengthBetween0And32K', 'locationName' => 'schema']]], 'CreateRouteInput' => ['type' => 'structure', 'members' => ['ApiKeyRequired' => ['shape' => '__boolean', 'locationName' => 'apiKeyRequired'], 'AuthorizationScopes' => ['shape' => 'AuthorizationScopes', 'locationName' => 'authorizationScopes'], 'AuthorizationType' => ['shape' => 'AuthorizationType', 'locationName' => 'authorizationType'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'OperationName' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'operationName'], 'RequestModels' => ['shape' => 'RouteModels', 'locationName' => 'requestModels'], 'RequestParameters' => ['shape' => 'RouteParameters', 'locationName' => 'requestParameters'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeResponseSelectionExpression'], 'Target' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'target']], 'required' => ['RouteKey']], 'CreateRouteRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ApiKeyRequired' => ['shape' => '__boolean', 'locationName' => 'apiKeyRequired'], 'AuthorizationScopes' => ['shape' => 'AuthorizationScopes', 'locationName' => 'authorizationScopes'], 'AuthorizationType' => ['shape' => 'AuthorizationType', 'locationName' => 'authorizationType'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'OperationName' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'operationName'], 'RequestModels' => ['shape' => 'RouteModels', 'locationName' => 'requestModels'], 'RequestParameters' => ['shape' => 'RouteParameters', 'locationName' => 'requestParameters'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeResponseSelectionExpression'], 'Target' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'target']], 'required' => ['ApiId', 'RouteKey']], 'CreateRouteResult' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ApiKeyRequired' => ['shape' => '__boolean', 'locationName' => 'apiKeyRequired'], 'AuthorizationScopes' => ['shape' => 'AuthorizationScopes', 'locationName' => 'authorizationScopes'], 'AuthorizationType' => ['shape' => 'AuthorizationType', 'locationName' => 'authorizationType'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'OperationName' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'operationName'], 'RequestModels' => ['shape' => 'RouteModels', 'locationName' => 'requestModels'], 'RequestParameters' => ['shape' => 'RouteParameters', 'locationName' => 'requestParameters'], 'RouteId' => ['shape' => 'Id', 'locationName' => 'routeId'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeResponseSelectionExpression'], 'Target' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'target']]], 'CreateRouteResponseInput' => ['type' => 'structure', 'members' => ['ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'ResponseModels' => ['shape' => 'RouteModels', 'locationName' => 'responseModels'], 'ResponseParameters' => ['shape' => 'RouteParameters', 'locationName' => 'responseParameters'], 'RouteResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeResponseKey']], 'required' => ['RouteResponseKey']], 'CreateRouteResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'ResponseModels' => ['shape' => 'RouteModels', 'locationName' => 'responseModels'], 'ResponseParameters' => ['shape' => 'RouteParameters', 'locationName' => 'responseParameters'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId'], 'RouteResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeResponseKey']], 'required' => ['ApiId', 'RouteId', 'RouteResponseKey']], 'CreateRouteResponseResponse' => ['type' => 'structure', 'members' => ['ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'ResponseModels' => ['shape' => 'RouteModels', 'locationName' => 'responseModels'], 'ResponseParameters' => ['shape' => 'RouteParameters', 'locationName' => 'responseParameters'], 'RouteResponseId' => ['shape' => 'Id', 'locationName' => 'routeResponseId'], 'RouteResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeResponseKey']]], 'CreateStageInput' => ['type' => 'structure', 'members' => ['AccessLogSettings' => ['shape' => 'AccessLogSettings', 'locationName' => 'accessLogSettings'], 'AutoDeploy' => ['shape' => '__boolean', 'locationName' => 'autoDeploy'], 'ClientCertificateId' => ['shape' => 'Id', 'locationName' => 'clientCertificateId'], 'DefaultRouteSettings' => ['shape' => 'RouteSettings', 'locationName' => 'defaultRouteSettings'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'RouteSettings' => ['shape' => 'RouteSettingsMap', 'locationName' => 'routeSettings'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName'], 'StageVariables' => ['shape' => 'StageVariablesMap', 'locationName' => 'stageVariables'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['StageName']], 'CreateStageRequest' => ['type' => 'structure', 'members' => ['AccessLogSettings' => ['shape' => 'AccessLogSettings', 'locationName' => 'accessLogSettings'], 'ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'AutoDeploy' => ['shape' => '__boolean', 'locationName' => 'autoDeploy'], 'ClientCertificateId' => ['shape' => 'Id', 'locationName' => 'clientCertificateId'], 'DefaultRouteSettings' => ['shape' => 'RouteSettings', 'locationName' => 'defaultRouteSettings'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'RouteSettings' => ['shape' => 'RouteSettingsMap', 'locationName' => 'routeSettings'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName'], 'StageVariables' => ['shape' => 'StageVariablesMap', 'locationName' => 'stageVariables'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['ApiId', 'StageName']], 'CreateStageResponse' => ['type' => 'structure', 'members' => ['AccessLogSettings' => ['shape' => 'AccessLogSettings', 'locationName' => 'accessLogSettings'], 'ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'AutoDeploy' => ['shape' => '__boolean', 'locationName' => 'autoDeploy'], 'ClientCertificateId' => ['shape' => 'Id', 'locationName' => 'clientCertificateId'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DefaultRouteSettings' => ['shape' => 'RouteSettings', 'locationName' => 'defaultRouteSettings'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'LastDeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'lastDeploymentStatusMessage'], 'LastUpdatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'lastUpdatedDate'], 'RouteSettings' => ['shape' => 'RouteSettingsMap', 'locationName' => 'routeSettings'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName'], 'StageVariables' => ['shape' => 'StageVariablesMap', 'locationName' => 'stageVariables'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'CreateVpcLinkInput' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'SecurityGroupIds' => ['shape' => 'SecurityGroupIdList', 'locationName' => 'securityGroupIds'], 'SubnetIds' => ['shape' => 'SubnetIdList', 'locationName' => 'subnetIds'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['SubnetIds', 'Name']], 'CreateVpcLinkRequest' => ['type' => 'structure', 'members' => ['Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'SecurityGroupIds' => ['shape' => 'SecurityGroupIdList', 'locationName' => 'securityGroupIds'], 'SubnetIds' => ['shape' => 'SubnetIdList', 'locationName' => 'subnetIds'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['SubnetIds', 'Name']], 'CreateVpcLinkResponse' => ['type' => 'structure', 'members' => ['CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'SecurityGroupIds' => ['shape' => 'SecurityGroupIdList', 'locationName' => 'securityGroupIds'], 'SubnetIds' => ['shape' => 'SubnetIdList', 'locationName' => 'subnetIds'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'VpcLinkId' => ['shape' => 'Id', 'locationName' => 'vpcLinkId'], 'VpcLinkStatus' => ['shape' => 'VpcLinkStatus', 'locationName' => 'vpcLinkStatus'], 'VpcLinkStatusMessage' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'vpcLinkStatusMessage'], 'VpcLinkVersion' => ['shape' => 'VpcLinkVersion', 'locationName' => 'vpcLinkVersion']]], 'DeleteAccessLogSettingsRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'StageName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'stageName']], 'required' => ['StageName', 'ApiId']], 'DeleteApiMappingRequest' => ['type' => 'structure', 'members' => ['ApiMappingId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiMappingId'], 'DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName']], 'required' => ['ApiMappingId', 'DomainName']], 'DeleteApiRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId']], 'required' => ['ApiId']], 'DeleteAuthorizerRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'AuthorizerId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'authorizerId']], 'required' => ['AuthorizerId', 'ApiId']], 'DeleteCorsConfigurationRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId']], 'required' => ['ApiId']], 'DeleteDeploymentRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'DeploymentId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'deploymentId']], 'required' => ['ApiId', 'DeploymentId']], 'DeleteDomainNameRequest' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName']], 'required' => ['DomainName']], 'DeleteIntegrationRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId']], 'required' => ['ApiId', 'IntegrationId']], 'DeleteIntegrationResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'IntegrationResponseId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationResponseId']], 'required' => ['ApiId', 'IntegrationResponseId', 'IntegrationId']], 'DeleteModelRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ModelId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'modelId']], 'required' => ['ModelId', 'ApiId']], 'DeleteRouteRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId']], 'required' => ['ApiId', 'RouteId']], 'DeleteRouteRequestParameterRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RequestParameterKey' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'requestParameterKey'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId']], 'required' => ['RequestParameterKey', 'ApiId', 'RouteId']], 'DeleteRouteResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId'], 'RouteResponseId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeResponseId']], 'required' => ['RouteResponseId', 'ApiId', 'RouteId']], 'DeleteRouteSettingsRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RouteKey' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeKey'], 'StageName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'stageName']], 'required' => ['StageName', 'RouteKey', 'ApiId']], 'DeleteStageRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'StageName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'stageName']], 'required' => ['StageName', 'ApiId']], 'DeleteVpcLinkRequest' => ['type' => 'structure', 'members' => ['VpcLinkId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'vpcLinkId']], 'required' => ['VpcLinkId']], 'DeleteVpcLinkResponse' => ['type' => 'structure', 'members' => []], 'Deployment' => ['type' => 'structure', 'members' => ['AutoDeployed' => ['shape' => '__boolean', 'locationName' => 'autoDeployed'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'DeploymentStatus' => ['shape' => 'DeploymentStatus', 'locationName' => 'deploymentStatus'], 'DeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'deploymentStatusMessage'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']]], 'DeploymentStatus' => ['type' => 'string', 'enum' => ['PENDING', 'FAILED', 'DEPLOYED']], 'Deployments' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfDeployment', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'DomainName' => ['type' => 'structure', 'members' => ['ApiMappingSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiMappingSelectionExpression'], 'DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['DomainName']], 'DomainNameConfiguration' => ['type' => 'structure', 'members' => ['ApiGatewayDomainName' => ['shape' => '__string', 'locationName' => 'apiGatewayDomainName'], 'CertificateArn' => ['shape' => 'Arn', 'locationName' => 'certificateArn'], 'CertificateName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'certificateName'], 'CertificateUploadDate' => ['shape' => '__timestampIso8601', 'locationName' => 'certificateUploadDate'], 'DomainNameStatus' => ['shape' => 'DomainNameStatus', 'locationName' => 'domainNameStatus'], 'DomainNameStatusMessage' => ['shape' => '__string', 'locationName' => 'domainNameStatusMessage'], 'EndpointType' => ['shape' => 'EndpointType', 'locationName' => 'endpointType'], 'HostedZoneId' => ['shape' => '__string', 'locationName' => 'hostedZoneId'], 'SecurityPolicy' => ['shape' => 'SecurityPolicy', 'locationName' => 'securityPolicy']]], 'DomainNameConfigurations' => ['type' => 'list', 'member' => ['shape' => 'DomainNameConfiguration']], 'DomainNameStatus' => ['type' => 'string', 'enum' => ['AVAILABLE', 'UPDATING']], 'DomainNames' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfDomainName', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'EndpointType' => ['type' => 'string', 'enum' => ['REGIONAL', 'EDGE']], 'GetApiMappingRequest' => ['type' => 'structure', 'members' => ['ApiMappingId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiMappingId'], 'DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName']], 'required' => ['ApiMappingId', 'DomainName']], 'GetApiMappingResponse' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingId' => ['shape' => 'Id', 'locationName' => 'apiMappingId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']]], 'GetApiMappingsRequest' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['DomainName']], 'GetApiMappingsResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfApiMapping', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetApiRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId']], 'required' => ['ApiId']], 'GetApiResponse' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']]], 'GetApisRequest' => ['type' => 'structure', 'members' => ['MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']]], 'GetApisResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfApi', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetAuthorizerRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'AuthorizerId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'authorizerId']], 'required' => ['AuthorizerId', 'ApiId']], 'GetAuthorizerResponse' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']]], 'GetAuthorizersRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetAuthorizersResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfAuthorizer', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetDeploymentRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'DeploymentId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'deploymentId']], 'required' => ['ApiId', 'DeploymentId']], 'GetDeploymentResponse' => ['type' => 'structure', 'members' => ['AutoDeployed' => ['shape' => '__boolean', 'locationName' => 'autoDeployed'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'DeploymentStatus' => ['shape' => 'DeploymentStatus', 'locationName' => 'deploymentStatus'], 'DeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'deploymentStatusMessage'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']]], 'GetDeploymentsRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetDeploymentsResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfDeployment', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetDomainNameRequest' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName']], 'required' => ['DomainName']], 'GetDomainNameResponse' => ['type' => 'structure', 'members' => ['ApiMappingSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiMappingSelectionExpression'], 'DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'GetDomainNamesRequest' => ['type' => 'structure', 'members' => ['MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']]], 'GetDomainNamesResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfDomainName', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetIntegrationRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId']], 'required' => ['ApiId', 'IntegrationId']], 'GetIntegrationResult' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationId' => ['shape' => 'Id', 'locationName' => 'integrationId'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'integrationResponseSelectionExpression'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfig', 'locationName' => 'tlsConfig']]], 'GetIntegrationResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'IntegrationResponseId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationResponseId']], 'required' => ['ApiId', 'IntegrationResponseId', 'IntegrationId']], 'GetIntegrationResponseResponse' => ['type' => 'structure', 'members' => ['ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationResponseId' => ['shape' => 'Id', 'locationName' => 'integrationResponseId'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']]], 'GetIntegrationResponsesRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['IntegrationId', 'ApiId']], 'GetIntegrationResponsesResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfIntegrationResponse', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetIntegrationsRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetIntegrationsResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfIntegration', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetModelRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ModelId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'modelId']], 'required' => ['ModelId', 'ApiId']], 'GetModelResponse' => ['type' => 'structure', 'members' => ['ContentType' => ['shape' => 'StringWithLengthBetween1And256', 'locationName' => 'contentType'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'ModelId' => ['shape' => 'Id', 'locationName' => 'modelId'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'Schema' => ['shape' => 'StringWithLengthBetween0And32K', 'locationName' => 'schema']]], 'GetModelTemplateRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ModelId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'modelId']], 'required' => ['ModelId', 'ApiId']], 'GetModelTemplateResponse' => ['type' => 'structure', 'members' => ['Value' => ['shape' => '__string', 'locationName' => 'value']]], 'GetModelsRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetModelsResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfModel', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetRouteRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId']], 'required' => ['ApiId', 'RouteId']], 'GetRouteResult' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ApiKeyRequired' => ['shape' => '__boolean', 'locationName' => 'apiKeyRequired'], 'AuthorizationScopes' => ['shape' => 'AuthorizationScopes', 'locationName' => 'authorizationScopes'], 'AuthorizationType' => ['shape' => 'AuthorizationType', 'locationName' => 'authorizationType'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'OperationName' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'operationName'], 'RequestModels' => ['shape' => 'RouteModels', 'locationName' => 'requestModels'], 'RequestParameters' => ['shape' => 'RouteParameters', 'locationName' => 'requestParameters'], 'RouteId' => ['shape' => 'Id', 'locationName' => 'routeId'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeResponseSelectionExpression'], 'Target' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'target']]], 'GetRouteResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId'], 'RouteResponseId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeResponseId']], 'required' => ['RouteResponseId', 'ApiId', 'RouteId']], 'GetRouteResponseResponse' => ['type' => 'structure', 'members' => ['ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'ResponseModels' => ['shape' => 'RouteModels', 'locationName' => 'responseModels'], 'ResponseParameters' => ['shape' => 'RouteParameters', 'locationName' => 'responseParameters'], 'RouteResponseId' => ['shape' => 'Id', 'locationName' => 'routeResponseId'], 'RouteResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeResponseKey']]], 'GetRouteResponsesRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken'], 'RouteId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'routeId']], 'required' => ['RouteId', 'ApiId']], 'GetRouteResponsesResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfRouteResponse', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetRoutesRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetRoutesResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfRoute', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetStageRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'StageName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'stageName']], 'required' => ['StageName', 'ApiId']], 'GetStageResponse' => ['type' => 'structure', 'members' => ['AccessLogSettings' => ['shape' => 'AccessLogSettings', 'locationName' => 'accessLogSettings'], 'ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'AutoDeploy' => ['shape' => '__boolean', 'locationName' => 'autoDeploy'], 'ClientCertificateId' => ['shape' => 'Id', 'locationName' => 'clientCertificateId'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DefaultRouteSettings' => ['shape' => 'RouteSettings', 'locationName' => 'defaultRouteSettings'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'LastDeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'lastDeploymentStatusMessage'], 'LastUpdatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'lastUpdatedDate'], 'RouteSettings' => ['shape' => 'RouteSettingsMap', 'locationName' => 'routeSettings'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName'], 'StageVariables' => ['shape' => 'StageVariablesMap', 'locationName' => 'stageVariables'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'GetStagesRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']], 'required' => ['ApiId']], 'GetStagesResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfStage', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'GetTagsRequest' => ['type' => 'structure', 'members' => ['ResourceArn' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'resource-arn']], 'required' => ['ResourceArn']], 'GetTagsResponse' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'GetVpcLinkRequest' => ['type' => 'structure', 'members' => ['VpcLinkId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'vpcLinkId']], 'required' => ['VpcLinkId']], 'GetVpcLinkResponse' => ['type' => 'structure', 'members' => ['CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'SecurityGroupIds' => ['shape' => 'SecurityGroupIdList', 'locationName' => 'securityGroupIds'], 'SubnetIds' => ['shape' => 'SubnetIdList', 'locationName' => 'subnetIds'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'VpcLinkId' => ['shape' => 'Id', 'locationName' => 'vpcLinkId'], 'VpcLinkStatus' => ['shape' => 'VpcLinkStatus', 'locationName' => 'vpcLinkStatus'], 'VpcLinkStatusMessage' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'vpcLinkStatusMessage'], 'VpcLinkVersion' => ['shape' => 'VpcLinkVersion', 'locationName' => 'vpcLinkVersion']]], 'GetVpcLinksRequest' => ['type' => 'structure', 'members' => ['MaxResults' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'maxResults'], 'NextToken' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'nextToken']]], 'GetVpcLinksResponse' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfVpcLink', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'Id' => ['type' => 'string'], 'IdentitySourceList' => ['type' => 'list', 'member' => ['shape' => '__string']], 'ImportApiInput' => ['type' => 'structure', 'members' => ['Body' => ['shape' => '__string', 'locationName' => 'body']], 'required' => ['Body']], 'ImportApiRequest' => ['type' => 'structure', 'members' => ['Basepath' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'basepath'], 'Body' => ['shape' => '__string', 'locationName' => 'body'], 'FailOnWarnings' => ['shape' => '__boolean', 'location' => 'querystring', 'locationName' => 'failOnWarnings']], 'required' => ['Body']], 'ImportApiResponse' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']]], 'IntegerWithLengthBetween0And3600' => ['type' => 'integer', 'min' => 0, 'max' => 3600], 'IntegerWithLengthBetween50And29000' => ['type' => 'integer', 'min' => 50, 'max' => 29000], 'IntegerWithLengthBetweenMinus1And86400' => ['type' => 'integer', 'min' => -1, 'max' => 86400], 'Integration' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationId' => ['shape' => 'Id', 'locationName' => 'integrationId'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'integrationResponseSelectionExpression'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfig', 'locationName' => 'tlsConfig']]], 'IntegrationParameters' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'StringWithLengthBetween1And512']], 'IntegrationResponse' => ['type' => 'structure', 'members' => ['ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationResponseId' => ['shape' => 'Id', 'locationName' => 'integrationResponseId'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']], 'required' => ['IntegrationResponseKey']], 'IntegrationResponses' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfIntegrationResponse', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'IntegrationType' => ['type' => 'string', 'enum' => ['AWS', 'HTTP', 'MOCK', 'HTTP_PROXY', 'AWS_PROXY']], 'Integrations' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfIntegration', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'JWTConfiguration' => ['type' => 'structure', 'members' => ['Audience' => ['shape' => '__listOf__string', 'locationName' => 'audience'], 'Issuer' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'issuer']]], 'LimitExceededException' => ['type' => 'structure', 'members' => ['LimitType' => ['shape' => '__string', 'locationName' => 'limitType'], 'Message' => ['shape' => '__string', 'locationName' => 'message']]], 'LoggingLevel' => ['type' => 'string', 'enum' => ['ERROR', 'INFO', 'OFF']], 'Model' => ['type' => 'structure', 'members' => ['ContentType' => ['shape' => 'StringWithLengthBetween1And256', 'locationName' => 'contentType'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'ModelId' => ['shape' => 'Id', 'locationName' => 'modelId'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'Schema' => ['shape' => 'StringWithLengthBetween0And32K', 'locationName' => 'schema']], 'required' => ['Name']], 'Models' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfModel', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'NextToken' => ['type' => 'string'], 'NotFoundException' => ['type' => 'structure', 'members' => ['Message' => ['shape' => '__string', 'locationName' => 'message'], 'ResourceType' => ['shape' => '__string', 'locationName' => 'resourceType']], 'exception' => \true, 'error' => ['httpStatusCode' => 404]], 'ParameterConstraints' => ['type' => 'structure', 'members' => ['Required' => ['shape' => '__boolean', 'locationName' => 'required']]], 'PassthroughBehavior' => ['type' => 'string', 'enum' => ['WHEN_NO_MATCH', 'NEVER', 'WHEN_NO_TEMPLATES']], 'ProtocolType' => ['type' => 'string', 'enum' => ['WEBSOCKET', 'HTTP']], 'ReimportApiInput' => ['type' => 'structure', 'members' => ['Body' => ['shape' => '__string', 'locationName' => 'body']], 'required' => ['Body']], 'ReimportApiRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'Basepath' => ['shape' => '__string', 'location' => 'querystring', 'locationName' => 'basepath'], 'Body' => ['shape' => '__string', 'locationName' => 'body'], 'FailOnWarnings' => ['shape' => '__boolean', 'location' => 'querystring', 'locationName' => 'failOnWarnings']], 'required' => ['ApiId', 'Body']], 'ReimportApiResponse' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']]], 'Route' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ApiKeyRequired' => ['shape' => '__boolean', 'locationName' => 'apiKeyRequired'], 'AuthorizationScopes' => ['shape' => 'AuthorizationScopes', 'locationName' => 'authorizationScopes'], 'AuthorizationType' => ['shape' => 'AuthorizationType', 'locationName' => 'authorizationType'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'OperationName' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'operationName'], 'RequestModels' => ['shape' => 'RouteModels', 'locationName' => 'requestModels'], 'RequestParameters' => ['shape' => 'RouteParameters', 'locationName' => 'requestParameters'], 'RouteId' => ['shape' => 'Id', 'locationName' => 'routeId'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeResponseSelectionExpression'], 'Target' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'target']], 'required' => ['RouteKey']], 'RouteModels' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'StringWithLengthBetween1And128']], 'RouteParameters' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'ParameterConstraints']], 'RouteResponse' => ['type' => 'structure', 'members' => ['ModelSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'modelSelectionExpression'], 'ResponseModels' => ['shape' => 'RouteModels', 'locationName' => 'responseModels'], 'ResponseParameters' => ['shape' => 'RouteParameters', 'locationName' => 'responseParameters'], 'RouteResponseId' => ['shape' => 'Id', 'locationName' => 'routeResponseId'], 'RouteResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeResponseKey']], 'required' => ['RouteResponseKey']], 'RouteResponses' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfRouteResponse', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'RouteSettings' => ['type' => 'structure', 'members' => ['DataTraceEnabled' => ['shape' => '__boolean', 'locationName' => 'dataTraceEnabled'], 'DetailedMetricsEnabled' => ['shape' => '__boolean', 'locationName' => 'detailedMetricsEnabled'], 'LoggingLevel' => ['shape' => 'LoggingLevel', 'locationName' => 'loggingLevel'], 'ThrottlingBurstLimit' => ['shape' => '__integer', 'locationName' => 'throttlingBurstLimit'], 'ThrottlingRateLimit' => ['shape' => '__double', 'locationName' => 'throttlingRateLimit']]], 'RouteSettingsMap' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'RouteSettings']], 'Routes' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfRoute', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'SecurityGroupIdList' => ['type' => 'list', 'member' => ['shape' => '__string']], 'SecurityPolicy' => ['type' => 'string', 'enum' => ['TLS_1_0', 'TLS_1_2']], 'SelectionExpression' => ['type' => 'string'], 'SelectionKey' => ['type' => 'string'], 'Stage' => ['type' => 'structure', 'members' => ['AccessLogSettings' => ['shape' => 'AccessLogSettings', 'locationName' => 'accessLogSettings'], 'ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'AutoDeploy' => ['shape' => '__boolean', 'locationName' => 'autoDeploy'], 'ClientCertificateId' => ['shape' => 'Id', 'locationName' => 'clientCertificateId'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DefaultRouteSettings' => ['shape' => 'RouteSettings', 'locationName' => 'defaultRouteSettings'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'LastDeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'lastDeploymentStatusMessage'], 'LastUpdatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'lastUpdatedDate'], 'RouteSettings' => ['shape' => 'RouteSettingsMap', 'locationName' => 'routeSettings'], 'StageName' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stageName'], 'StageVariables' => ['shape' => 'StageVariablesMap', 'locationName' => 'stageVariables'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['StageName']], 'StageVariablesMap' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'StringWithLengthBetween0And2048']], 'Stages' => ['type' => 'structure', 'members' => ['Items' => ['shape' => '__listOfStage', 'locationName' => 'items'], 'NextToken' => ['shape' => 'NextToken', 'locationName' => 'nextToken']]], 'StringWithLengthBetween0And1024' => ['type' => 'string'], 'StringWithLengthBetween0And2048' => ['type' => 'string'], 'StringWithLengthBetween0And32K' => ['type' => 'string'], 'StringWithLengthBetween1And1024' => ['type' => 'string'], 'StringWithLengthBetween1And128' => ['type' => 'string'], 'StringWithLengthBetween1And1600' => ['type' => 'string'], 'StringWithLengthBetween1And256' => ['type' => 'string'], 'StringWithLengthBetween1And512' => ['type' => 'string'], 'StringWithLengthBetween1And64' => ['type' => 'string'], 'SubnetIdList' => ['type' => 'list', 'member' => ['shape' => '__string']], 'TagResourceInput' => ['type' => 'structure', 'members' => ['Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'TagResourceRequest' => ['type' => 'structure', 'members' => ['ResourceArn' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'resource-arn'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']], 'required' => ['ResourceArn']], 'TagResourceResponse' => ['type' => 'structure', 'members' => []], 'Tags' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'StringWithLengthBetween1And1600']], 'Template' => ['type' => 'structure', 'members' => ['Value' => ['shape' => '__string', 'locationName' => 'value']]], 'TemplateMap' => ['type' => 'map', 'key' => ['shape' => '__string'], 'value' => ['shape' => 'StringWithLengthBetween0And32K']], 'TlsConfig' => ['type' => 'structure', 'members' => ['ServerNameToVerify' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'serverNameToVerify']]], 'TlsConfigInput' => ['type' => 'structure', 'members' => ['ServerNameToVerify' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'serverNameToVerify']]], 'TooManyRequestsException' => ['type' => 'structure', 'members' => ['LimitType' => ['shape' => '__string', 'locationName' => 'limitType'], 'Message' => ['shape' => '__string', 'locationName' => 'message']], 'exception' => \true, 'error' => ['httpStatusCode' => 429]], 'UntagResourceRequest' => ['type' => 'structure', 'members' => ['ResourceArn' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'resource-arn'], 'TagKeys' => ['shape' => '__listOf__string', 'location' => 'querystring', 'locationName' => 'tagKeys']], 'required' => ['ResourceArn', 'TagKeys']], 'UpdateApiInput' => ['type' => 'structure', 'members' => ['ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Target' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'target'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version']]], 'UpdateApiMappingInput' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']]], 'UpdateApiMappingRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiMappingId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']], 'required' => ['ApiMappingId', 'ApiId', 'DomainName']], 'UpdateApiMappingResponse' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiMappingId' => ['shape' => 'Id', 'locationName' => 'apiMappingId'], 'ApiMappingKey' => ['shape' => 'SelectionKey', 'locationName' => 'apiMappingKey'], 'Stage' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'stage']]], 'UpdateApiRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'RouteKey' => ['shape' => 'SelectionKey', 'locationName' => 'routeKey'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Target' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'target'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version']], 'required' => ['ApiId']], 'UpdateApiResponse' => ['type' => 'structure', 'members' => ['ApiEndpoint' => ['shape' => '__string', 'locationName' => 'apiEndpoint'], 'ApiId' => ['shape' => 'Id', 'locationName' => 'apiId'], 'ApiKeySelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiKeySelectionExpression'], 'CorsConfiguration' => ['shape' => 'Cors', 'locationName' => 'corsConfiguration'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'DisableSchemaValidation' => ['shape' => '__boolean', 'locationName' => 'disableSchemaValidation'], 'ImportInfo' => ['shape' => '__listOf__string', 'locationName' => 'importInfo'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name'], 'ProtocolType' => ['shape' => 'ProtocolType', 'locationName' => 'protocolType'], 'RouteSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'routeSelectionExpression'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags'], 'Version' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'version'], 'Warnings' => ['shape' => '__listOf__string', 'locationName' => 'warnings']]], 'UpdateAuthorizerInput' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']]], 'UpdateAuthorizerRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'authorizerId'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']], 'required' => ['AuthorizerId', 'ApiId']], 'UpdateAuthorizerResponse' => ['type' => 'structure', 'members' => ['AuthorizerCredentialsArn' => ['shape' => 'Arn', 'locationName' => 'authorizerCredentialsArn'], 'AuthorizerId' => ['shape' => 'Id', 'locationName' => 'authorizerId'], 'AuthorizerResultTtlInSeconds' => ['shape' => 'IntegerWithLengthBetween0And3600', 'locationName' => 'authorizerResultTtlInSeconds'], 'AuthorizerType' => ['shape' => 'AuthorizerType', 'locationName' => 'authorizerType'], 'AuthorizerUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'authorizerUri'], 'IdentitySource' => ['shape' => 'IdentitySourceList', 'locationName' => 'identitySource'], 'IdentityValidationExpression' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'identityValidationExpression'], 'JwtConfiguration' => ['shape' => 'JWTConfiguration', 'locationName' => 'jwtConfiguration'], 'Name' => ['shape' => 'StringWithLengthBetween1And128', 'locationName' => 'name']]], 'UpdateDeploymentInput' => ['type' => 'structure', 'members' => ['Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']]], 'UpdateDeploymentRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'DeploymentId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'deploymentId'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']], 'required' => ['ApiId', 'DeploymentId']], 'UpdateDeploymentResponse' => ['type' => 'structure', 'members' => ['AutoDeployed' => ['shape' => '__boolean', 'locationName' => 'autoDeployed'], 'CreatedDate' => ['shape' => '__timestampIso8601', 'locationName' => 'createdDate'], 'DeploymentId' => ['shape' => 'Id', 'locationName' => 'deploymentId'], 'DeploymentStatus' => ['shape' => 'DeploymentStatus', 'locationName' => 'deploymentStatus'], 'DeploymentStatusMessage' => ['shape' => '__string', 'locationName' => 'deploymentStatusMessage'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description']]], 'UpdateDomainNameInput' => ['type' => 'structure', 'members' => ['DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations']]], 'UpdateDomainNameRequest' => ['type' => 'structure', 'members' => ['DomainName' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations']], 'required' => ['DomainName']], 'UpdateDomainNameResponse' => ['type' => 'structure', 'members' => ['ApiMappingSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'apiMappingSelectionExpression'], 'DomainName' => ['shape' => 'StringWithLengthBetween1And512', 'locationName' => 'domainName'], 'DomainNameConfigurations' => ['shape' => 'DomainNameConfigurations', 'locationName' => 'domainNameConfigurations'], 'Tags' => ['shape' => 'Tags', 'locationName' => 'tags']]], 'UpdateIntegrationInput' => ['type' => 'structure', 'members' => ['ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfigInput', 'locationName' => 'tlsConfig']]], 'UpdateIntegrationRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfigInput', 'locationName' => 'tlsConfig']], 'required' => ['ApiId', 'IntegrationId']], 'UpdateIntegrationResult' => ['type' => 'structure', 'members' => ['ApiGatewayManaged' => ['shape' => '__boolean', 'locationName' => 'apiGatewayManaged'], 'ConnectionId' => ['shape' => 'StringWithLengthBetween1And1024', 'locationName' => 'connectionId'], 'ConnectionType' => ['shape' => 'ConnectionType', 'locationName' => 'connectionType'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'CredentialsArn' => ['shape' => 'Arn', 'locationName' => 'credentialsArn'], 'Description' => ['shape' => 'StringWithLengthBetween0And1024', 'locationName' => 'description'], 'IntegrationId' => ['shape' => 'Id', 'locationName' => 'integrationId'], 'IntegrationMethod' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'integrationMethod'], 'IntegrationResponseSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'integrationResponseSelectionExpression'], 'IntegrationType' => ['shape' => 'IntegrationType', 'locationName' => 'integrationType'], 'IntegrationUri' => ['shape' => 'UriWithLengthBetween1And2048', 'locationName' => 'integrationUri'], 'PassthroughBehavior' => ['shape' => 'PassthroughBehavior', 'locationName' => 'passthroughBehavior'], 'PayloadFormatVersion' => ['shape' => 'StringWithLengthBetween1And64', 'locationName' => 'payloadFormatVersion'], 'RequestParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'requestParameters'], 'RequestTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'requestTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression'], 'TimeoutInMillis' => ['shape' => 'IntegerWithLengthBetween50And29000', 'locationName' => 'timeoutInMillis'], 'TlsConfig' => ['shape' => 'TlsConfig', 'locationName' => 'tlsConfig']]], 'UpdateIntegrationResponseInput' => ['type' => 'structure', 'members' => ['ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']]], 'UpdateIntegrationResponseRequest' => ['type' => 'structure', 'members' => ['ApiId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'apiId'], 'ContentHandlingStrategy' => ['shape' => 'ContentHandlingStrategy', 'locationName' => 'contentHandlingStrategy'], 'IntegrationId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationId'], 'IntegrationResponseId' => ['shape' => '__string', 'location' => 'uri', 'locationName' => 'integrationResponseId'], 'IntegrationResponseKey' => ['shape' => 'SelectionKey', 'locationName' => 'integrationResponseKey'], 'ResponseParameters' => ['shape' => 'IntegrationParameters', 'locationName' => 'responseParameters'], 'ResponseTemplates' => ['shape' => 'TemplateMap', 'locationName' => 'responseTemplates'], 'TemplateSelectionExpression' => ['shape' => 'SelectionExpression', 'locationName' => 'templateSelectionExpression']]
|
1 |
<?php
|
2 |
|
3 |
// This file was auto-generated from sdk-root/src/data/apigatewayv2/2018-11-29/api-2.json
|
|